public async Task allow_to_untag_features() { var product = Builders.Product() .WithName("product#1") .Build(); var feature = Builders.Feature() .WithName("feature#1") .Build(); var toggle1 = Builders.Toggle() .WithType("toggle#1") .Build(); var tag = Builders.Tag() .Build(); var featureTag = Builders.FeatureTag() .WithFeature(feature) .WithTag(tag) .Build(); feature.Toggles.Add(toggle1); feature.FeatureTags.Add(featureTag); product.Features.Add(feature); await _fixture.Given.AddProduct(product); var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V1.Tags.Untag(tag.Name, feature.Id)) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .DeleteAsync(); response.StatusCode .Should() .Be(StatusCodes.Status204NoContent); }
public async Task not_allow_untag_a_feature_when_it_has_not_been_previously_tagged_with_the_tag() { var product = Builders.Product() .WithName("product#1") .Build(); var feature = Builders.Feature() .WithName("feature#1") .Build(); var toggle1 = Builders.Toggle() .WithType("toggle#1") .Build(); feature.Toggles.Add(toggle1); product.Features.Add(feature); await _fixture.Given.AddProduct(product); var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V1.Tags.Untag("tag", feature.Id)) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .DeleteAsync(); response.StatusCode .Should() .Be(StatusCodes.Status400BadRequest); }
public async Task not_allow_to_tag_features_when_it_has_been_previously_tagged_with_the_same_tag() { var product = Builders.Product() .WithName("product#1") .Build(); var feature = Builders.Feature() .WithName("feature#1") .Build(); var toggle1 = Builders.Toggle() .WithType("toggle#1") .Build(); var tag = Builders.Tag() .Build(); var featureTag = Builders.FeatureTag() .WithFeature(feature) .WithTag(tag) .Build(); feature.Toggles.Add(toggle1); feature.FeatureTags.Add(featureTag); product.Features.Add(feature); await _fixture.Given.AddProduct(product); var request = new AddTagRequest(tag.Name); var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V1.Tags.Tag(feature.Id)) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .PostAsJsonAsync(request); response.StatusCode .Should() .Be(StatusCodes.Status400BadRequest); }
public async Task get_response_not_found_if_toggle_not_exist() { var permission = Builders.Permission() .WithManagementPermission() .Build(); await _fixture.Given .AddPermission(permission); var product = Builders.Product() .WithName("fooproduct") .Build(); var feature = Builders.Feature() .WithName("barfeature") .Build(); product.Features .Add(feature); await _fixture.Given .AddProduct(product); var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V3.Toggles.Get(productName: product.Name, featureName: feature.Name, toggleType: "non-existing-toggle")) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .GetAsync(); response.StatusCode .Should() .Be(StatusCodes.Status404NotFound); }
public async Task update_response_ok_when_create_the_feature() { var product = Builders.Product() .WithName("product#1") .Build(); var feature = Builders.Feature() .WithName("feature1") .WithEnabled(false) .Build(); product.Features.Add(feature); await _fixture.Given .AddProduct(product); var updateFlagRequest = new UpdateFlagRequest() { Name = "feature#1", Description = "description", Enabled = true, FlagId = feature.Id }; var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V1.Flags.Update()) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .PutAsJsonAsync(updateFlagRequest); response.StatusCode .Should() .Be(StatusCodes.Status200OK); }
public async Task add_response_badrequest_if_feature_with_the_same_name_already_exist_on_same_product() { var product = Builders.Product() .WithName("product#1") .Build(); var feature1 = Builders.Feature() .WithName("feature#1") .Build(); product.Features .Add(feature1); await _fixture.Given .AddProduct(product); var addFlagRequest = new AddFlagRequest() { Name = "feature#1", Description = "description", Enabled = true, ProductId = product.Id }; var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V1.Flags.Add()) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .PostAsJsonAsync(addFlagRequest); response.StatusCode .Should() .Be(StatusCodes.Status400BadRequest); }
public async Task rollout_is_idempotent() { var product = Builders.Product() .WithName("product#2") .Build(); var feature = Builders.Feature() .WithName("feature") .Build(); product.Features.Add(feature); await _fixture.Given.AddProduct(product); var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V1.Flags.Rollout(featureId: feature.Id)) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .PutAsync(); response.StatusCode .Should() .Be(StatusCodes.Status200OK); response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V1.Flags.Rollout(featureId: feature.Id)) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .PutAsync(); response.StatusCode .Should() .Be(StatusCodes.Status200OK); }
public async Task allow_to_tag_features() { var tag = "tag"; var product = Builders.Product() .WithName("product#1") .Build(); var feature = Builders.Feature() .WithName("feature#1") .Build(); var toggle1 = Builders.Toggle() .WithType("toggle#1") .Build(); feature.Toggles.Add(toggle1); product.Features.Add(feature); await _fixture.Given.AddProduct(product); var request = new AddTagRequest(tag); var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V1.Tags.Tag(feature.Id)) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .PostAsJsonAsync(request); response.StatusCode .Should() .Be(StatusCodes.Status200OK); }
public async Task not_allow_untag_a_feature_when_it_has_not_been_previously_tagged_with_the_tag() { var permission = Builders.Permission() .WithManagementPermission() .Build(); await _fixture.Given .AddPermission(permission); var product = Builders.Product() .WithName("fooproduct") .Build(); var feature = Builders.Feature() .WithName("barfeature") .Build(); var toggle1 = Builders.Toggle() .WithType("toggle") .Build(); feature.Toggles.Add(toggle1); product.Features.Add(feature); await _fixture.Given.AddProduct(product); var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V5.Tags.Untag(product.Name, feature.Name, tag: "performance")) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .DeleteAsync(); response.StatusCode .Should() .Be(StatusCodes.Status400BadRequest); }
public async Task delete_response_ok_when_product_and_feature_exist_and_feature_toggles_is_not_empty() { var product = Builders.Product() .WithName("product#1") .Build(); var feature = Builders.Feature() .WithName("feature#1") .Build(); var toggle1 = Builders.Toggle() .WithType("toggle#1") .Build(); feature.Toggles.Add(toggle1); product.Features.Add(feature); await _fixture.Given.AddProduct(product); var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V1.Flags.Delete(feature.Id)) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .DeleteAsync(); response.StatusCode .Should() .Be(StatusCodes.Status204NoContent); }
public async Task get_back_the_list_of_tags_of_a_feature() { var permission = Builders.Permission() .WithManagementPermission() .Build(); await _fixture.Given .AddPermission(permission); var product = Builders.Product() .WithName("fooproduct") .Build(); var feature = Builders.Feature() .WithName("barfeature") .Build(); var toggle1 = Builders.Toggle() .WithType("toggle") .Build(); var tagPerformance = Builders.Tag() .WithName("performance") .Build(); var tagUsability = Builders.Tag() .WithName("usability") .Build(); var featureTagPerformance = Builders.FeatureTag() .WithFeature(feature) .WithTag(tagPerformance) .Build(); var featureTagUsability = Builders.FeatureTag() .WithFeature(feature) .WithTag(tagUsability) .Build(); feature.Toggles.Add(toggle1); feature.FeatureTags.Add(featureTagPerformance); feature.FeatureTags.Add(featureTagUsability); product.Features.Add(feature); await _fixture.Given.AddProduct(product); var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V5.Tags.List(product.Name, feature.Name)) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .GetAsync(); response.StatusCode .Should() .Be(StatusCodes.Status200OK); var content = await response.Content .ReadAs <List <TagResponseDetail> >(); content.Should().HaveCount(2); }
public async Task get_response_not_found_if_toggle_not_exist() { var product = Builders.Product() .WithName("product#1") .Build(); var feature = Builders.Feature() .WithName("feature#1") .Build(); var toggle1 = Builders.Toggle() .WithType("toggle-type-1") .Build(); feature.Toggles .Add(toggle1); product.Features .Add(feature); await _fixture.Given .AddProduct(product); var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V1.Toggles.Get(toggleId: toggle1.Id * 2)) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .GetAsync(); response.StatusCode .Should() .Be(StatusCodes.Status404NotFound); }
public async Task delete_response_badrequest_if_toggle_not_exist() { var permission = Builders.Permission() .WithManagementPermission() .Build(); await _fixture.Given .AddPermission(permission); var product = Builders.Product() .WithName("fooproduct") .Build(); var feature = Builders.Feature() .WithName("barfeature") .Build(); product.Features .Add(feature); await _fixture.Given .AddProduct(product); var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V3.Toggles.Delete(product.Name, feature.Name, "non-existing")) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .DeleteAsync(); response.StatusCode .Should() .Be(StatusCodes.Status400BadRequest); }
public async Task get_configuration_statistics_response_configuration_statistics_when_success() { var permission = Builders.Permission() .WithReaderPermission() .Build(); await _fixture.Given .AddPermission(permission); var product = Builders.Product() .WithName("fooproduct") .Build(); var feature = Builders.Feature() .WithName("barfeature") .Build(); var toggle1 = Builders.Toggle() .WithType("toggle") .Build(); var tag = Builders.Tag() .Build(); var featureTag = Builders.FeatureTag() .WithFeature(feature) .WithTag(tag) .Build(); feature.Toggles.Add(toggle1); feature.FeatureTags.Add(featureTag); product.Features.Add(feature); await _fixture.Given.AddProduct(product); var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V5.Statistics.Configuration()) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .GetAsync(); response.StatusCode .Should() .Be(StatusCodes.Status200OK); var statistics = await response.Content .ReadAs <ConfigurationStatisticsResponse>(); statistics.TotalProducts .Should().Be(1); statistics.TotalFeatures .Should().Be(1); statistics.TotalDeployments .Should().Be(0); statistics.TotalToggles .Should().Be(1); }
public async Task addparameter_response_ok_if_toggle_already_exist_but_parameater_is_newer() { 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) .WithDefault(true) .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); product.Deployments .Add(deployment); await _fixture.Given .AddProduct(product); var parameterToggleRequest = new AddParameterToggleRequest() { ProductName = product.Name, FeatureName = feature.Name, ToggleType = toggle.Type, DeploymentName = deployment.Name, Name = "Environments", Value = "Development", }; var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V3.Toggles.PostParameter()) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .PostAsJsonAsync(parameterToggleRequest); response.StatusCode .Should() .Be(StatusCodes.Status201Created); }
public async Task list_response_ok_and_use_skip_take_values() { var permission = Builders.Permission() .WithManagementPermission() .Build(); var product = Builders.Product() .WithName("fooproduct") .Build(); var feature = Builders.Feature() .WithName("barfeature") .Build(); product.Features .Add(feature); //this add new history also await _fixture.Given .AddProduct(product); await _fixture.Given .AddPermission(permission); var history1 = Builders.History() .WithFeatureName(feature.Name) .WithProductName(product.Name) .WithOldValues("") .WithNewValues("{environments:development}") .Build(); var history2 = Builders.History() .WithFeatureName(feature.Name) .WithProductName(product.Name) .WithOldValues("") .WithNewValues("{environments:development}") .Build(); await _fixture.Given .AddHistory(history1, history2); var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V5.Audit.List(pageIndex: 1, pageCount: 1)) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .GetAsync(); response.StatusCode .Should() .Be(HttpStatusCode.OK); var content = await response.Content .ReadAs <PaginatedResult <ListAuditResponseDetail> >(); content.PageIndex.Should().Be(1); content.Count.Should().Be(1); content.Total.Should().Be(4); //add feature already add new history also }
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); }
public async Task delete_response_no_content_if_toggle_exist_and_is_the_only_one() { 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(); var feature = Builders.Feature() .WithName("barfeature") .Build(); var toggle = Builders.Toggle() .WithType("toggle-type-1") .Build(); var parameter = Builders.Parameter() .WithName("param1") .WithValue("value1") .WithRingName(deployment.Name) .Build(); toggle.Parameters .Add(parameter); feature.Toggles .Add(toggle); product.Features .Add(feature); product.Deployments .Add(deployment); await _fixture.Given .AddProduct(product); var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V3.Toggles.Delete(product.Name, feature.Name, toggle.Type)) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .DeleteAsync(); response.StatusCode .Should() .Be(StatusCodes.Status204NoContent); }
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); }
public async Task postparameter_response_ok_if_toggle_exist_but_is_new_parameter() { 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 parameterToggleRequest = new AddParameterToggleRequest() { Name = "Environments", Value = "Production", }; var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V1.Toggles.PostParameter(toggleId: toggle.Id)) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .PostAsJsonAsync(parameterToggleRequest); response.StatusCode .Should() .Be(StatusCodes.Status201Created); }
public async Task list_response_ok_and_use_default_skip_take_values() { var product = Builders.Product() .WithName("product#1") .Build(); var feature1 = Builders.Feature() .WithName("feature#1") .Build(); var feature2 = Builders.Feature() .WithName("feature#2") .Build(); product.Features .Add(feature1); product.Features .Add(feature2); await _fixture.Given .AddProduct(product); var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V1.Flags.List(product.Id)) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .GetAsync(); response.StatusCode .Should() .Be(StatusCodes.Status200OK); var content = await response.Content .ReadAs <ListFlagResponse>(); content.Total .Should().Be(2); content.Count .Should().Be(2); content.PageIndex .Should().Be(0); content.Result .First().Name .Should().BeEquivalentTo("feature#1"); content.Result .Last().Name .Should().BeEquivalentTo("feature#2"); }
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); }
public async Task list_response_ok_when_no_page_data() { var product = Builders.Product() .WithName("product#1") .Build(); var feature1 = Builders.Feature() .WithName("feature#1") .Build(); var feature2 = Builders.Feature() .WithName("feature#2") .Build(); product.Features .Add(feature1); product.Features .Add(feature2); await _fixture.Given .AddProduct(product); var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V1.Flags.List(product.Id, pageIndex: 10, pageCount: 10)) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .GetAsync(); response.StatusCode .Should() .Be(StatusCodes.Status200OK); var content = await response.Content .ReadAs <ListFlagResponse>(); content.Total .Should().Be(2); content.Count .Should().Be(0); content.PageIndex .Should().Be(10); content.Result .Count .Should().Be(0); }
public async Task reveal_response_forbidden_if_user_is_not_authorized() { var permission = Builders.Permission() .WithAllPrivilegesForDefaultIdentity() .WithReadPermission(false) .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("Esquio.Toggles.EnvironmentToggle") .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 response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V1.Toggles.Reveal("Esquio.Toggles.EnvironmentToggle")) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .GetAsync(); response.StatusCode .Should() .Be(StatusCodes.Status403Forbidden); }
public async Task allow_to_tag_features_with_existing_tags() { var permission = Builders.Permission() .WithAllPrivilegesForDefaultIdentity() .Build(); await _fixture.Given .AddPermission(permission); var product = Builders.Product() .WithName("product#1") .Build(); var feature1 = Builders.Feature() .WithName("feature#1") .Build(); var feature2 = Builders.Feature() .WithName("feature#2") .Build(); var tag = Builders.Tag() .WithName("performance") .Build(); var featureTag = Builders.FeatureTag() .WithFeature(feature1) .WithTag(tag) .Build(); feature1.FeatureTags.Add(featureTag); product.Features.Add(feature1); product.Features.Add(feature2); await _fixture.Given.AddProduct(product); var request = new AddTagRequest("performance"); var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V1.Tags.Tag(feature2.Id)) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .PostAsJsonAsync(request); response.StatusCode .Should() .Be(StatusCodes.Status200OK); }
public async Task allow_to_tag_features_with_existing_tags() { var permission = Builders.Permission() .WithManagementPermission() .Build(); await _fixture.Given .AddPermission(permission); var product = Builders.Product() .WithName("fooproduct") .Build(); var feature1 = Builders.Feature() .WithName("barfeatureone") .Build(); var feature2 = Builders.Feature() .WithName("barfeaturetwo") .Build(); var tag = Builders.Tag() .WithName("performance") .Build(); var featureTag = Builders.FeatureTag() .WithFeature(feature1) .WithTag(tag) .Build(); feature1.FeatureTags.Add(featureTag); product.Features.Add(feature1); product.Features.Add(feature2); await _fixture.Given.AddProduct(product); var request = new AddTagRequest("performance"); var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V5.Tags.Tag(product.Name, feature2.Name)) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .PostAsJsonAsync(request); response.StatusCode .Should() .Be(StatusCodes.Status204NoContent); }
public async Task delete_response_no_content_if_toggle_exist() { 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("toggle-type-1") .Build(); var parameter = Builders.Parameter() .WithName("param#1") .WithValue("value#1") .Build(); toggle.Parameters .Add(parameter); feature.Toggles .Add(toggle); product.Features .Add(feature); await _fixture.Given .AddProduct(product); var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V1.Toggles.Delete(toggleId: toggle.Id)) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .DeleteAsync(); response.StatusCode .Should() .Be(StatusCodes.Status204NoContent); }
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); }
public async Task reveal_response_forbidden_if_user_is_not_authorized() { var deployment = Builders.Deployment() .WithName(EsquioConstants.DEFAULT_DEPLOYMENT_NAME) .WithDefault(true) .Build(); var product = Builders.Product() .WithName("product#1") .Build(); var feature = Builders.Feature() .WithName("feature#1") .Build(); var toggle = Builders.Toggle() .WithType("Esquio.Toggles.EnvironmentToggle") .Build(); var parameter = Builders.Parameter() .WithName("Environments") .WithValue("Development") .WithRingName(deployment.Name) .Build(); toggle.Parameters .Add(parameter); feature.Toggles .Add(toggle); product.Features .Add(feature); await _fixture.Given .AddProduct(product); var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V3.Toggles.Reveal("Esquio.Toggles.EnvironmentToggle")) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .GetAsync(); response.StatusCode .Should() .Be(StatusCodes.Status403Forbidden); }
public async Task postparameter_response_forbidden_if_user_is_not_authorized() { var permission = Builders.Permission() .WithAllPrivilegesForDefaultIdentity() .WithWritePermission(false) .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(); feature.Toggles .Add(toggle); product.Features .Add(feature); await _fixture.Given .AddProduct(product); var parameterToggleRequest = new AddParameterToggleRequest() { Name = "Environments", Value = "Development", }; var response = await _fixture.TestServer .CreateRequest(ApiDefinitions.V1.Toggles.PostParameter(toggleId: toggle.Id)) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .PostAsJsonAsync(parameterToggleRequest); response.StatusCode .Should() .Be(StatusCodes.Status403Forbidden); }