Ejemplo n.º 1
0
def update_slow_metrics():
    uctrl = UserController()
    USER.labels(status='any').set(uctrl.read().count())
    threshold_connection = utc_now() - timedelta(days=conf.feed.stop_fetch)
    threshold_created = utc_now() - timedelta(days=conf.feed.stop_fetch + 1)
    active = uctrl.read(is_active=True,
                        last_connection__ge=threshold_connection)
    USER.labels(status='active').set(active.count())
    long_term = uctrl.read(is_active=True,
                           last_connection__ge=threshold_connection,
                           date_created__lt=threshold_created)
    USER.labels(status='long_term').set(long_term.count())
Ejemplo n.º 2
0
    def process_ids(cls, social_id, username, email):  # pragma: no cover

        labels = {"method": "get", "uri": "/oauth/callback/" + cls.provider}
        if social_id is None:
            SERVER.labels(result="4XX", **labels).inc()
            raise UnprocessableEntity('No social id, authentication failed')
        ucontr = UserController()
        try:
            user = ucontr.get(**{'%s_identity' % cls.provider: social_id})
        except NotFound:
            user = None
        if not user and not conf.oauth.allow_signup:
            SERVER.labels(result="4XX", **labels).inc()
            raise BadRequest('Account creation is not allowed through OAuth.')
        if not user:
            if username and not ucontr.read(login=username).count():
                login = username
            else:
                login = '******' % (cls.provider, username or social_id)
            user = ucontr.create(
                **{
                    '%s_identity' % cls.provider: social_id,
                    'login': login,
                    'email': email
                })
        jwt_ext = current_app.extensions['jwt']
        access_token = jwt_ext.jwt_encode_callback(user).decode('utf8')
        SERVER.labels(result="2XX", **labels).inc()
        return {
            "access_token":
            "%s %s" % (conf.auth.jwt_header_prefix, access_token)
        }, 200
Ejemplo n.º 3
0
class UserTest(JarrFlaskCommon):
    def setUp(self):
        super().setUp()
        login = '******'
        self.user = UserController().get(login=login)
        self.user2 = UserController().get(login='******')
        self.uctrl = UserController()

    def test_UserResource_get(self):
        resp = self.jarr_client('get', 'user', headers=None)
        self.assertStatusCode(401, resp)
        resp = self.jarr_client('get', 'user', user=self.user.login)
        self.assertStatusCode(200, resp)
        self.assertEqual(resp.json['login'], self.user.login)
        self.assertFalse('password' in resp.json)
        resp = self.jarr_client('get', 'user', user=self.user2.login)
        self.assertStatusCode(200, resp)
        self.assertEqual(resp.json['login'], self.user2.login)
        self.assertFalse('password' in resp.json)

    def test_UserResource_put(self):
        headers = {
            'Authorization': self.get_token_for(self.user2.login),
            'Content-Type': 'application/json'
        }
        old_password = self.user2.password

        data = {'email': 'not an email', 'cluster_wake_up': True}
        resp = self.jarr_client('put', 'user', data=data, headers=headers)
        self.assertStatusCode(200, resp)
        user2 = self.uctrl.get(id=self.user2.id)
        self.assertEqual(user2.email, 'not an email')
        self.assertTrue(user2.cluster_wake_up)
        self.assertEqual(old_password, user2.password)

        data = {'password': '******'}
        resp = self.jarr_client('put', 'user', data=data, headers=headers)
        self.assertStatusCode(200, resp)
        updated_user = self.uctrl.get(id=self.user2.id)
        self.assertNotEqual(data['password'], updated_user.password)
        self.assertNotEqual(old_password, updated_user.password)
        self.assertTrue(updated_user.cluster_wake_up)

        data = {'login': self.user.login}
        resp = self.jarr_client('put', 'user', data=data, headers=headers)
        self.assertStatusCode(400, resp)

    def test_UserResource_delete(self):
        headers = {'Authorization': self.get_token_for(self.user2.login)}
        resp = self.jarr_client('delete', 'user', headers=headers)
        self.assertStatusCode(204, resp)
        resp = self.jarr_client('get', 'user', headers=headers)
        self.assertStatusCode(404, resp)
        self.assertIsNone(self.uctrl.read(id=self.user2.id).first())
Ejemplo n.º 4
0
def update_slow_metrics():
    uctrl = UserController()
    USER.labels(status='any').set(uctrl.read().count())
    USER.labels(status='active').set(uctrl.list_active().count())