mirror of
https://github.com/zoriya/octokit.net.git
synced 2025-12-05 23:06:10 +00:00
240 lines
9.7 KiB
C#
240 lines
9.7 KiB
C#
using System.Threading.Tasks;
|
|
using Xunit;
|
|
|
|
namespace Octokit.Tests.Integration.Clients
|
|
{
|
|
public class AuthorizationClientTests
|
|
{
|
|
[BasicAuthenticationTest]
|
|
public async Task CanCreatePersonalToken()
|
|
{
|
|
var github = Helper.GetBasicAuthClient();
|
|
var note = Helper.MakeNameWithTimestamp("Testing authentication");
|
|
var newAuthorization = new NewAuthorization(
|
|
note,
|
|
new[] { "user" });
|
|
|
|
var created = await github.Authorization.Create(newAuthorization);
|
|
|
|
Assert.False(string.IsNullOrWhiteSpace(created.Token));
|
|
Assert.False(string.IsNullOrWhiteSpace(created.TokenLastEight));
|
|
Assert.False(string.IsNullOrWhiteSpace(created.HashedToken));
|
|
|
|
var get = await github.Authorization.Get(created.Id);
|
|
|
|
Assert.Equal(created.Id, get.Id);
|
|
Assert.Equal(created.Note, get.Note);
|
|
}
|
|
|
|
[IntegrationTest]
|
|
public async Task CanGetAuthorization()
|
|
{
|
|
var github = Helper.GetBasicAuthClient();
|
|
|
|
var authorizations = await github.Authorization.GetAll();
|
|
Assert.NotEmpty(authorizations);
|
|
}
|
|
|
|
[IntegrationTest]
|
|
public async Task CanGetAuthorizationWithApiOptions()
|
|
{
|
|
var github = Helper.GetBasicAuthClient();
|
|
|
|
var authorizations = await github.Authorization.GetAll(ApiOptions.None);
|
|
Assert.NotEmpty(authorizations);
|
|
}
|
|
|
|
[IntegrationTest]
|
|
public async Task ReturnsNotEmptyAuthorizationsWithoutStart()
|
|
{
|
|
var github = Helper.GetBasicAuthClient();
|
|
|
|
var options = new ApiOptions
|
|
{
|
|
PageSize = 5,
|
|
PageCount = 1
|
|
};
|
|
|
|
var authorizations = await github.Authorization.GetAll(options);
|
|
Assert.NotEmpty(authorizations);
|
|
}
|
|
|
|
[IntegrationTest]
|
|
public async Task CannotCreatePersonalTokenWhenUsingOauthTokenCredentials()
|
|
{
|
|
var github = Helper.GetAuthenticatedClient();
|
|
var note = Helper.MakeNameWithTimestamp("Testing authentication");
|
|
var newAuthorization = new NewAuthorization(
|
|
note,
|
|
new[] { "user" });
|
|
|
|
var error = await Assert.ThrowsAsync<ForbiddenException>(() => github.Authorization.Create(newAuthorization));
|
|
Assert.Contains("username and password Basic Auth", error.Message);
|
|
}
|
|
|
|
[BasicAuthenticationTest(Skip = "See https://github.com/octokit/octokit.net/issues/1000 for issue to investigate this further")]
|
|
public async Task CanCreateAndGetAuthorizationWithoutFingerPrint()
|
|
{
|
|
var github = Helper.GetBasicAuthClient();
|
|
var note = Helper.MakeNameWithTimestamp("Testing authentication");
|
|
var newAuthorization = new NewAuthorization(
|
|
note,
|
|
new[] { "user" });
|
|
|
|
// the first call will create the authorization
|
|
var created = await github.Authorization.GetOrCreateApplicationAuthentication(
|
|
Helper.ClientId,
|
|
Helper.ClientSecret,
|
|
newAuthorization);
|
|
|
|
Assert.False(string.IsNullOrWhiteSpace(created.Token));
|
|
Assert.False(string.IsNullOrWhiteSpace(created.TokenLastEight));
|
|
Assert.False(string.IsNullOrWhiteSpace(created.HashedToken));
|
|
|
|
// we can then query it through the regular API
|
|
var get = await github.Authorization.Get(created.Id);
|
|
|
|
Assert.Equal(created.Id, get.Id);
|
|
Assert.Equal(created.Note, get.Note);
|
|
|
|
// but the second time we call this API we get
|
|
// a different set of data
|
|
var getExisting = await github.Authorization.GetOrCreateApplicationAuthentication(
|
|
Helper.ClientId,
|
|
Helper.ClientSecret,
|
|
newAuthorization);
|
|
|
|
Assert.Equal(created.Id, getExisting.Id);
|
|
|
|
// the token is no longer returned for subsequent calls
|
|
Assert.True(string.IsNullOrWhiteSpace(getExisting.Token));
|
|
// however the hashed and last 8 characters are available
|
|
Assert.False(string.IsNullOrWhiteSpace(getExisting.TokenLastEight));
|
|
Assert.False(string.IsNullOrWhiteSpace(getExisting.HashedToken));
|
|
|
|
await github.Authorization.Delete(created.Id);
|
|
}
|
|
|
|
[BasicAuthenticationTest]
|
|
public async Task CanCreateAndGetAuthorizationByFingerprint()
|
|
{
|
|
var github = Helper.GetBasicAuthClient();
|
|
var fingerprint = Helper.MakeNameWithTimestamp("authorization-testing");
|
|
var note = Helper.MakeNameWithTimestamp("Testing authentication");
|
|
var newAuthorization = new NewAuthorization(
|
|
note,
|
|
new[] { "user" },
|
|
fingerprint);
|
|
|
|
var created = await github.Authorization.GetOrCreateApplicationAuthentication(
|
|
Helper.ClientId,
|
|
Helper.ClientSecret,
|
|
newAuthorization);
|
|
|
|
Assert.NotNull(created);
|
|
Assert.False(string.IsNullOrWhiteSpace(created.Token));
|
|
|
|
// we can then query it through the regular API
|
|
var get = await github.Authorization.Get(created.Id);
|
|
|
|
Assert.Equal(created.Id, get.Id);
|
|
Assert.Equal(created.Note, get.Note);
|
|
|
|
// but the second time we call this API we get
|
|
// a different set of data
|
|
var getExisting = await github.Authorization.GetOrCreateApplicationAuthentication(
|
|
Helper.ClientId,
|
|
Helper.ClientSecret,
|
|
newAuthorization);
|
|
|
|
Assert.Equal(created.Id, getExisting.Id);
|
|
|
|
// NOTE: the new API will no longer return the full
|
|
// token as soon as you specify a Fingerprint
|
|
Assert.True(string.IsNullOrWhiteSpace(getExisting.Token));
|
|
|
|
// NOTE: however you will get these two new properties
|
|
// to help identify the authorization at hand
|
|
Assert.False(string.IsNullOrWhiteSpace(getExisting.TokenLastEight));
|
|
Assert.False(string.IsNullOrWhiteSpace(getExisting.HashedToken));
|
|
|
|
await github.Authorization.Delete(created.Id);
|
|
}
|
|
|
|
[BasicAuthenticationTest]
|
|
public async Task CanCheckApplicationAuthentication()
|
|
{
|
|
var github = Helper.GetBasicAuthClient();
|
|
var fingerprint = Helper.MakeNameWithTimestamp("authorization-testing");
|
|
var note = Helper.MakeNameWithTimestamp("Testing authentication");
|
|
var newAuthorization = new NewAuthorization(
|
|
note,
|
|
new[] { "user" },
|
|
fingerprint);
|
|
|
|
var created = await github.Authorization.GetOrCreateApplicationAuthentication(
|
|
Helper.ClientId,
|
|
Helper.ClientSecret,
|
|
newAuthorization);
|
|
|
|
var applicationClient = Helper.GetAuthenticatedApplicationClient();
|
|
var applicationAuthorization = await applicationClient.Authorization.CheckApplicationAuthentication(Helper.ClientId, created.Token);
|
|
|
|
Assert.NotNull(applicationAuthorization);
|
|
Assert.Equal(created.Token, applicationAuthorization.Token);
|
|
|
|
await github.Authorization.Delete(created.Id);
|
|
await Assert.ThrowsAsync<NotFoundException>(() => github.Authorization.Get(created.Id));
|
|
}
|
|
|
|
[BasicAuthenticationTest]
|
|
public async Task CanResetApplicationAuthentication()
|
|
{
|
|
var github = Helper.GetBasicAuthClient();
|
|
var fingerprint = Helper.MakeNameWithTimestamp("authorization-testing");
|
|
var note = Helper.MakeNameWithTimestamp("Testing authentication");
|
|
var newAuthorization = new NewAuthorization(
|
|
note,
|
|
new[] { "user" },
|
|
fingerprint);
|
|
|
|
var created = await github.Authorization.GetOrCreateApplicationAuthentication(
|
|
Helper.ClientId,
|
|
Helper.ClientSecret,
|
|
newAuthorization);
|
|
|
|
var applicationClient = Helper.GetAuthenticatedApplicationClient();
|
|
var applicationAuthorization = await applicationClient.Authorization.ResetApplicationAuthentication(Helper.ClientId, created.Token);
|
|
|
|
Assert.NotNull(applicationAuthorization);
|
|
Assert.NotEqual(created.Token, applicationAuthorization.Token);
|
|
|
|
await github.Authorization.Delete(created.Id);
|
|
await Assert.ThrowsAsync<NotFoundException>(() => github.Authorization.Get(created.Id));
|
|
}
|
|
|
|
[BasicAuthenticationTest]
|
|
public async Task CanRevokeApplicationAuthentication()
|
|
{
|
|
var github = Helper.GetBasicAuthClient();
|
|
var fingerprint = Helper.MakeNameWithTimestamp("authorization-testing");
|
|
var note = Helper.MakeNameWithTimestamp("Testing authentication");
|
|
var newAuthorization = new NewAuthorization(
|
|
note,
|
|
new[] { "user" },
|
|
fingerprint);
|
|
|
|
var created = await github.Authorization.GetOrCreateApplicationAuthentication(
|
|
Helper.ClientId,
|
|
Helper.ClientSecret,
|
|
newAuthorization);
|
|
|
|
var applicationClient = Helper.GetAuthenticatedApplicationClient();
|
|
await applicationClient.Authorization.RevokeApplicationAuthentication(Helper.ClientId, created.Token);
|
|
|
|
await Assert.ThrowsAsync<NotFoundException>(() => applicationClient.Authorization.CheckApplicationAuthentication(Helper.ClientId, created.Token));
|
|
await Assert.ThrowsAsync<NotFoundException>(() => github.Authorization.Get(created.Id));
|
|
}
|
|
}
|
|
}
|