Пример #1
0
        public async Task add_response_ok_and_use_default_validTo_if_is_not_specified()
        {
            var permission = Builders.Permission()
               .WithAllPrivilegesForDefaultIdentity()
               .Build();

            await _fixture.Given
                .AddPermission(permission);

            var addApiKeyRequest = new AddApiKeyRequest()
            {
                Name = "name"
            };

            var response = await _fixture.TestServer
                  .CreateRequest(ApiDefinitions.V1.ApiKeys.Add())
                  .WithIdentity(Builders.Identity().WithDefaultClaims().Build())
                  .PostAsJsonAsync(addApiKeyRequest);

            response.StatusCode
                .Should()
                .Be(StatusCodes.Status201Created);

            var content = await response.Content
                .ReadAs<AddApiKeyResponse>();

            content.ApiKeyId
                .Should()
                .NotBe(default);
Пример #2
0
        public async Task add_response_badrequest_if_apikey_with_the_same_name_already_exist()
        {
            var apiKey1 = Builders.ApiKey()
                          .WithName("apikey#1")
                          .Withkey("key-1")
                          .Build();

            var apiKey2 = Builders.ApiKey()
                          .WithName("apikey#2")
                          .Withkey("key-2")
                          .Build();

            await _fixture.Given
            .AddApiKey(apiKey1, apiKey2);

            var addApiKeyRequest = new AddApiKeyRequest()
            {
                Name        = "apikey#1",
                Description = "description",
            };

            var response = await _fixture.TestServer
                           .CreateRequest(ApiDefinitions.V1.ApiKeys.Add())
                           .WithIdentity(Builders.Identity().WithDefaultClaims().Build())
                           .PostAsJsonAsync(addApiKeyRequest);

            response.StatusCode
            .Should()
            .Be(StatusCodes.Status400BadRequest);
        }
Пример #3
0
        public async Task add_response_forbidden_when_user_is_not_authorized()
        {
            var permission = Builders.Permission()
                .WithAllPrivilegesForDefaultIdentity()
                .WithManagementPermission(false)
                .Build();

            await _fixture.Given
                .AddPermission(permission);

            var addApiKeyRequest = new AddApiKeyRequest()
            {
                Name = "apikey#1",
                ValidTo = DateTime.UtcNow.AddYears(2),
            };

            var response = await _fixture.TestServer
                  .CreateRequest(ApiDefinitions.V1.ApiKeys.Add())
                  .WithIdentity(Builders.Identity().WithDefaultClaims().Build())
                  .PostAsJsonAsync(addApiKeyRequest);

            response.StatusCode
                .Should()
                .Be(StatusCodes.Status403Forbidden);
        }
Пример #4
0
        public async Task add_response_ok_and_use_default_validTo_if_is_not_specified()
        {
            var permission = Builders.Permission()
                             .WithManagementPermission()
                             .Build();

            await _fixture.Given
            .AddPermission(permission);

            var addApiKeyRequest = new AddApiKeyRequest()
            {
                Name  = "fooname",
                ActAs = nameof(ApplicationRole.Reader)
            };

            var response = await _fixture.TestServer
                           .CreateRequest(ApiDefinitions.V3.ApiKeys.Add())
                           .WithIdentity(Builders.Identity().WithDefaultClaims().Build())
                           .PostAsJsonAsync(addApiKeyRequest);

            response.StatusCode
            .Should()
            .Be(StatusCodes.Status201Created);

            var content = await response.Content
                          .ReadAs <AddApiKeyResponse>();

            content.Name
            .Should()
            .Be(addApiKeyRequest.Name);

            content.Key
            .Should()
            .NotBe(default);
        public async Task add_response_badrequest_if_name_is_greater_than_200()
        {
            var addApiKeyRequest = new AddApiKeyRequest()
            {
                Name = new string('c', 201)
            };

            var response = await _fixture.TestServer
                           .CreateRequest(ApiDefinitions.V1.ApiKeys.Add())
                           .WithIdentity(Builders.Identity().WithDefaultClaims().Build())
                           .PostAsJsonAsync(addApiKeyRequest);

            response.StatusCode
            .Should()
            .Be(StatusCodes.Status400BadRequest);
        }
Пример #6
0
        public async Task add_response_created_when_create_new_apikey()
        {
            var addApiKeyRequest = new AddApiKeyRequest()
            {
                Name        = "apikey#1",
                Description = "description",
            };

            var response = await _fixture.TestServer
                           .CreateRequest(ApiDefinitions.V1.ApiKeys.Add())
                           .WithIdentity(Builders.Identity().WithDefaultClaims().Build())
                           .PostAsJsonAsync(addApiKeyRequest);

            response.StatusCode
            .Should()
            .Be(StatusCodes.Status201Created);
        }
Пример #7
0
        public async Task add_response_badrequest_if_actas_is_not_enum_valid()
        {
            var permission = Builders.Permission()
                             .WithManagementPermission()
                             .Build();

            await _fixture.Given
            .AddPermission(permission);

            var addApiKeyRequest = new AddApiKeyRequest()
            {
                Name  = new string('c', 100),
                ActAs = "NewRole"
            };

            var response = await _fixture.TestServer
                           .CreateRequest(ApiDefinitions.V3.ApiKeys.Add())
                           .WithIdentity(Builders.Identity().WithDefaultClaims().Build())
                           .PostAsJsonAsync(addApiKeyRequest);

            response.StatusCode
            .Should()
            .Be(StatusCodes.Status400BadRequest);
        }
Пример #8
0
        public async Task add_response_badrequest_if_name_is_greater_than_200()
        {
            var permission = Builders.Permission()
                             .WithManagementPermission()
                             .Build();

            await _fixture.Given
            .AddPermission(permission);

            var addApiKeyRequest = new AddApiKeyRequest()
            {
                Name  = new string('c', 201),
                ActAs = nameof(ApplicationRole.Reader)
            };

            var response = await _fixture.TestServer
                           .CreateRequest(ApiDefinitions.V3.ApiKeys.Add())
                           .WithIdentity(Builders.Identity().WithDefaultClaims().Build())
                           .PostAsJsonAsync(addApiKeyRequest);

            response.StatusCode
            .Should()
            .Be(StatusCodes.Status400BadRequest);
        }
Пример #9
0
        public async Task <ActionResult <AddApiKeyResponse> > Add(AddApiKeyRequest request, CancellationToken cancellationToken = default)
        {
            var response = await _mediator.Send(request, cancellationToken);

            return(Created($"api/apikeys/{request.Name}?api-version=3.0", response));
        }
Пример #10
0
 public async Task <AddApiKeyResponse> AddApiKeyAsync(AddApiKeyRequest addApiKeyRequest)
 {
     return(await _onenetClient.ExecuteAsync <AddApiKeyResponse>(addApiKeyRequest));
 }
Пример #11
0
        public async Task <IActionResult> Add(AddApiKeyRequest request, CancellationToken cancellationToken = default)
        {
            var id = await _mediator.Send(request, cancellationToken);

            return(Created($"api/v1/apikeys/{id}", null));
        }