コード例 #1
0
def test_listar_usuario(sessao):
    usuarios = [
        Usuario(nome='Ernani', email='*****@*****.**'),
        Usuario(nome='Rose', email='*****@*****.**')
    ]
    for usuario in usuarios:
        sessao.salvar(usuario)
    assert usuarios == sessao.listar()
コード例 #2
0
    def get_usuario_segun_nombre_usuario(username) -> dict:
        usuario = {}
        access_token = get_access_token()

        # Más información sobre los datos recibidos en
        # https://developer.twitter.com/en/docs/twitter-api/users/lookup/api-reference/get-users-by-username-username
        respuesta = requests.get(
            '{}/2/users/by/username/{}?user.fields=created_at,description,entities,id,location,name,public_metrics,url,username'
            .format(os.getenv('API_TWITTER_URL'), username),
            headers={'Authorization': 'Bearer {}'.format(access_token)})
        # Ejemplo del campo 'data'
        # {
        #     'id': '197103453',
        #     'username': '******',
        #     'name': 'Sergi del Moral',
        #     'public_metrics': {
        #         'followers_count': 6850, 'following_count': 1060, 'tweet_count': 17391, 'listed_count': 218
        #         }
        # }
        data = HttpResponse.get_campo_data(respuesta)
        usuario = Usuario(data['id'], data['username'], data['name'],
                          data['public_metrics']['followers_count'],
                          data['public_metrics']['following_count'],
                          data['description'], data['url'], data['location'])
        return usuario.__dict__
コード例 #3
0
def test_parametros_de_spam(sessao):
    usuario = Usuario(nome='Ernani', email='*****@*****.**')
    sessao.salvar(usuario)
    enviador = Mock()
    enviador_de_spam = EnviadorDeSpam(sessao, enviador)
    enviador_de_spam.enviar_emails('*****@*****.**',
                                   'Teste envio de spam do PythonPro',
                                   'Se recebeu, funciona!!')
    enviador.enviar.assert_called_once_with(
        '*****@*****.**', '*****@*****.**',
        'Teste envio de spam do PythonPro', 'Se recebeu, funciona!!')
コード例 #4
0
    def get_perfiles_usuarios_segun_nombre_usuario(nombres_usuarios) -> list:
        if type(nombres_usuarios) != list or len(nombres_usuarios) == 0:
            raise ValueError(
                'Argumento nombre_usuarios={} es incorrecto'.format(
                    nombres_usuarios))

        usuarios = []

        access_token = get_access_token()

        # Si hay más de 100 usuarios, haremos grupos de 100 debido a que la API de Twitter
        # no premite ,ás de 100 usuarios por request.
        # Arrondeamos el número, eg: si 175/100=1.75, se convierte en 2 veces; si 65/100=0.65, se convierte en 1 vez.
        veces_numero_cien = math.ceil(len(nombres_usuarios) / 100)
        inici = 0
        final = 100
        for _ in range(veces_numero_cien):
            nombres_usuarios_agrupados = ','.join(
                nombres_usuarios[inici:final])
            inici += 100
            final += 100

            # Más información sobre los datos recibidos en
            # https://developer.twitter.com/en/docs/twitter-api/users/lookup/api-reference/get-users-by-username-username
            respuesta = requests.get(
                '{}/2/users/by?usernames={}&user.fields=created_at,description,entities,id,location,name,public_metrics,url,username'
                .format(os.getenv('API_TWITTER_URL'),
                        nombres_usuarios_agrupados),
                headers={'Authorization': 'Bearer {}'.format(access_token)})
            # Ejemplo de los datos
            # [{
            #     'id': '197103453',
            #     'username': '******',
            #     'name': 'Sergi del Moral',
            #     'public_metrics': {
            #         'followers_count': 6850, 'following_count': 1060, 'tweet_count': 17391, 'listed_count': 218
            #         }
            # }]
            data = HttpResponse.get_campo_data(respuesta)

            for usuario in data:
                usuario = Usuario(usuario['id'], usuario['username'],
                                  usuario['name'],
                                  usuario['public_metrics']['followers_count'],
                                  usuario['public_metrics']['following_count'],
                                  usuario['description'], usuario['url'],
                                  usuario['location'])
                usuarios.append(usuario.__dict__)

        return usuarios
コード例 #5
0
def test_salvar_usuario(sessao):
    usuario = Usuario(nome='Ernani', email='*****@*****.**')
    sessao.salvar(usuario)
    assert isinstance(usuario.id, int)
コード例 #6
0
from unittest import mock
from unittest.mock import Mock

import pytest

from main import EnviadorDeSpam
from modelos import Usuario
from spam.enviador_de_email import Enviador


@pytest.mark.parametrize("usuarios", [[
    Usuario(nome='Ernani', email='*****@*****.**'),
    Usuario(nome='Rose', email='*****@*****.**')
], [Usuario(nome='Ernani', email='*****@*****.**')]])
def test_quantidade_de_spam(sessao, usuarios):
    for usuario in usuarios:
        sessao.salvar(usuario)
    enviador = Mock()
    enviador_de_spam = EnviadorDeSpam(sessao, enviador)
    enviador_de_spam.enviar_emails('*****@*****.**',
                                   'Teste envio de spam do PythonPro',
                                   'Se recebeu, funciona!!')
    assert len(usuarios) == enviador.enviar.call_count


def test_parametros_de_spam(sessao):
    usuario = Usuario(nome='Ernani', email='*****@*****.**')
    sessao.salvar(usuario)
    enviador = Mock()
    enviador_de_spam = EnviadorDeSpam(sessao, enviador)
    enviador_de_spam.enviar_emails('*****@*****.**',