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())
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
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())
def update_slow_metrics(): uctrl = UserController() USER.labels(status='any').set(uctrl.read().count()) USER.labels(status='active').set(uctrl.list_active().count())