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 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_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_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 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 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_untag_features() { 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 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.Tags.Untag(product.Name, feature.Name, tag.Name)) .WithIdentity(Builders.Identity().WithDefaultClaims().Build()) .DeleteAsync(); response.StatusCode .Should() .Be(HttpStatusCode.NoContent); }