コード例 #1
0
        public async Task add_response_badrequest_when_add_new_toggle_with_parameters_using_nonexisting_deployment()
        {
            var permission = Builders.Permission()
                             .WithManagementPermission()
                             .Build();

            await _fixture.Given
            .AddPermission(permission);

            var deployment = Builders.Deployment()
                             .WithName(EsquioConstants.DEFAULT_DEPLOYMENT_NAME)
                             .WithDefault(true)
                             .Build();

            var product = Builders.Product()
                          .WithName("fooproduct")
                          .Build();

            product.Deployments.Add(deployment);

            var feature = Builders.Feature()
                          .WithName("barfeature")
                          .Build();

            product.Features
            .Add(feature);

            await _fixture.Given
            .AddProduct(product);

            var body = new AddToggleRequest()
            {
                ProductName    = product.Name,
                FeatureName    = feature.Name,
                ToggleType     = typeof(HostEnvironmentToggle).FullName,
                DeploymentName = "nonexisting",
                Parameters     = new List <AddToggleRequestDetailParameter>()
                {
                    new AddToggleRequestDetailParameter()
                    {
                        Name  = "Environments",
                        Value = "Development",
                        Type  = typeof(String).FullName
                    }
                }
            };

            var response = await _fixture.TestServer
                           .CreateRequest(ApiDefinitions.V3.Toggles.Post())
                           .WithIdentity(Builders.Identity().WithDefaultClaims().Build())
                           .PostAsJsonAsync(body);

            response.StatusCode
            .Should()
            .Be(StatusCodes.Status400BadRequest);
        }
コード例 #2
0
        public async Task post_response_bad_request_if_try_to_duplicate_toggle()
        {
            var permission = Builders.Permission()
                             .WithAllPrivilegesForDefaultIdentity()
                             .Build();

            await _fixture.Given
            .AddPermission(permission);

            var product = Builders.Product()
                          .WithName("product#1")
                          .Build();

            var feature = Builders.Feature()
                          .WithName("feature#1")
                          .Build();

            var toggle = Builders.Toggle()
                         .WithType(typeof(EnvironmentToggle).FullName)
                         .Build();

            var parameter = Builders.Parameter()
                            .WithName("Environments")
                            .WithValue("Development")
                            .Build();

            toggle.Parameters
            .Add(parameter);

            feature.Toggles
            .Add(toggle);

            product.Features
            .Add(feature);

            await _fixture.Given
            .AddProduct(product);

            var body = new AddToggleRequest()
            {
                FeatureId  = feature.Id,
                Type       = typeof(EnvironmentToggle).FullName,
                Parameters = new List <AddToggleRequestDetailParameter>()
            };

            var response = await _fixture.TestServer
                           .CreateRequest(ApiDefinitions.V1.Toggles.Post())
                           .WithIdentity(Builders.Identity().WithDefaultClaims().Build())
                           .PostAsJsonAsync(body);

            response.StatusCode
            .Should()
            .Be(StatusCodes.Status400BadRequest);
        }
コード例 #3
0
        public async Task add_response_bad_request_if_try_to_duplicate_toggle()
        {
            var permission = Builders.Permission()
                             .WithManagementPermission()
                             .Build();

            await _fixture.Given
            .AddPermission(permission);

            var product = Builders.Product()
                          .WithName("fooproduct")
                          .Build();

            var deployment = Builders.Deployment()
                             .WithName(EsquioConstants.DEFAULT_DEPLOYMENT_NAME)
                             .Build();

            var feature = Builders.Feature()
                          .WithName("barfeature")
                          .Build();

            var toggle = Builders.Toggle()
                         .WithType(typeof(HostEnvironmentToggle).FullName)
                         .Build();

            feature.Toggles
            .Add(toggle);

            product.Features
            .Add(feature);

            await _fixture.Given
            .AddProduct(product);

            var body = new AddToggleRequest()
            {
                ProductName = product.Name,
                FeatureName = feature.Name,
                ToggleType  = typeof(HostEnvironmentToggle).FullName,
                Parameters  = new List <AddToggleRequestDetailParameter>()
            };

            var response = await _fixture.TestServer
                           .CreateRequest(ApiDefinitions.V3.Toggles.Post())
                           .WithIdentity(Builders.Identity().WithDefaultClaims().Build())
                           .PostAsJsonAsync(body);

            response.StatusCode
            .Should()
            .Be(StatusCodes.Status400BadRequest);
        }
コード例 #4
0
        public async Task post_response_created_when_add_new_toggle()
        {
            var permission = Builders.Permission()
                             .WithAllPrivilegesForDefaultIdentity()
                             .Build();

            await _fixture.Given
            .AddPermission(permission);

            var product = Builders.Product()
                          .WithName("product#1")
                          .Build();

            var feature = Builders.Feature()
                          .WithName("feature#1")
                          .Build();

            product.Features
            .Add(feature);

            await _fixture.Given
            .AddProduct(product);

            var body = new AddToggleRequest()
            {
                FeatureId  = feature.Id,
                Type       = typeof(EnvironmentToggle).FullName,
                Parameters = new List <AddToggleRequestDetailParameter>()
                {
                    new AddToggleRequestDetailParameter()
                    {
                        Name  = "Environments",
                        Value = "Development",
                        Type  = typeof(String).FullName
                    }
                }
            };

            var response = await _fixture.TestServer
                           .CreateRequest(ApiDefinitions.V1.Toggles.Post())
                           .WithIdentity(Builders.Identity().WithDefaultClaims().Build())
                           .PostAsJsonAsync(body);

            response.StatusCode
            .Should()
            .Be(StatusCodes.Status201Created);
        }
コード例 #5
0
        public async Task <IActionResult> Add(AddToggleRequest postToggleRequest, CancellationToken cancellationToken = default)
        {
            await _mediator.Send(postToggleRequest, cancellationToken);

            return(Created($"api/v1/products/{postToggleRequest.ProductName}/features/{postToggleRequest.FeatureName}/toggles/{postToggleRequest.ToggleType}", null));
        }
コード例 #6
0
ファイル: TogglesController.cs プロジェクト: mitch-b/Esquio
        public async Task <IActionResult> Add(AddToggleRequest postToggleRequest, CancellationToken cancellationToken = default)
        {
            var toggleId = await _mediator.Send(postToggleRequest, cancellationToken);

            return(Created($"api/v1/toggle/{toggleId}", null));
        }