Exemplo n.º 1
0
 def verify_auth_token(self, token):
     s = Serializer(os.environ.get('APP_SECRET_KEY'))
     try:
         data = s.loads(token)
     except (BadSignature, SignatureExpired):
         return None
     return User.objects(pk=data['id']).first()
Exemplo n.º 2
0
 def login(self, user_name, user_psw, remember_me):
     user_name = user_name.lower()
     user = User.objects(username=user_name).first()
     if user and pbkdf2_sha256.verify(user_psw, user.password):
         login_user(user, remember=remember_me)
         return True
     return False
Exemplo n.º 3
0
 def test_patch_dispositivos_sem_login(self):
     user = User.objects(username="******").first()
     actual = self.app.patch("/v1/usuarios/dispositivos/14",
                             data=json.dumps({"active": False}),
                             content_type='application/json')
     actual_data = json.loads(actual.data.decode("utf-8"))
     self.assertEqual(actual.status_code, 401)
     self.assertIn("message", actual_data)
Exemplo n.º 4
0
 def test_get_dispositivos_sucesso(self):
     login_header = login_api(self.app, "test", "123")
     user = User.objects(username="******").first()
     actual = self.app.get("/v1/usuarios/dispositivos",
                           headers=login_header)
     actual_data = json.loads(actual.data.decode("utf-8"))
     self.assertEqual(actual.status_code, 200)
     self.assertIn("dispositivo", str(actual_data))
     self.assertIn("---token---", str(actual_data))
Exemplo n.º 5
0
 def obter_minhas_inscricoes(self, email):
     user = User.objects(email=email)
     if not (user):
         raise UserDoesNotExist()
     inscricoes = user.first().inscricoes
     if inscricoes:
         return inscricoes.parlamentares, inscricoes.intervalo
     else:
         return [], 7
Exemplo n.º 6
0
 def test_delete_dispositivos_sucesso(self):
     login_header = login_api(self.app, "test", "123")
     user = User.objects(username="******").first()
     actual = self.app.delete("/v1/usuarios/dispositivos/14",
                              headers=login_header)
     actual_data = json.loads(actual.data.decode("utf-8"))
     self.assertEqual(actual.status_code, 200)
     self.assertEqual("Apagado", actual_data["message"])
     self.assertEqual(len(user.reload().devices), 0)
Exemplo n.º 7
0
 def test_patch_dispositivos_dispositivo_inexistente(self):
     login_header = login_api(self.app, "test", "123")
     user = User.objects(username="******").first()
     actual = self.app.patch("/v1/usuarios/dispositivos/124578",
                             data=json.dumps({"active": False}),
                             content_type='application/json',
                             headers=login_header)
     actual_data = json.loads(actual.data.decode("utf-8"))
     self.assertEqual(actual.status_code, 400)
     self.assertEqual("Dispositivo não existe", actual_data["message"])
Exemplo n.º 8
0
 def test_patch_dispositivos_parametro_invalido(self):
     login_header = login_api(self.app, "test", "123")
     user = User.objects(username="******").first()
     actual = self.app.patch("/v1/usuarios/dispositivos/14",
                             data=json.dumps({"active": "invalido"}),
                             content_type='application/json',
                             headers=login_header)
     actual_data = json.loads(actual.data.decode("utf-8"))
     self.assertEqual(actual.status_code, 400)
     self.assertIn("message", actual_data)
Exemplo n.º 9
0
    def test_alterar_configs_invalida(self):
        User(username='******',
             password='******',
             email='*****@*****.**',
             inscricoes=Inscricoes(intervalo=7, parlamentares=[])).save()

        Inscricao().alterar_configs(30, '*****@*****.**')

        self.assertEqual(
            User.objects(username='******').first().inscricoes.intervalo, 7)
Exemplo n.º 10
0
 def test_patch_dispositivos_parametro_inexistente(self):
     login_header = login_api(self.app, "test", "123")
     user = User.objects(username="******").first()
     actual = self.app.patch("/v1/usuarios/dispositivos/14",
                             data=json.dumps({"naoexisto": True}),
                             content_type='application/json',
                             headers=login_header)
     actual_data = json.loads(actual.data.decode("utf-8"))
     self.assertEqual(actual.status_code, 200)
     self.assertIn("message", actual_data)
     self.assertNotIn("naoexisto", user.reload().devices[0].to_json())
Exemplo n.º 11
0
    def test_nova_inscricao_primeira_inscricao(self, mock_obter_parlamentar):
        warnings.simplefilter("ignore")
        mock_obter_parlamentar.return_value = self.parlamentar1
        User(username='******', password='******', email='*****@*****.**').save()

        Inscricao().nova_inscricao(self.parlamentar1.cargo,
                                   self.parlamentar1.id, '*****@*****.**')

        self.assertEqual(
            User.objects(username='******').first().inscricoes,
            Inscricoes(intervalo=7, parlamentares=[self.parlamentar1]))
Exemplo n.º 12
0
 def test_patch_dispositivos_sucesso(self):
     login_header = login_api(self.app, "test", "123")
     user = User.objects(username="******").first()
     actual = self.app.patch("/v1/usuarios/dispositivos/14",
                             data=json.dumps({"active": False}),
                             content_type='application/json',
                             headers=login_header)
     actual_data = json.loads(actual.data.decode("utf-8"))
     self.assertEqual(actual.status_code, 200)
     self.assertEqual("Ok", actual_data["message"])
     self.assertFalse(user.reload().devices[0].active)
Exemplo n.º 13
0
 def test_post_dispositivos_sem_login(self):
     user_id = User.objects(username="******").first().pk
     actual = self.app.post("/v1/usuarios/dispositivos".format(user_id),
                            data=json.dumps({
                                "uuid": "1414",
                                "token": "---token2---",
                                "name": "outro_dispositivo",
                                "os": "iOS"
                            }),
                            content_type='application/json')
     actual_data = json.loads(actual.data.decode("utf-8"))
     self.assertEqual(actual.status_code, 401)
     self.assertIn("message", actual_data)
Exemplo n.º 14
0
 def test_post_dispositivos_faltando_parametros_obrigatorios(self):
     login_header = login_api(self.app, "test", "123")
     user_id = User.objects(username="******").first().pk
     actual = self.app.post("/v1/usuarios/dispositivos".format(user_id),
                            data=json.dumps({
                                "uuid": "1414",
                                "token": "---token2---",
                            }),
                            content_type='application/json',
                            headers=login_header)
     actual_data = json.loads(actual.data.decode("utf-8"))
     self.assertEqual(actual.status_code, 400)
     self.assertIn("message", actual_data)
Exemplo n.º 15
0
 def obter_todas_inscricoes_para_processar(self, data_final=datetime.now()):
     inscricoes = []
     numero_semana = int(data_final.strftime("%V"))
     for user in User.objects():
         if user.inscricoes and user.inscricoes.parlamentares != []:
             inscricao = user.inscricoes
             if (numero_semana % (inscricao.intervalo / 7) != 0):
                 logging.info(
                     "Pulando {} (intervalo de inscricao: {})".format(
                         user.username, inscricao.intervalo))
             else:
                 inscricoes.append(user)
     return inscricoes
Exemplo n.º 16
0
    def test_remover_inscricao(self):
        User(username='******',
             password='******',
             email='*****@*****.**',
             inscricoes=Inscricoes(intervalo=14,
                                   parlamentares=[self.parlamentar2])).save()

        Inscricao().remover_inscricao(self.parlamentar2.cargo,
                                      self.parlamentar2.id, '*****@*****.**')

        self.assertEqual(
            User.objects(username='******').first().inscricoes,
            Inscricoes(intervalo=14, parlamentares=[]))
Exemplo n.º 17
0
 def nova_inscricao(self, cargo, parlamentar_id, email):
     user = User.objects(email=email)
     if not (user):
         raise UserDoesNotExist()
     user = user.first()
     parlamentar = obter_parlamentar(cargo, parlamentar_id)
     inscricoes = user.inscricoes
     if inscricoes:
         user.inscricoes.parlamentares.append(parlamentar)
         user.save()
     else:
         inscricao = Inscricoes(parlamentares=[parlamentar], intervalo=7)
         user.inscricoes = inscricao
         user.save()
Exemplo n.º 18
0
 def test_post_dispositivos_dispositivo_com_mesmo_uuid_existente(self):
     login_header = login_api(self.app, "test", "123")
     user = User.objects(username="******").first()
     actual = self.app.post("/v1/usuarios/dispositivos",
                            data=json.dumps({
                                "uuid": "14",
                                "token": "---token2---",
                                "name": "outro_dispositivo",
                                "os": "iOS"
                            }),
                            content_type='application/json',
                            headers=login_header)
     actual_data = json.loads(actual.data.decode("utf-8"))
     self.assertEqual(actual.status_code, 422)
     self.assertEqual("Dispositivo já existe", actual_data["message"])
     self.assertEqual(len(user.reload().devices), 1)
Exemplo n.º 19
0
    def test_apagar_dispositivo(self):
        device1 = UserDevice(id="1",
                             token="---token1---",
                             active=False,
                             name="Dispositivo1",
                             os="Android 14")
        device2 = UserDevice(id="2",
                             token="---token2---",
                             name="Dispositivo2",
                             os="Android 14")
        user = User(username="******",
                    email="*****@*****.**",
                    password="******",
                    devices=[device1, device2]).save()

        Dispositivo().apagar_dispositivo(user.id, device1.id)

        self.assertEqual(User.objects(pk=user.id).first().devices, [device2])
Exemplo n.º 20
0
    def test_adicionar_dispositivo_sucesso(self):
        user = User(username="******", email="*****@*****.**",
                    password="******").save()

        Dispositivo().adicionar_dispostivo(user_id=user.id,
                                           uuid="123",
                                           token="---token---",
                                           name="nome",
                                           os="os")

        self.assertEqual(
            User.objects(pk=user.id).first().devices, [
                UserDevice(id="123",
                           token="---token---",
                           active=True,
                           name="nome",
                           os="os")
            ])
Exemplo n.º 21
0
    def test_atualizar_dispositivo_sucesso(self):
        device = UserDevice(id="14",
                            token="---token---",
                            name="Dispositivo",
                            os="Android 14")
        user = User(username="******",
                    email="*****@*****.**",
                    password="******",
                    devices=[device]).save()

        Dispositivo().atualizar_dispositivo(user.id, device.id, active=False)

        self.assertEqual(
            User.objects(pk=user.id).first().devices, [
                UserDevice(id="14",
                           token="---token---",
                           active=False,
                           name="Dispositivo",
                           os="Android 14")
            ])
Exemplo n.º 22
0
    def test_atualizar_dispositivo_parametros_invalidos(self):
        device = UserDevice(id="14",
                            token="---token---",
                            name="Dispositivo",
                            os="Android 14")
        user = User(username="******",
                    email="*****@*****.**",
                    password="******",
                    devices=[device]).save()

        Dispositivo().atualizar_dispositivo(user.id,
                                            device.id,
                                            nao_existo=True)

        self.assertEqual(
            User.objects(pk=user.id).first().devices, [
                UserDevice(
                    id="14",
                    token="---token---",
                    name="Dispositivo",
                    os="Android 14",
                )
            ])
Exemplo n.º 23
0
 def test_get_dispositivos_sem_login(self):
     user_id = User.objects(username="******").first().pk
     actual = self.app.get("/v1/usuarios/dispositivos".format(user_id))
     actual_data = json.loads(actual.data.decode("utf-8"))
     self.assertEqual(actual.status_code, 401)
     self.assertIn("message", actual_data)
Exemplo n.º 24
0
 def _obter_usuario(self, user_id):
     try:
         user = User.objects(pk=user_id).first()
         return user if user.pk else None
     except (ValidationError, AttributeError):
         raise UserDoesNotExist()
Exemplo n.º 25
0
 def remover_inscricao(self, cargo, parlamentar_id, email):
     User.objects(email=email).update_one(pull__inscricoes__parlamentares={
         'cargo': cargo,
         'id': parlamentar_id
     })
Exemplo n.º 26
0
 def alterar_configs(self, periodo, email):
     if periodo in [7, 14, 21, 28]:
         User.objects(email=email).update_one(
             set__inscricoes__intervalo=periodo)
Exemplo n.º 27
0
    def test_registrar_sucesso(self):
        Usuario().registrar('user', '1234', '1234', '*****@*****.**')

        expected = User.objects(username='******').first()
        self.assertEqual(expected.email, '*****@*****.**')
Exemplo n.º 28
0
 def test_delete_dispositivos_sem_login(self):
     user = User.objects(username="******").first()
     actual = self.app.delete("/v1/usuarios/dispositivos/14")
     actual_data = json.loads(actual.data.decode("utf-8"))
     self.assertEqual(actual.status_code, 401)
     self.assertIn("message", actual_data)
Exemplo n.º 29
0
 def obter_por_id(self, id):
     return User.objects(pk=id).first()