def test_getCache_anonymous_obfuscated(self): request = LaunchpadTestRequest() branch = self.factory.makeBranch(name='user@domain') login_as(None) view = LaunchpadView(branch, request) self.assertIs(None, view.user) self.assertNotIn('user@domain', view.getCacheJSON())
def test_getCacheJSON_non_resource_object(self): request = LaunchpadTestRequest() view = LaunchpadView(object(), request) IJSONRequestCache(request).objects['my_bool'] = True with person_logged_in(self.factory.makePerson()): self.assertEqual('{"related_features": {}, "my_bool": true}', view.getCacheJSON())
def test_getCacheJSON_context_overrides_objects(self): request = LaunchpadTestRequest() view = LaunchpadView(self.getCanada(), request) IJSONRequestCache(request).objects['context'] = True with person_logged_in(self.factory.makePerson()): json_dict = simplejson.loads(view.getCacheJSON())['context'] self.assertIsCanada(json_dict)
def test_getCacheJSON_resource_object(self): request = LaunchpadTestRequest() view = LaunchpadView(object(), request) IJSONRequestCache(request).objects['country'] = self.getCanada() with person_logged_in(self.factory.makePerson()): json_dict = simplejson.loads(view.getCacheJSON())['country'] self.assertIsCanada(json_dict)
def test_active_related_features__enabled_feature(self): # If a view has a non-empty sequence of related feature flags and if # only a non-default scope is defined and active, the property # active_related_features contains this feature flag. self.useFixture(FeatureFixture( {}, ( { u'flag': u'test_feature', u'scope': u'pageid:foo', u'priority': 0, u'value': u'on', }, ), override_scope_lookup=lambda scope_name: True)) request = LaunchpadTestRequest() view = LaunchpadView(object(), request) view.related_features = ['test_feature'] self.assertEqual({ 'test_feature': { 'is_beta': True, 'title': 'title', 'url': 'http://wiki.lp.dev/LEP/sample', 'value': 'on'} }, view.related_feature_info)
def test_getCache_anonymous(self): request = LaunchpadTestRequest() view = LaunchpadView(self.getCanada(), request) self.assertIs(None, view.user) IJSONRequestCache(request).objects['my_bool'] = True json_dict = simplejson.loads(view.getCacheJSON()) self.assertIsCanada(json_dict['context']) self.assertIn('my_bool', json_dict)
def test_getCacheJSON_non_resource_object(self): request = LaunchpadTestRequest() view = LaunchpadView(object(), request) IJSONRequestCache(request).objects['my_bool'] = True with person_logged_in(self.factory.makePerson()): self.assertEqual( '{"related_features": {}, "my_bool": true}', view.getCacheJSON())
def test_isRedirected_status_codes(self): request = LaunchpadTestRequest() view = LaunchpadView(object(), request) for code in view.REDIRECTED_STATUSES: request.response.setStatus(code) self.assertTrue(view._isRedirected()) for code in [100, 200, 403, 404, 500]: request.response.setStatus(code) self.assertFalse(view._isRedirected())
def test_view_privacy(self): # View privacy is based on the context. @implementer(IPrivacy) class PrivateObject(object): def __init__(self, private): self.private = private view = LaunchpadView(PrivateObject(True), FakeRequest()) self.assertTrue(view.private) view = LaunchpadView(PrivateObject(False), FakeRequest()) self.assertFalse(view.private)
def test_related_feature_info__enabled_feature_with_default_same_value( self): # If a view # * has a non-empty sequence of related feature flags, # * the default scope and a non-default scope are defined # and have the same values, # then is_beta is false. # Unless related_features forces it to always be beta, and the # flag is set. self.useFixture( FeatureFixture({}, self.makeFeatureFlagDictionaries(u'on', u'on'), override_scope_lookup=lambda scope_name: True)) request = LaunchpadTestRequest() view = LaunchpadView(object(), request) view.related_features = {'test_feature': False} self.assertEqual( { 'test_feature': { 'is_beta': False, 'title': 'title', 'url': 'http://wiki.lp.dev/LEP/sample', 'value': 'on', } }, view.related_feature_info) view.related_features['test_feature'] = True self.assertEqual( { 'test_feature': { 'is_beta': True, 'title': 'title', 'url': 'http://wiki.lp.dev/LEP/sample', 'value': 'on', } }, view.related_feature_info) self.useFixture( FeatureFixture({}, self.makeFeatureFlagDictionaries(u'on', u''), override_scope_lookup=lambda scope_name: True)) self.assertEqual( { 'test_feature': { 'is_beta': False, 'title': 'title', 'url': 'http://wiki.lp.dev/LEP/sample', 'value': '', } }, view.related_feature_info)
def test_related_feature_info__with_related_feature_nothing_enabled(self): # If a view has a non-empty sequence of related feature flags but if # no matching feature rules are defined, is_beta is False. request = LaunchpadTestRequest() view = LaunchpadView(object(), request) view.related_features = ['test_feature'] self.assertEqual({ 'test_feature': { 'is_beta': False, 'title': 'title', 'url': 'http://wiki.lp.dev/LEP/sample', 'value': None, } }, view.related_feature_info)
def test_related_feature_info__enabled_feature_with_default_same_value( self): # If a view # * has a non-empty sequence of related feature flags, # * the default scope and a non-default scope are defined # and have the same values, # then is_beta is false. self.useFixture(FeatureFixture( {}, self.makeFeatureFlagDictionaries(u'on', u'on'), override_scope_lookup=lambda scope_name: True)) request = LaunchpadTestRequest() view = LaunchpadView(object(), request) view.related_features = ['test_feature'] self.assertEqual({'test_feature': { 'is_beta': False, 'title': 'title', 'url': 'http://wiki.lp.dev/LEP/sample', 'value': 'on', }}, view.related_feature_info)
def test_related_features__enabled_feature_with_default(self): # If a view # * has a non-empty sequence of related feature flags, # * the default scope and a non-default scope are defined # but have different values, # then the property related_feature_info contains this feature flag. self.useFixture(FeatureFixture( {}, self.makeFeatureFlagDictionaries(u'', u'on'), override_scope_lookup=lambda scope_name: True)) request = LaunchpadTestRequest() view = LaunchpadView(object(), request) view.related_features = ['test_feature'] self.assertEqual({ 'test_feature': { 'is_beta': True, 'title': 'title', 'url': 'http://wiki.lp.dev/LEP/sample', 'value': 'on', }}, view.related_feature_info)
def test_related_feature_info__default_scope_only(self): # If a view has a non-empty sequence of related feature flags but if # only a default scope is defined, it is not considered beta. self.useFixture( FeatureFixture({}, ({ u'flag': u'test_feature', u'scope': u'default', u'priority': 0, u'value': u'on', }, ))) request = LaunchpadTestRequest() view = LaunchpadView(object(), request) view.related_features = {'test_feature': False} self.assertEqual( { 'test_feature': { 'is_beta': False, 'title': 'title', 'url': 'http://wiki.lp.dev/LEP/sample', 'value': 'on', } }, view.related_feature_info)
def test_related_feature_info__default_scope_only(self): # If a view has a non-empty sequence of related feature flags but if # only a default scope is defined, it is not considered beta. self.useFixture(FeatureFixture( {}, ( { u'flag': u'test_feature', u'scope': u'default', u'priority': 0, u'value': u'on', }, ))) request = LaunchpadTestRequest() view = LaunchpadView(object(), request) view.related_features = ['test_feature'] self.assertEqual({'test_feature': { 'is_beta': False, 'title': 'title', 'url': 'http://wiki.lp.dev/LEP/sample', 'value': 'on', }}, view.related_feature_info)
def __init__(self, context, request): LaunchpadView.__init__(self, context, request) self.errors = [] self.form_wide_errors = [] self.widget_errors = {}
def test_getCacheJSON_resource_context(self): view = LaunchpadView(self.getCanada(), LaunchpadTestRequest()) json_dict = simplejson.loads(view.getCacheJSON())['context'] self.assertIsCanada(json_dict)
def test_getCacheJSON_non_resource_context(self): view = LaunchpadView(object(), LaunchpadTestRequest()) self.assertEqual('{"related_features": {}}', view.getCacheJSON())
def test_view_creation_with_fake_or_none_request(self): # LaunchpadView.__init__() does not crash with a FakeRequest. LaunchpadView(object(), FakeRequest()) # Or when no request at all is passed. LaunchpadView(object(), None)
def test_related_feature_info__default(self): # By default, LaunchpadView.related_feature_info is empty. request = LaunchpadTestRequest() view = LaunchpadView(object(), request) self.assertEqual(0, len(view.related_feature_info))
def render(self): if self.context.currentBatch(): return LaunchpadView.render(self) return u""