def testdata(createdb):
    """
    Create the necessary test data for this module.
    :param models.db createdb: pytest fixture for database module
    :return list(str): List of tokens for ForgotPasswordTokens created.
    """
    createdb.connect()
    tokens = []
    data = ({
        'full_name': 'df8df1a4 11162dcd40bb',
        'email': '[email protected]',
        'password': '******'
    }, {
        'full_name': '61c12783 784c62ee9e56',
        'email': '[email protected]',
        'password': '******'
    }, {
        'full_name': '8e75abf5 4ab60edd1e23',
        'email': '[email protected]',
        'password': '******'
    })
    for record in data:
        profile = profiles.Profiles(full_name=record['full_name'],
                                    email=record['email'])
        login = logins.Logins(password=record['password'], profile=profile)
        token = fpt.ForgotPasswordTokens(login=login)
        createdb.add(token)
        tokens.append(token.token)

    createdb.commit()
    createdb.close()
    return tokens
def test_required_login_missing(dbsession):
    """
    Tokens without a login relationship should error.
    :param sqlalchemy.orm.session.Session dbsession: pytest fixture for database session
    """
    token = fpt.ForgotPasswordTokens()
    token.save()
    assert token.login_id is None

    with pytest.raises(IntegrityError):
        dbsession.commit()
def test_required_login(dbsession):
    """
    Tokens must have a login relation (which must have a profile relation).
    :param sqlalchemy.orm.session.Session dbsession: pytest fixture for database session
    """
    profile = profiles.Profiles(full_name='f4e074b5 15503d6feef0',
                                email='[email protected]')
    login = logins.Logins(password='******',
                          profile=profile)
    token = fpt.ForgotPasswordTokens(login=login)
    token.save()
    assert token.login_id is None

    dbsession.commit()
    assert token.login == login
def test_get_by_token(dbsession):  # pylint: disable=unused-argument
    """
    Create ForgotPasswordTokens.
    :param sqlalchemy.orm.session.Session dbsession: pytest fixture for database session
    """
    profile = profiles.Profiles(full_name='7aad753a bf457864c212',
                                email='[email protected]')
    login = logins.Logins(password='******',
                          profile=profile)
    token = fpt.ForgotPasswordTokens(login=login)

    # Unsaved tokens shouldn't be found
    assert fpt.ForgotPasswordTokens.get_by_token(token.token) is None

    token.save()

    # Now it can be found.
    assert fpt.ForgotPasswordTokens.get_by_token(token.token) is token
def test_new_token_init():
    """ By default new tokens should default to a token and an expiration. """
    token = fpt.ForgotPasswordTokens()
    assert token.token
    assert token.expiration_dt