def setUp(self): TestCaseWithFactory.setUp(self) self.endpoint = FeatureFlagApplication()
class TestGetFeatureFlag(TestCaseWithFactory): layer = DatabaseFunctionalLayer def setUp(self): TestCaseWithFactory.setUp(self) self.endpoint = FeatureFlagApplication() def installFeatureController(self, feature_controller): old_features = features.get_relevant_feature_controller() features.install_feature_controller(feature_controller) self.addCleanup( features.install_feature_controller, old_features) def test_getFeatureFlag_returns_None_by_default(self): self.assertIs(None, self.endpoint.getFeatureFlag(u'unknown')) def test_getFeatureFlag_returns_true_for_set_flag(self): flag_name = u'flag' with feature_flags(): set_feature_flag(flag_name, u'1') self.assertEqual(u'1', self.endpoint.getFeatureFlag(flag_name)) def test_getFeatureFlag_ignores_relevant_feature_controller(self): # getFeatureFlag should only consider the scopes it is asked to # consider, not any that happen to be active due to the XML-RPC # request itself. flag_name = u'flag' scope_name = u'scope' self.installFeatureController( FeatureController( MultiScopeHandler( [DefaultScope(), FixedScope(scope_name)]).lookup, StormFeatureRuleSource())) set_feature_flag(flag_name, u'1', scope_name) self.assertEqual(None, self.endpoint.getFeatureFlag(flag_name)) def test_getFeatureFlag_considers_supplied_scope(self): flag_name = u'flag' scope_name = u'scope' with feature_flags(): set_feature_flag(flag_name, u'value', scope_name) self.assertEqual( u'value', self.endpoint.getFeatureFlag(flag_name, [scope_name])) def test_getFeatureFlag_turns_user_into_team_scope(self): flag_name = u'flag' person = self.factory.makePerson() team = self.factory.makeTeam(members=[person]) with feature_flags(): set_feature_flag(flag_name, u'value', u'team:' + team.name) self.assertEqual( u'value', self.endpoint.getFeatureFlag( flag_name, ['user:'******'flag')) def test_xmlrpc_interface_set(self): sp = xmlrpclib.ServerProxy( config.launchpad.feature_flags_endpoint, transport=XMLRPCTestTransport(), allow_none=True) flag_name = u'flag' with feature_flags(): set_feature_flag(flag_name, u'1') self.assertEqual(u'1', sp.getFeatureFlag(flag_name))
class TestGetFeatureFlag(TestCaseWithFactory): layer = DatabaseFunctionalLayer def setUp(self): TestCaseWithFactory.setUp(self) self.endpoint = FeatureFlagApplication() def installFeatureController(self, feature_controller): old_features = features.get_relevant_feature_controller() features.install_feature_controller(feature_controller) self.addCleanup(features.install_feature_controller, old_features) def test_getFeatureFlag_returns_None_by_default(self): self.assertIs(None, self.endpoint.getFeatureFlag(u'unknown')) def test_getFeatureFlag_returns_true_for_set_flag(self): flag_name = u'flag' with feature_flags(): set_feature_flag(flag_name, u'1') self.assertEqual(u'1', self.endpoint.getFeatureFlag(flag_name)) def test_getFeatureFlag_ignores_relevant_feature_controller(self): # getFeatureFlag should only consider the scopes it is asked to # consider, not any that happen to be active due to the XML-RPC # request itself. flag_name = u'flag' scope_name = u'scope' self.installFeatureController( FeatureController( MultiScopeHandler([DefaultScope(), FixedScope(scope_name)]).lookup, StormFeatureRuleSource())) set_feature_flag(flag_name, u'1', scope_name) self.assertEqual(None, self.endpoint.getFeatureFlag(flag_name)) def test_getFeatureFlag_considers_supplied_scope(self): flag_name = u'flag' scope_name = u'scope' with feature_flags(): set_feature_flag(flag_name, u'value', scope_name) self.assertEqual( u'value', self.endpoint.getFeatureFlag(flag_name, [scope_name])) def test_getFeatureFlag_turns_user_into_team_scope(self): flag_name = u'flag' person = self.factory.makePerson() team = self.factory.makeTeam(members=[person]) with feature_flags(): set_feature_flag(flag_name, u'value', u'team:' + team.name) self.assertEqual( u'value', self.endpoint.getFeatureFlag(flag_name, ['user:'******'flag')) def test_xmlrpc_interface_set(self): sp = xmlrpclib.ServerProxy(config.launchpad.feature_flags_endpoint, transport=XMLRPCTestTransport(), allow_none=True) flag_name = u'flag' with feature_flags(): set_feature_flag(flag_name, u'1') self.assertEqual(u'1', sp.getFeatureFlag(flag_name))