mirror of
https://github.com/zoriya/octokit.net.git
synced 2026-06-08 04:40:54 +00:00
Add integration tests for UserGpgKeysClient
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Octokit.Tests.Integration.Helpers;
|
||||
using Xunit;
|
||||
|
||||
namespace Octokit.Tests.Integration.Clients
|
||||
{
|
||||
public class UserGpgKeysClientTests
|
||||
{
|
||||
// Create a key
|
||||
readonly string knownKeyId = "E88402D2E127A23A";
|
||||
readonly string knownPublicKey = "xsBNBFdTvCUBCADOaVtPoJTQOgMIVYEpI8uT60LA/kDqw/1OKn7ftKjAtxNVSgjQi/ZqZp8XKjTg2u6l4c/aPjER2BGTg90xCcbmpwq/kkQuHR4DK7dOlEOoTzDDESEFv6XXlXGCnxN8AD8YNvSO+Sy4+35ihuKUBAHDxmOl7ZAMH0STo10KuW82/DhfT3cCJNqmID7H+CW1H6IhwutPKt8XsVq2FQg2RMx+uX1KqkuBAd7b30KJ93SJqzgq5CC3DticaC0/WdZnxmYD01UvMAS6o/REs+SICdsyTxgBx/X8SIXuX2TD9PG/O2785JI5/xvBd4jU6bBH/4oWoHr3e/lyNqb1+GSeTFX3ABEBAAE=";
|
||||
|
||||
readonly string publicKey = @"
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: BCPG C# v1.6.1.0
|
||||
|
||||
mQENBFdTvCUBCADOaVtPoJTQOgMIVYEpI8uT60LA/kDqw/1OKn7ftKjAtxNVSgjQ
|
||||
i/ZqZp8XKjTg2u6l4c/aPjER2BGTg90xCcbmpwq/kkQuHR4DK7dOlEOoTzDDESEF
|
||||
v6XXlXGCnxN8AD8YNvSO+Sy4+35ihuKUBAHDxmOl7ZAMH0STo10KuW82/DhfT3cC
|
||||
JNqmID7H+CW1H6IhwutPKt8XsVq2FQg2RMx+uX1KqkuBAd7b30KJ93SJqzgq5CC3
|
||||
DticaC0/WdZnxmYD01UvMAS6o/REs+SICdsyTxgBx/X8SIXuX2TD9PG/O2785JI5
|
||||
/xvBd4jU6bBH/4oWoHr3e/lyNqb1+GSeTFX3ABEBAAG0AIkBHAQQAQIABgUCV1O8
|
||||
JQAKCRDohALS4SeiOs/QB/9PMeFNdPkB1xfBm3qvTErqvhTcQspPibucYefG6JHL
|
||||
vhm6iCOVBeCuPS4P/T8RTzb0qJaTdZZWcwZ9UjRVqF/RKwdMJTBKBHRegc5hRjLH
|
||||
Koxk0zXosk+CapIR6eVhHe4IzpVVxZOvunsFOclIh+qHx9UzJhz9wSO/XBn/6Rzr
|
||||
DGzE9fpK1JRKC0I3PuiDCNuZvojXeUsT/zuHYsz00wnA2Em7CmcWWng3nPUSHvBB
|
||||
GUJ7YE7NvYXqT09PdhoZnf9p1wOugiuG6CLzWf8stlNV3mZptpP+sCGcz/UVffRO
|
||||
VO/+BCBsaoT4g1FFOmJhbBAD3G72yslBnUJmqKP/39pi
|
||||
=O7Yi
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
";
|
||||
|
||||
[IntegrationTest]
|
||||
public async Task CanGetAllForCurrentUser()
|
||||
{
|
||||
var github = Helper.GetBasicAuthClient();
|
||||
|
||||
using (var context = await github.CreateGpgKeyContext())
|
||||
{
|
||||
var keys = await github.User.GpgKeys.GetAllForCurrent();
|
||||
Assert.NotEmpty(keys);
|
||||
|
||||
var first = keys[0];
|
||||
Assert.NotNull(first.Id);
|
||||
Assert.NotNull(first.KeyId);
|
||||
Assert.NotNull(first.PublicKey);
|
||||
Assert.Null(first.PrimaryKeyId);
|
||||
Assert.Empty(first.Subkeys);
|
||||
}
|
||||
}
|
||||
|
||||
[IntegrationTest]
|
||||
public async Task CanGetKeyById()
|
||||
{
|
||||
var github = Helper.GetBasicAuthClient();
|
||||
using (var context = await github.CreateGpgKeyContext())
|
||||
{
|
||||
var key = await github.User.GpgKeys.Get(context.GpgKeyId);
|
||||
|
||||
Assert.Equal(context.GpgKeyId, key.Id);
|
||||
Assert.Equal(context.KeyId, key.KeyId);
|
||||
Assert.Equal(context.PublicKeyData, key.PublicKey);
|
||||
}
|
||||
}
|
||||
|
||||
[IntegrationTest]
|
||||
public async Task CanCreateAndDeleteKey()
|
||||
{
|
||||
var github = Helper.GetBasicAuthClient();
|
||||
|
||||
var key = await github.User.GpgKeys.Create(new NewGpgKey(publicKey));
|
||||
Assert.NotNull(key);
|
||||
Assert.Equal(knownPublicKey, key.PublicKey);
|
||||
Assert.Equal(knownKeyId, key.KeyId);
|
||||
|
||||
// Delete the key
|
||||
await github.User.GpgKeys.Delete(key.Id);
|
||||
|
||||
// Verify key no longer exists
|
||||
var keys = await github.User.GpgKeys.GetAllForCurrent();
|
||||
Assert.False(keys.Any(k => k.KeyId == knownKeyId && k.PublicKey == knownPublicKey));
|
||||
}
|
||||
|
||||
[IntegrationTest]
|
||||
public async Task CanNotCreateSameKeyTwice()
|
||||
{
|
||||
var github = Helper.GetBasicAuthClient();
|
||||
|
||||
var key = await github.User.GpgKeys.Create(new NewGpgKey(publicKey));
|
||||
Assert.NotNull(key);
|
||||
|
||||
Assert.ThrowsAsync<ApiValidationException>(async () => await github.User.GpgKeys.Create(new NewGpgKey(publicKey)));
|
||||
|
||||
await github.User.GpgKeys.Delete(key.Id);
|
||||
var keys = await github.User.GpgKeys.GetAllForCurrent();
|
||||
Assert.False(keys.Any(k => k.KeyId == knownKeyId && k.PublicKey == knownPublicKey));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -50,5 +50,33 @@ namespace Octokit.Tests.Integration.Helpers
|
||||
|
||||
return new PublicKeyContext(client.Connection, key);
|
||||
}
|
||||
|
||||
internal static async Task<GpgKeyContext> CreateGpgKeyContext(this IGitHubClient client)
|
||||
{
|
||||
// Create a key
|
||||
string publicKey = @"
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: BCPG C# v1.6.1.0
|
||||
|
||||
mQENBFdTvCUBCADOaVtPoJTQOgMIVYEpI8uT60LA/kDqw/1OKn7ftKjAtxNVSgjQ
|
||||
i/ZqZp8XKjTg2u6l4c/aPjER2BGTg90xCcbmpwq/kkQuHR4DK7dOlEOoTzDDESEF
|
||||
v6XXlXGCnxN8AD8YNvSO+Sy4+35ihuKUBAHDxmOl7ZAMH0STo10KuW82/DhfT3cC
|
||||
JNqmID7H+CW1H6IhwutPKt8XsVq2FQg2RMx+uX1KqkuBAd7b30KJ93SJqzgq5CC3
|
||||
DticaC0/WdZnxmYD01UvMAS6o/REs+SICdsyTxgBx/X8SIXuX2TD9PG/O2785JI5
|
||||
/xvBd4jU6bBH/4oWoHr3e/lyNqb1+GSeTFX3ABEBAAG0AIkBHAQQAQIABgUCV1O8
|
||||
JQAKCRDohALS4SeiOs/QB/9PMeFNdPkB1xfBm3qvTErqvhTcQspPibucYefG6JHL
|
||||
vhm6iCOVBeCuPS4P/T8RTzb0qJaTdZZWcwZ9UjRVqF/RKwdMJTBKBHRegc5hRjLH
|
||||
Koxk0zXosk+CapIR6eVhHe4IzpVVxZOvunsFOclIh+qHx9UzJhz9wSO/XBn/6Rzr
|
||||
DGzE9fpK1JRKC0I3PuiDCNuZvojXeUsT/zuHYsz00wnA2Em7CmcWWng3nPUSHvBB
|
||||
GUJ7YE7NvYXqT09PdhoZnf9p1wOugiuG6CLzWf8stlNV3mZptpP+sCGcz/UVffRO
|
||||
VO/+BCBsaoT4g1FFOmJhbBAD3G72yslBnUJmqKP/39pi
|
||||
=O7Yi
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
";
|
||||
|
||||
var key = await client.User.GpgKeys.Create(new NewGpgKey(publicKey));
|
||||
|
||||
return new GpgKeyContext(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Octokit.Tests.Integration.Helpers
|
||||
{
|
||||
public class GpgKeyContext : IDisposable
|
||||
{
|
||||
internal GpgKeyContext(GpgKey key)
|
||||
{
|
||||
Key = key;
|
||||
GpgKeyId = key.Id;
|
||||
KeyId = key.KeyId;
|
||||
PublicKeyData = key.PublicKey;
|
||||
}
|
||||
|
||||
|
||||
internal int GpgKeyId { get; set; }
|
||||
internal string KeyId { get; set; }
|
||||
internal string PublicKeyData { get; set; }
|
||||
|
||||
internal GpgKey Key { get; set; }
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (Key != null)
|
||||
{
|
||||
var api = Helper.GetBasicAuthClient();
|
||||
try
|
||||
{
|
||||
api.User.GpgKeys.Delete(Key.Id).Wait(TimeSpan.FromSeconds(15));
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -112,12 +112,14 @@
|
||||
<Compile Include="Clients\UserAdministrationClientTests.cs" />
|
||||
<Compile Include="Clients\UserEmailsClientTests.cs" />
|
||||
<Compile Include="Clients\FollowersClientTests.cs" />
|
||||
<Compile Include="Clients\UserGpgKeysClientTests.cs" />
|
||||
<Compile Include="Clients\UserKeysClientTests.cs" />
|
||||
<Compile Include="Clients\WatchedClientTests.cs" />
|
||||
<Compile Include="fixtures\RepositoriesHooksCollection.cs" />
|
||||
<Compile Include="fixtures\RepositoriesHooksFixture.cs" />
|
||||
<Compile Include="EnterpriseHelper.cs" />
|
||||
<Compile Include="Helpers\ApplicationTestAttribute.cs" />
|
||||
<Compile Include="Helpers\GpgKeyContext.cs" />
|
||||
<Compile Include="Helpers\PublicKeyContext.cs" />
|
||||
<Compile Include="Helpers\EnterpriseUserContext.cs" />
|
||||
<Compile Include="Helpers\GithubClientExtensions.cs" />
|
||||
|
||||
@@ -86,7 +86,7 @@ namespace Octokit
|
||||
/// <returns></returns>
|
||||
public Task Delete(int id)
|
||||
{
|
||||
return ApiConnection.Delete(ApiUrls.GpgKeys(id), null, AcceptHeaders.GpgKeysPreview);
|
||||
return ApiConnection.Delete(ApiUrls.GpgKeys(id), new object(), AcceptHeaders.GpgKeysPreview);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user