Beispiel #1
0
    def test_max(self):
        #Tests that the max run for A/B tests is working
        for i in xrange(0, 5):
            self.assertTrue(flipper.is_active('max'))
            LocalStoreMiddleware.local.clear()

        self.assertFalse(flipper.is_active('max'))
Beispiel #2
0
    def test_random(self, randrange):
        #Tests that the random flag is working correctly
        randrange.return_value = 1
        self.assertTrue(flipper.is_active('ab_random'))

        LocalStoreMiddleware.local.clear()
        randrange.return_value = 0
        self.assertFalse(flipper.is_active('ab_random'))
Beispiel #3
0
    def test_end(self):
        """Tests that the end datetime for A/B tests is working"""
        now = datetime.datetime.now()
        self.backend.update('end_passed', dict(name='end_passed', enabled=True, b_test_end=now-datetime.timedelta(days=1)))
        self.backend.update('end_tomorrow', dict(name='end_tomorrow', enabled=True, b_test_end=now+datetime.timedelta(days=1)))

        self.assertTrue(flipper.is_active('end_tomorrow'))
        self.assertFalse(flipper.is_active('end_passed'))
Beispiel #4
0
    def test_end(self):
        #Tests that the end datetime for A/B tests is working
        now = datetime.datetime.now()
        FeatureFlag.objects.create(name='end_passed', enabled=True, b_test_end=now-datetime.timedelta(days=1))
        FeatureFlag.objects.create(name='end_tomorrow', enabled=True, b_test_end=now+datetime.timedelta(days=1))

        self.assertTrue(flipper.is_active('end_tomorrow'))
        self.assertFalse(flipper.is_active('end_passed'))
Beispiel #5
0
 def test_registered(self):
     #Tests the registered user only flags
     req = self._fake_request()
     req.user = User.objects.get(username='******')
     #registered user
     self.assertTrue(flipper.is_active("registered_only", request=req))
     #anonymous user
     req.user = AnonymousUser()
     self.assertFalse(flipper.is_active("registered_only", request=req))
Beispiel #6
0
    def test_enabled_custom_flag(self):
        #base test
        self.assertTrue(flipper.is_active("enabled"))
        flipper.register_check('enabled', lambda x, **kwargs: True)
        flipper.register_check('disabled', lambda x, **kwargs: True)
        self.assertTrue(flipper.is_active('enabled'))
        self.assertFalse(flipper.is_active('disabled'))


        flipper.register_check('enabled', lambda x, **kwargs: False)
        self.assertFalse(flipper.is_active('enabled'))
Beispiel #7
0
 def test_cookies_being_retrieved_properly(self):
     #Verify that cookies are being retrieved properly
     cookie_prefix = getattr(settings, 'DOLPHIN_COOKIE', 'dolphin_%s')
     cookie = cookie_prefix % 'cookie_flag'
     FeatureFlag.objects.create(name='cookie_flag', enabled=True, cookie_max_age=self.one_hour_later)
     req = self._fake_request()
     #Cookie values are the 2nd ones checked after overrides in the is active function.
     #When cookies are found in the request object, they will be used.
     req.COOKIES = {cookie: False}
     self.assertFalse(flipper.is_active('cookie_flag', request=req))
     req.COOKIES = {cookie: True}
     self.assertTrue(flipper.is_active('cookie_flag', request=req))
Beispiel #8
0
    def test_users(self):
        #Tests the user specific flags
        req = self._fake_request()
        user = User.objects.get(username='******')
        req.user = user
        self.assertTrue(flipper.is_active('selected_group', request=req))

        req.user = AnonymousUser()
        self.assertFalse(flipper.is_active('users', request=req))

        req.user = User.objects.get(username='******')
        self.assertFalse(flipper.is_active('users', request=req))
Beispiel #9
0
    def test_random_percent(self, uniform):
        #Tests that the feature is active for random percentages
        req = self._fake_request()
        FeatureFlag.objects.create(name='ab_percent', enabled=True, percent=50)
        uniform.return_value = 1
        #Need a request object to store the flag cookie
        self.assertTrue(flipper.is_active('ab_percent'))

        LocalStoreMiddleware.local.clear()

        uniform.return_value = 51
        #Need a request object to store the cookie
        self.assertFalse(flipper.is_active('ab_percent'))
Beispiel #10
0
 def test_staff(self):
     #Tests the staff only flags
     settings.DOLPHIN_STORE_FLAGS=False
     req = self._fake_request()
     req.user = User.objects.get(username='******')
     #registered user
     self.assertFalse(flipper.is_active("staff_only", request=req))
     #anonymous user
     req.user = AnonymousUser()
     self.assertFalse(flipper.is_active("staff_only", request=req))
     #staff user
     req.user = User.objects.get(username="******")
     self.assertTrue(flipper.is_active("staff_only", request=req))
Beispiel #11
0
    def test_disable_for_site(self):
        #Tests that the feature is inactive for the sites specified
        site = Site.objects.get_current()
        flag = FeatureFlag.objects.create(name='disabled_test', enabled=True)
 
        # disable_for_sites without any sites should be active
        flag.disable_for_sites = True
        flag.save()
        self.assertTrue(flipper.is_active('disabled_test'))
 
        LocalStoreMiddleware.local.clear()

        # now add the current site, it should be inactive
        flag.sites.add(site)
        self.assertFalse(flipper.is_active('disabled_test'))
Beispiel #12
0
 def test_cookies_in_local_store(self):
     #Verify that cookies are being stored in dolphin's local store correctly
     FeatureFlag.objects.create(name='cookie_flag', enabled=True, cookie_max_age=self.one_hour_later)
     cookie_prefix = getattr(settings, 'DOLPHIN_COOKIE', 'dolphin_%s')
     cookie = cookie_prefix % 'cookie_flag'
     is_active = flipper.is_active('cookie_flag')
     self.assertEqual(LocalStoreMiddleware.local.get('dolphin_cookies')[cookie][0], is_active)
Beispiel #13
0
 def test_create_missing(self):
     settings.DOLPHIN_AUTOCREATE_MISSING = True
     self.assertFalse(flipper.is_active('missing'))
     backend = flipper.backend._get_backend()
     val = backend.hgetall('missing')
     self.assertEquals(val['enabled'], 'False')
     self.assertEquals(val['name'], 'missing')
     settings.DOLPHIN_AUTOCREATE_MISSING = False
Beispiel #14
0
    def test_enable_for_sites(self):
        #Tests that the feature is active for only the enabled sites
        site = Site.objects.get_current()
        flag = FeatureFlag.objects.create(name='enable_test', enabled=True)
 
        # with enable_for_sites set to false it should be active
        self.assertTrue(flipper.is_active('enable_test'))

        LocalStoreMiddleware.local.clear()

        # set enable_for_sites to true without any sites should be inactive
        flag.enable_for_sites = True
        flag.save()
        self.assertFalse(flipper.is_active('enable_test'))
 
        LocalStoreMiddleware.local.clear()

        # now add the current site, it should be active
        flag.sites.add(site)
        self.assertTrue(flipper.is_active('enable_test'))
Beispiel #15
0
    def test_random(self, randrange):
        """Tests that the random flag is working correctly"""
        c = Client()
        randrange.return_value = 1
        resp = c.get('/flag_is_active/ab_random/')
        self.assertEquals(resp.content, "True")

        LocalStoreMiddleware.local.clear()
        randrange.return_value = 0
        self.assertFalse(flipper.is_active('ab_random'))
        resp = c.get('/flag_is_active/ab_random/')
        self.assertEquals(resp.content, "True")
Beispiel #16
0
    def test_regional_flag(self):
        try:
            from django.contrib.gis.utils import geoip
            if hasattr(geoip,'HAS_GEOIP') and not geoip.HAS_GEOIP:
                return self.skipTest('GIS not installed. Skipping GeoIPTest')
        except Exception:
            return self.skipTest('GIS not installed. Skipping GeoIPTest')

        #Tests that the regional flag works properly for IP address detection and distance
        req = self._fake_request()
        req.META = {'REMOTE_ADDR':'4.2.2.2'}
        #within 100 miles of coord (69 or so)
        self.assertTrue(flipper.is_active('regional', request=req))

        req.META = {'REMOTE_ADDR':'0.0.0.0'}
        self.assertFalse(flipper.is_active('regional', request=req))

        req.META = {'REMOTE_ADDR':'74.125.227.39'}
        #not within 100 miles of coord
        self.assertFalse(flipper.is_active('regional', request=req))

        req.META = {'REMOTE_ADDR':'4.2.2.2'}
        #not within 5 miles of coord
        self.assertFalse(flipper.is_active('regional_5', request=req))
Beispiel #17
0
    def render(self, context):
        key = self.key.resolve(context, True)
        args = []
        kwargs = {}
        for arg in self.other_args:
            #resolve other_args
            arg = arg.resolve(context, True)
            if '=' in arg:
                k, v = arg.split('=')
                kwargs[k] = v
            else:
                args.append(arg)

        if flipper.is_active(key, *args, **kwargs):
            return self.nodelist_true.render(context)
        return self.nodelist_false.render(context)
Beispiel #18
0
def is_active(request, slug):
    return HttpResponse(str(flipper.is_active(slug)))
Beispiel #19
0
 def test_redis_fixture(self):
     self.assertTrue(flipper.is_active('enabled'))
Beispiel #20
0
 def test_is_active(self):
     self.assertTrue(flipper.is_active("enabled"))
     self.assertFalse(flipper.is_active("disabled"))
     self.assertFalse(flipper.is_active("missing"))
Beispiel #21
0
 def test_create_missing(self):
     settings.DOLPHIN_AUTOCREATE_MISSING = True
     self.assertFalse(flipper.is_active('missing'))
     self.assertTrue(FeatureFlag.objects.filter(name='missing').exists())
     settings.DOLPHIN_AUTOCREATE_MISSING = False
Beispiel #22
0
 def test_0_percent(self):
     #Tests that the feature is not active for when the percent value is set to 0
     FeatureFlag.objects.create(name='ab_percent', enabled=True, percent=0)
     self.assertFalse(flipper.is_active('ab_percent'))
Beispiel #23
0
 def test_100_percent(self):
     #Tests that the feature is active when the percent is set to 100
     FeatureFlag.objects.create(name='ab_percent', enabled=True, percent=100)
     self.assertTrue(flipper.is_active('ab_percent'))
Beispiel #24
0
 def test_set_active(self):
     with set_active("test_flag", True):
         self.assertTrue(flipper.is_active('test_flag'))
     self.assertFalse(flipper.is_active('test_flag'))