Пример #1
0
    def test_ab_current_experiments_dnt(self):
        """Check if calculating current experiments respects DNT"""
        cookie = 'exp=ui-change-v1; Path=/'
        with webcompat.app.test_request_context('/',
                                                method='GET',
                                                environ_base={
                                                    'HTTP_COOKIE': cookie,
                                                    'HTTP_DNT': '1'
                                                }):

            user = mock.Mock()
            user.user_id = 'user_id'
            flask.g.user = user

            webcompat.app.config['AB_EXPERIMENTS'] = {
                'exp': {
                    'variations': {
                        'ui-change-v1': (0, 100)
                    },
                    'max-age': 86400
                }
            }

            c = ab_current_experiments()
            self.assertEqual(c, {})
Пример #2
0
    def test_ab_current_experiments_selector(self):
        """Check if current experiments selects the expected variations"""
        with webcompat.app.test_request_context('/', method='GET'):

            user = mock.Mock()
            user.user_id = 'user_id'
            flask.g.user = user

            webcompat.app.config['AB_EXPERIMENTS'] = {
                'exp-1': {
                    'variations': {
                        'ui-change-v1': (0, 20),
                        'ui-change-v2': (20, 60),
                        'ui-change-v3': (60, 100)
                    },
                    'max-age': 604800
                },
                'exp-2': {
                    'variations': {
                        'backend-change-v1': (0, 50),
                        'novariation': (50, 100)
                    },
                    'max-age': 86400
                }
            }

            with mock.patch('webcompat.helpers.random.random') as mock_random:
                mock_random.return_value = 0.4
                expected_experiments = {
                    'exp-1': 'ui-change-v2',
                    'exp-2': 'backend-change-v1'
                }
                self.assertEqual(ab_current_experiments(),
                                 expected_experiments)
Пример #3
0
def before_request():
    """Set parameters in g before each request."""
    g.user = None
    if 'user_id' in session:
        g.user = User.query.get(session['user_id'])
    g.referer = get_referer(request) or url_for('index')
    g.request_headers = request.headers
    request.nonce = secrets.token_hex(20)

    # Set AB testing values
    g.current_experiments = ab_current_experiments()