def test_feature_flag_integration(self): features.add("organizations:integrations-feature_flag_integration", OrganizationFeature) self.login_as(user=self.user) org = self.create_organization(owner=self.user, name="baz") url = reverse("sentry-api-0-organization-config-integrations", args=[org.slug]) response = self.client.get(url) assert response.status_code == 200, response.content provider = [ r for r in response.data["providers"] if r["key"] == "feature_flag_integration" ] assert len(provider) == 0 with self.feature( "organizations:integrations-feature_flag_integration"): response = self.client.get(url) assert response.status_code == 200, response.content provider = [ r for r in response.data["providers"] if r["key"] == "feature_flag_integration" ] assert len(provider) == 1
def setUp(self): self.user = self.create_user() self.org = self.create_organization(owner=self.user) self.out_of_scope_org = self.create_organization(owner=self.user) self.request = HttpRequest() self.request.user = self.user features.add("foo", OrganizationFeature)
def setUp(self): self.user = self.create_user() self.org = self.create_organization(owner=self.user) self.out_of_scope_org = self.create_organization(owner=self.user) self.request = HttpRequest() self.request.user = self.user features.add('foo', OrganizationFeature)
def test_organization_batch_has(self, mock_batch): user = self.create_user() organization = self.create_organization(owner=user) features.add("organizations:test-feature", OrganizationFeature) features.add("organizations:disabled-feature", OrganizationFeature) mock_batch.return_value = { f"organization:{organization.id}": { "organizations:test-feature": True, "organizations:disabled-feature": False, } } result = serialize(organization, user) assert "test-feature" in result["features"] assert "disabled-feature" not in result["features"]
def test_feature_flag_integration(self): features.add("organizations:integrations-feature_flag_integration", OrganizationFeature) response = self.get_success_response(self.organization.slug) provider = [ r for r in response.data["providers"] if r["key"] == "feature_flag_integration" ] assert len(provider) == 0 with self.feature( "organizations:integrations-feature_flag_integration"): response = self.get_success_response(self.organization.slug) provider = [ r for r in response.data["providers"] if r["key"] == "feature_flag_integration" ] assert len(provider) == 1
def test_project_features(self): early_flag = "projects:TEST_early" red_flag = "projects:TEST_red" blue_flag = "projects:TEST_blue" early_adopter = self.create_organization() early_red = self.create_project(organization=early_adopter) early_blue = self.create_project(organization=early_adopter) late_adopter = self.create_organization() late_red = self.create_project(organization=late_adopter) late_blue = self.create_project(organization=late_adopter) class EarlyAdopterFeatureHandler(features.BatchFeatureHandler): features = {early_flag} def _check_for_batch(self, feature_name, organization, actor): return organization == early_adopter def create_color_handler(color_flag, included_projects): class ProjectColorFeatureHandler(features.FeatureHandler): features = {color_flag} def has(self, feature, actor): return feature.project in included_projects return ProjectColorFeatureHandler() features.add(early_flag, features.ProjectFeature) features.add(red_flag, features.ProjectFeature) features.add(blue_flag, features.ProjectFeature) red_handler = create_color_handler(red_flag, [early_red, late_red]) blue_handler = create_color_handler(blue_flag, [early_blue, late_blue]) for handler in (EarlyAdopterFeatureHandler(), red_handler, blue_handler): features.add_handler(handler) def api_form(flag): return flag[len("projects:"):] flags_to_find = { api_form(f) for f in [early_flag, red_flag, blue_flag] } def assert_has_features(project, expected_features): serialized = serialize(project) actual_features = { f for f in serialized["features"] if f in flags_to_find } assert actual_features == {api_form(f) for f in expected_features} assert_has_features(early_red, [early_flag, red_flag]) assert_has_features(early_blue, [early_flag, blue_flag]) assert_has_features(late_red, [red_flag]) assert_has_features(late_blue, [blue_flag])
def setUp(self): super().setUp() features.add("organizations:integrations-feature-flag-integration", OrganizationFeature) self.login_as(self.user)
def setUp(self): super(OrganizationIntegrationDetailView, self).setUp() features.add("organizations:integrations-feature_flag_integration", OrganizationFeature) self.login_as(self.user)