Beispiel #1
0
    def test_exclusions(self):
        condition_set = 'gargoyle.builtins.UserConditionSet(auth.user)'
        
        switch = Switch.objects.create(
            key='test',
            status=SELECTIVE,
        )
        switch = gargoyle['test']
        
        switch.add_condition(
            condition_set=condition_set,
            field_name='percent',
            condition='0-50',
            exclude=True,
        )
        switch.add_condition(
            condition_set=condition_set,
            field_name='username',
            condition='foo',
        )
        
        user = User(pk=5, username='******')
        self.assertFalse(gargoyle.is_active('test', user))

        user = User(pk=8771, username='******')
        self.assertTrue(gargoyle.is_active('test', user))
Beispiel #2
0
    def test_disable(self):
        switch = Switch.objects.create(key='test')
        
        switch = gargoyle['test']
        
        switch.status = DISABLED
        switch.save()

        self.assertFalse(gargoyle.is_active('test'))

        self.assertFalse(gargoyle.is_active('test', self.user))
Beispiel #3
0
    def test_global(self):
        condition_set = 'gargoyle.builtins.UserConditionSet(auth.user)'
        
        switch = Switch.objects.create(
            key='test',
            status=SELECTIVE,
        )
        switch = gargoyle['test']

        self.assertTrue(gargoyle.is_active('test'))
        self.assertTrue(gargoyle.is_active('test', self.user))
        
        switch.status = GLOBAL
        switch.save()

        self.assertTrue(gargoyle.is_active('test'))
        self.assertTrue(gargoyle.is_active('test', self.user))
Beispiel #4
0
    def test_anonymous_user(self):
        condition_set = 'gargoyle.builtins.UserConditionSet(auth.user)'

        switch = Switch.objects.create(key='test')
        
        switch = gargoyle['test']
        
        switch.status = SELECTIVE
        switch.save()
        
        user = AnonymousUser()

        self.assertTrue(gargoyle.is_active('test', user))

        switch.add_condition(
            condition_set=condition_set,
            field_name='percent',
            condition='1-10',
        )

        self.assertFalse(gargoyle.is_active('test', user))

        switch.clear_conditions(condition_set=condition_set)

        self.assertTrue(gargoyle.is_active('test', user))

        switch.add_condition(
            condition_set=condition_set,
            field_name='is_anonymous',
            condition='1',
        )

        self.assertTrue(gargoyle.is_active('test', user))

        switch.add_condition(
            condition_set=condition_set,
            field_name='percent',
            condition='1-10',
        )

        self.assertTrue(gargoyle.is_active('test', user))
Beispiel #5
0
    def test_user(self):
        condition_set = 'gargoyle.builtins.UserConditionSet(auth.user)'
        
        # we need a better API for this (model dict isnt cutting it)
        switch = Switch.objects.create(
            key='test',
            status=SELECTIVE,
        )
        switch = gargoyle['test']
        
        switch.add_condition(
            condition_set=condition_set,
            field_name='percent',
            condition='0-50',
        )

        user = User(pk=5)
        self.assertTrue(gargoyle.is_active('test', user))

        user = User(pk=8771)
        self.assertFalse(gargoyle.is_active('test', user))
Beispiel #6
0
    def test_expiration(self):
        switch = Switch.objects.create(key='test')
        
        switch = gargoyle['test']
        
        switch.status = DISABLED
        switch.save()

        self.assertFalse(gargoyle.is_active('test'))

        Switch.objects.filter(key='test').update(value={}, status=SELECTIVE)

        # cache shouldn't have expired
        self.assertFalse(gargoyle.is_active('test'))

        # in memory cache shouldnt have expired
        cache.delete(gargoyle.cache_key)
        self.assertFalse(gargoyle.is_active('test'))

        # any request should expire the in memory cache
        self.client.get('/')

        self.assertTrue(gargoyle.is_active('test'))
Beispiel #7
0
    def test_ip_address(self):
        condition_set = 'gargoyle.builtins.IPAddressConditionSet'
        
        switch = Switch.objects.create(
            key='test',
            status=SELECTIVE,
        )
        switch = gargoyle['test']


        request = HttpRequest()
        request.META['REMOTE_ADDR'] = '192.168.1.1'

        self.assertTrue(gargoyle.is_active('test', request))

        switch.add_condition(
            condition_set=condition_set,
            field_name='ip_address',
            condition='192.168.1.1',
        )

        self.assertTrue(gargoyle.is_active('test', request))

        switch.clear_conditions(condition_set=condition_set)
        switch.add_condition(
            condition_set=condition_set,
            field_name='ip_address',
            condition='127.0.0.1',
        )

        self.assertFalse(gargoyle.is_active('test', request))

        switch.clear_conditions(condition_set=condition_set)

        self.assertTrue(gargoyle.is_active('test', request))

        switch.add_condition(
            condition_set=condition_set,
            field_name='percent',
            condition='50-100',
        )

        self.assertTrue(gargoyle.is_active('test', request))
        
        switch.clear_conditions(condition_set=condition_set)
        switch.add_condition(
            condition_set=condition_set,
            field_name='percent',
            condition='0-50',
        )        
        self.assertFalse(gargoyle.is_active('test', request))
Beispiel #8
0
 def wrapped(request, *args, **kwargs):
     if not gargoyle.is_active(key, request):
         raise Http404('Switch \'%s\' is not active' % key)
     return func(request, *args, **kwargs)