public async Task <OrganizationApiKey> GetOrganizationApiKeyAsync(Guid organizationId, OrganizationApiKeyType organizationApiKeyType) { if (!Enum.IsDefined(organizationApiKeyType)) { throw new ArgumentOutOfRangeException(nameof(organizationApiKeyType), $"Invalid value for enum {nameof(OrganizationApiKeyType)}"); } var apiKeys = await _organizationApiKeyRepository .GetManyByOrganizationIdTypeAsync(organizationId, organizationApiKeyType); if (apiKeys == null || !apiKeys.Any()) { var apiKey = new OrganizationApiKey { OrganizationId = organizationId, Type = organizationApiKeyType, ApiKey = CoreHelpers.SecureRandomString(30), RevisionDate = DateTime.UtcNow, }; await _organizationApiKeyRepository.CreateAsync(apiKey); return(apiKey); } // NOTE: Currently we only allow one type of api key per organization return(apiKeys.Single()); }
public async Task <OrganizationApiKey> RotateApiKeyAsync(OrganizationApiKey organizationApiKey) { organizationApiKey.ApiKey = CoreHelpers.SecureRandomString(30); organizationApiKey.RevisionDate = DateTime.UtcNow; await _organizationApiKeyRepository.UpsertAsync(organizationApiKey); return(organizationApiKey); }
public async Task RotateApiKeyAsync_RotatesKey(SutProvider <RotateOrganizationApiKeyCommand> sutProvider, OrganizationApiKey organizationApiKey) { var existingKey = organizationApiKey.ApiKey; organizationApiKey = await sutProvider.Sut.RotateApiKeyAsync(organizationApiKey); Assert.NotEqual(existingKey, organizationApiKey.ApiKey); AssertHelper.AssertRecent(organizationApiKey.RevisionDate); }
public ApiKeyResponseModel(OrganizationApiKey organizationApiKey, string obj = "apiKey") : base(obj) { if (organizationApiKey == null) { throw new ArgumentNullException(nameof(organizationApiKey)); } ApiKey = organizationApiKey.ApiKey; RevisionDate = organizationApiKey.RevisionDate; }
public OrganizationApiKeyInformation(OrganizationApiKey key) : base("keyInformation") { KeyType = key.Type; RevisionDate = key.RevisionDate; }
public async Task ValidateBillingSyncKeyAsync_KeyDoesNotEqual_ReturnsFalse(SutProvider <ValidateBillingSyncKeyCommand> sutProvider, Organization organization, OrganizationApiKey orgApiKey, string billingSyncKey) { sutProvider.GetDependency <IOrganizationApiKeyRepository>() .GetManyByOrganizationIdTypeAsync(organization.Id, OrganizationApiKeyType.BillingSync) .Returns(new[] { orgApiKey }); Assert.False(await sutProvider.Sut.ValidateBillingSyncKeyAsync(organization, billingSyncKey)); }
public async Task TokenEndpoint_GrantTypeClientCredentials_AsOrganization_Success(Organization organization, OrganizationApiKey organizationApiKey) { var orgRepo = _factory.Services.GetRequiredService <IOrganizationRepository>(); organization.Enabled = true; organization.UseApi = true; organization = await orgRepo.CreateAsync(organization); organizationApiKey.OrganizationId = organization.Id; organizationApiKey.Type = OrganizationApiKeyType.Default; var orgApiKeyRepo = _factory.Services.GetRequiredService <IOrganizationApiKeyRepository>(); await orgApiKeyRepo.CreateAsync(organizationApiKey); var context = await _factory.Server.PostAsync("/connect/token", new FormUrlEncodedContent(new Dictionary <string, string> { { "grant_type", "client_credentials" }, { "client_id", $"organization.{organization.Id}" }, { "client_secret", organizationApiKey.ApiKey }, { "scope", "api.organization" }, })); Assert.Equal(StatusCodes.Status200OK, context.Response.StatusCode); await AssertDefaultTokenBodyAsync(context, "api.organization"); }