mirror of
https://github.com/zoriya/octokit.net.git
synced 2025-12-20 06:05:12 +00:00
Add unit and integration tests for ObservableUserGpgKeysClient
This commit is contained in:
@@ -10,7 +10,6 @@ namespace Octokit.Tests.Integration.Clients
|
|||||||
{
|
{
|
||||||
public class UserGpgKeysClientTests
|
public class UserGpgKeysClientTests
|
||||||
{
|
{
|
||||||
// Create a key
|
|
||||||
readonly string knownKeyId = "E88402D2E127A23A";
|
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 knownPublicKey = "xsBNBFdTvCUBCADOaVtPoJTQOgMIVYEpI8uT60LA/kDqw/1OKn7ftKjAtxNVSgjQi/ZqZp8XKjTg2u6l4c/aPjER2BGTg90xCcbmpwq/kkQuHR4DK7dOlEOoTzDDESEFv6XXlXGCnxN8AD8YNvSO+Sy4+35ihuKUBAHDxmOl7ZAMH0STo10KuW82/DhfT3cCJNqmID7H+CW1H6IhwutPKt8XsVq2FQg2RMx+uX1KqkuBAd7b30KJ93SJqzgq5CC3DticaC0/WdZnxmYD01UvMAS6o/REs+SICdsyTxgBx/X8SIXuX2TD9PG/O2785JI5/xvBd4jU6bBH/4oWoHr3e/lyNqb1+GSeTFX3ABEBAAE=";
|
||||||
|
|
||||||
|
|||||||
@@ -52,5 +52,33 @@ namespace Octokit.Tests.Integration.Helpers
|
|||||||
|
|
||||||
return new PublicKeyContext(client.Connection, key);
|
return new PublicKeyContext(client.Connection, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static async Task<GpgKeyContext> CreateGpgKeyContext(this IObservableGitHubClient 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -168,6 +168,7 @@
|
|||||||
<Compile Include="Reactive\ObservableUserAdministrationClientTests.cs" />
|
<Compile Include="Reactive\ObservableUserAdministrationClientTests.cs" />
|
||||||
<Compile Include="Reactive\ObservableUserEmailsClientTests.cs" />
|
<Compile Include="Reactive\ObservableUserEmailsClientTests.cs" />
|
||||||
<Compile Include="Reactive\ObservableTeamsClientTests.cs" />
|
<Compile Include="Reactive\ObservableTeamsClientTests.cs" />
|
||||||
|
<Compile Include="Reactive\ObservableUserGpgKeysClientTests.cs" />
|
||||||
<Compile Include="Reactive\ObservableUserKeysClientTests.cs" />
|
<Compile Include="Reactive\ObservableUserKeysClientTests.cs" />
|
||||||
<Compile Include="Reactive\ObservableRepositoryCollaboratorClientTests.cs" />
|
<Compile Include="Reactive\ObservableRepositoryCollaboratorClientTests.cs" />
|
||||||
<Compile Include="RedirectTests.cs" />
|
<Compile Include="RedirectTests.cs" />
|
||||||
|
|||||||
@@ -0,0 +1,95 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reactive.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Octokit.Reactive;
|
||||||
|
using Octokit.Tests.Integration.Helpers;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace Octokit.Tests.Integration.Reactive
|
||||||
|
{
|
||||||
|
public class ObservableUserGpgKeysClientTests
|
||||||
|
{
|
||||||
|
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 IObservableGitHubClient _gitHubClient;
|
||||||
|
|
||||||
|
public ObservableUserGpgKeysClientTests()
|
||||||
|
{
|
||||||
|
_gitHubClient = new ObservableGitHubClient(Helper.GetBasicAuthClient());
|
||||||
|
}
|
||||||
|
|
||||||
|
[IntegrationTest]
|
||||||
|
public async Task CanGetAllForCurrentUser()
|
||||||
|
{
|
||||||
|
using (var context = _gitHubClient.CreateGpgKeyContext())
|
||||||
|
{
|
||||||
|
var observable = _gitHubClient.User.GpgKeys.GetAllForCurrent();
|
||||||
|
var keys = await observable.ToList();
|
||||||
|
|
||||||
|
Assert.NotEmpty(keys);
|
||||||
|
|
||||||
|
var first = keys[0];
|
||||||
|
Assert.NotNull(first.Id);
|
||||||
|
Assert.Null(first.PrimaryKeyId);
|
||||||
|
Assert.NotNull(first.KeyId);
|
||||||
|
Assert.NotNull(first.PublicKey);
|
||||||
|
Assert.Empty(first.Subkeys);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[IntegrationTest]
|
||||||
|
public async Task CanGetKeyById()
|
||||||
|
{
|
||||||
|
using (var context = await _gitHubClient.CreateGpgKeyContext())
|
||||||
|
{
|
||||||
|
var observable = _gitHubClient.User.GpgKeys.Get(context.GpgKeyId);
|
||||||
|
var key = await observable;
|
||||||
|
|
||||||
|
Assert.Equal(knownKeyId, key.KeyId);
|
||||||
|
Assert.Equal(knownPublicKey, key.PublicKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[IntegrationTest]
|
||||||
|
public async Task CanCreateAndDeleteKey()
|
||||||
|
{
|
||||||
|
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-----
|
||||||
|
";
|
||||||
|
// Create a key
|
||||||
|
var observable = _gitHubClient.User.GpgKeys.Create(new NewGpgKey(publicKey));
|
||||||
|
var key = await observable;
|
||||||
|
|
||||||
|
Assert.NotNull(key);
|
||||||
|
Assert.Equal(knownKeyId, key.KeyId);
|
||||||
|
Assert.Equal(knownPublicKey, key.PublicKey);
|
||||||
|
|
||||||
|
// Delete the key
|
||||||
|
await _gitHubClient.User.GpgKeys.Delete(key.Id);
|
||||||
|
|
||||||
|
// Verify key no longer exists
|
||||||
|
var keys = await _gitHubClient.User.GpgKeys.GetAllForCurrent().ToList();
|
||||||
|
Assert.False(keys.Any(k => k.KeyId == knownKeyId && k.PublicKey == knownPublicKey));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -238,6 +238,7 @@
|
|||||||
<Compile Include="Reactive\ObservableTeamsClientTests.cs" />
|
<Compile Include="Reactive\ObservableTeamsClientTests.cs" />
|
||||||
<Compile Include="Reactive\ObservableTreesClientTests.cs" />
|
<Compile Include="Reactive\ObservableTreesClientTests.cs" />
|
||||||
<Compile Include="Reactive\ObservableFollowersTest.cs" />
|
<Compile Include="Reactive\ObservableFollowersTest.cs" />
|
||||||
|
<Compile Include="Reactive\ObservableUserGpgKeysClientTests.cs" />
|
||||||
<Compile Include="Reactive\ObservableUserKeysClientTests.cs" />
|
<Compile Include="Reactive\ObservableUserKeysClientTests.cs" />
|
||||||
<Compile Include="Reactive\ObservableUserAdministrationClientTests.cs" />
|
<Compile Include="Reactive\ObservableUserAdministrationClientTests.cs" />
|
||||||
<Compile Include="Reactive\Enterprise\ObservableEnterpriseAdminStatsClientTests.cs" />
|
<Compile Include="Reactive\Enterprise\ObservableEnterpriseAdminStatsClientTests.cs" />
|
||||||
|
|||||||
79
Octokit.Tests/Reactive/ObservableUserGpgKeysClientTests.cs
Normal file
79
Octokit.Tests/Reactive/ObservableUserGpgKeysClientTests.cs
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using NSubstitute;
|
||||||
|
using Octokit.Reactive;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace Octokit.Tests.Reactive
|
||||||
|
{
|
||||||
|
public class ObservableUserGpgKeysClientTests
|
||||||
|
{
|
||||||
|
public class TheGetAllForCurrentMethod
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void CallsIntoClient()
|
||||||
|
{
|
||||||
|
var githubClient = Substitute.For<IGitHubClient>();
|
||||||
|
var client = new ObservableUserGpgKeysClient(githubClient);
|
||||||
|
|
||||||
|
client.GetAllForCurrent();
|
||||||
|
|
||||||
|
githubClient.User.GpgKeys.Received().GetAllForCurrent(Arg.Any<ApiOptions>());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TheGetMethod
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void CallsIntoClient()
|
||||||
|
{
|
||||||
|
var githubClient = Substitute.For<IGitHubClient>();
|
||||||
|
var client = new ObservableUserGpgKeysClient(githubClient);
|
||||||
|
|
||||||
|
client.Get(1);
|
||||||
|
|
||||||
|
githubClient.User.GpgKeys.Received().Get(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TheCreateMethod
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void CallsIntoClient()
|
||||||
|
{
|
||||||
|
var githubClient = Substitute.For<IGitHubClient>();
|
||||||
|
var client = new ObservableUserGpgKeysClient(githubClient);
|
||||||
|
|
||||||
|
client.Create(new NewGpgKey("ABCDEFG"));
|
||||||
|
|
||||||
|
githubClient.User.GpgKeys.Received().Create(Arg.Is<NewGpgKey>(k => k.ArmoredPublicKey == "ABCDEFG"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TheDeleteMethod
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void CallsIntoClient()
|
||||||
|
{
|
||||||
|
var githubClient = Substitute.For<IGitHubClient>();
|
||||||
|
var client = new ObservableUserGpgKeysClient(githubClient);
|
||||||
|
|
||||||
|
client.Delete(1);
|
||||||
|
|
||||||
|
githubClient.User.GpgKeys.Received().Delete(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TheCtor
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void EnsuresNonNullArguments()
|
||||||
|
{
|
||||||
|
Assert.Throws<ArgumentNullException>(() => new ObservableUserGpgKeysClient(null));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user