예제 #1
0
def get_test_farm_instance():
    """Populates database with a farmOS testing farm
    This creates a farm object in the database with valid credentials
        for the settingsured farmOS testing instance.

    Returns: the test_farm object
    """
    # Remove existing farm from DB if it has the testing URL
    old_farm = crud.farm.get_by_url(db_session,
                                    farm_url=settings.TEST_FARM_URL)
    if old_farm is not None:
        crud.farm.delete(db_session, farm_id=old_farm.id)

    # Create test farm
    if settings.TEST_FARM_URL is not None:
        farm_in = FarmCreate(farm_name=settings.TEST_FARM_NAME,
                             url=settings.TEST_FARM_URL,
                             scope="user_access",
                             active=True)
    else:
        farm_in = FarmCreate(farm_name=settings.TEST_FARM_NAME,
                             url="http://localhost",
                             scope="user_access",
                             active=True)

    test_farm = crud.farm.create(db_session, farm_in=farm_in)
    return test_farm
예제 #2
0
def test_create_farm_cant_delete_token():
    """Ensure that the token cannot be removed when None is supplied."""

    farm_name = random_lower_string()
    url = random_lower_string()

    # Provide a token on creation
    token = {
        'access_token': random_lower_string(),
        'expires_in': random_lower_string(),
        'refresh_token': random_lower_string(),
        'expires_at': 1581363344.0651991,
    }

    farm_in = FarmCreate(
        farm_name=farm_name,
        url=url,
        scope='user_access',
        token=token,
    )
    farm = crud.farm.create(db_session, farm_in=farm_in)
    assert farm.farm_name == farm_name
    assert farm.url == url

    if settings.FARM_ACTIVE_AFTER_REGISTRATION:
        assert farm.active is True
    else:
        assert farm.active is False

    # Test that token was created
    assert farm.token is not None
    assert farm.token.access_token == token['access_token']
    assert float(farm.token.expires_at) == token['expires_at']
    assert farm.token.refresh_token == token['refresh_token']
    assert farm.token.expires_in == token['expires_in']

    farm_update = FarmUpdate(
        token=None,
    )
    farm = crud.farm.update(db_session, farm=farm, farm_in=farm_update)
    assert farm.farm_name == farm_name
    assert farm.url == url

    # Check that the token is unchanged.
    assert farm.token is not None
    assert farm.token.access_token == token['access_token']
    assert float(farm.token.expires_at) == token['expires_at']
    assert farm.token.refresh_token == token['refresh_token']
    assert farm.token.expires_in == token['expires_in']

    # Remove farm from DB
    crud.farm.delete(db_session, farm_id=farm.id)
    farm = crud.farm.get_by_id(db_session, farm_id=farm.id)
    assert farm is None
예제 #3
0
def test_create_delete_inactive_farm():
    """settingsure the active flag to False."""

    farm_name = random_lower_string()
    url = random_lower_string()
    farm_in = FarmCreate(
        farm_name=farm_name,
        url=url,
        active=False,
    )
    farm = crud.farm.create(db_session, farm_in=farm_in)
    assert farm.farm_name == farm_name
    assert farm.url == url
    assert farm.active is False

    # Remove farm from DB
    crud.farm.delete(db_session, farm_id=farm.id)
    farm = crud.farm.get_by_id(db_session, farm_id=farm.id)
    assert farm is None
예제 #4
0
def test_create_delete_default_farm_with_token():
    """Leave the active flag unset. Test form correct system default flag."""

    farm_name = random_lower_string()
    url = random_lower_string()

    # Provide a token on creation
    token = {
        'access_token': random_lower_string(),
        'expires_in': random_lower_string(),
        'refresh_token': random_lower_string(),
        'expires_at': 1581363344.0651991,
    }

    farm_in = FarmCreate(
        farm_name=farm_name,
        url=url,
        scope='user_access',
        token=token,
    )
    farm = crud.farm.create(db_session, farm_in=farm_in)
    assert farm.farm_name == farm_name
    assert farm.url == url

    if settings.FARM_ACTIVE_AFTER_REGISTRATION:
        assert farm.active is True
    else:
        assert farm.active is False

    # Test that token was created
    assert farm.token is not None
    assert farm.token.access_token == token['access_token']
    assert farm.token.expires_at ==str(token['expires_at'])
    assert farm.token.refresh_token == token['refresh_token']
    assert farm.token.expires_in == token['expires_in']

    # Remove farm from DB
    crud.farm.delete(db_session, farm_id=farm.id)
    farm = crud.farm.get_by_id(db_session, farm_id=farm.id)
    assert farm is None
예제 #5
0
def test_create_farm_update_token():
    """Update the token after farm is created."""

    farm_name = random_lower_string()
    url = random_lower_string()

    farm_in = FarmCreate(
        farm_name=farm_name,
        url=url,
    )
    farm = crud.farm.create(db_session, farm_in=farm_in)
    assert farm.farm_name == farm_name
    assert farm.url == url
    assert farm.token is None

    if settings.FARM_ACTIVE_AFTER_REGISTRATION:
        assert farm.active is True
    else:
        assert farm.active is False

    # Create a new token
    new_token = {
        'access_token': random_lower_string(),
        'expires_in': random_lower_string(),
        'refresh_token': random_lower_string(),
        'expires_at': 1581363344.0651991,
    }

    farm_update = FarmUpdate(token=new_token, )
    farm = crud.farm.update(db_session, farm=farm, farm_in=farm_update)
    assert farm.farm_name == farm_name
    assert farm.url == url

    # Test that token was created
    assert farm.token is not None
    assert farm.token.access_token == new_token['access_token']
    assert float(farm.token.expires_at) == new_token['expires_at']
    assert farm.token.refresh_token == new_token['refresh_token']
    assert farm.token.expires_in == new_token['expires_in']

    # Create a new token
    new_token = {
        'access_token': '',
        'expires_in': '',
        'refresh_token': '',
        'expires_at': None,
    }

    farm_update = FarmUpdate(token=new_token, )
    farm = crud.farm.update(db_session, farm=farm, farm_in=farm_update)
    assert farm.farm_name == farm_name
    assert farm.url == url

    # Test that token was created
    assert farm.token is not None
    assert farm.token.access_token == new_token['access_token']
    assert farm.token.expires_at == new_token['expires_at']
    assert farm.token.refresh_token == new_token['refresh_token']
    assert farm.token.expires_in == new_token['expires_in']

    # Remove farm from DB
    crud.farm.delete(db_session, farm_id=farm.id)
    farm = crud.farm.get_by_id(db_session, farm_id=farm.id)
    assert farm is None