コード例 #1
0
def offer_fixture(client):
    '''
    Generate three offers in the system.
    '''

    offer_ids = []
    for _ in range(3):
        offer = {
            'title': fake.text(150),
            'description': fake.text(250),
            'category': fake.text(20),
            'latitude': fake.latitude(),
            'longitude': fake.longitude(),
            'picture_url': fake.text(150),
        }
        header = token_validation.generate_token_header(
            fake.name(), PRIVATE_KEY)
        headers = {
            'Authorization': header,
        }
        response = client.post('/api/me/offers/', data=offer, headers=headers)
        assert http.client.CREATED == response.status_code
        result = response.json
        offer_ids.append(result['id'])

    yield offer_ids

    # Clean up all offers
    response = client.get('/api/offers/')
    offers = response.json
    for offer in offers:
        offer_id = offer['id']
        url = f'/admin/offers/{offer_id}/'
        response = client.delete(url)
        assert http.client.NO_CONTENT == response.status_code
コード例 #2
0
def test_create_me_offer(client):
    new_offer = {
        'username': fake.name(),
        'title': fake.text(150),
        'description': fake.text(240),
        'category': fake.text(50),
        'latitude': fake.latitude(),
        'longitude': fake.longitude(),
        'picture_url': fake.text(150),
    }
    header = token_validation.generate_token_header(fake.name(), PRIVATE_KEY)
    headers = {
        'Authorization': header,
    }
    response = client.post('/api/me/offers/', data=new_offer, headers=headers)
    result = response.json

    assert http.client.CREATED == response.status_code

    expected = {
        'id': ANY,
        'username': ANY,
        'title': new_offer['title'],
        'description': new_offer['description'],
        'category': new_offer['category'],
        'latitude': ANY,
        'longitude': ANY,
        'picture_url': new_offer['picture_url'],
        'timestamp': '2019-05-07T13:47:34',
    }
    assert result == expected
コード例 #3
0
def test_list_me_offers(client, offer_fixture):
    username = fake.name()
    title = fake.text(150)
    description = fake.text(240)
    category = fake.text(50)
    latitude = fake.latitude()
    longitude = fake.longitude()
    picture_url = fake.text(150)

    # Create a new offer
    new_offer = {
        'title': title,
        'description': description,
        'category': category,
        'latitude': latitude,
        'longitude': longitude,
        'picture_url': picture_url,
    }
    header = token_validation.generate_token_header(username, PRIVATE_KEY)
    headers = {
        'Authorization': header,
    }
    response = client.post('/api/me/offers/', data=new_offer, headers=headers)
    result = response.json

    assert http.client.CREATED == response.status_code

    # Get the offers of the user
    response = client.get('/api/me/offers/', headers=headers)
    results = response.json

    assert http.client.OK == response.status_code
    assert len(results) == 1
    result = results[0]
    expected_result = {
        'id': ANY,
        'username': username,
        'title': title,
        'description': description,
        'category': category,
        'picture_url': picture_url,
        'latitude': ANY,
        'longitude': ANY,
        'timestamp': ANY,
    }

    assert result == expected_result
コード例 #4
0
def test_list_offers_search(client, offer_fixture):
    username = fake.name()
    new_offer = {
        'username': username,
        'title': 'A tale',
        'description': 'A tale about a Platypus',
        'category': 'Home',
        'latitude': 0,
        'longitude': 0,
        'picture_url': 'localhost',
    }
    header = token_validation.generate_token_header(username, PRIVATE_KEY)
    headers = {
        'Authorization': header,
    }
    response = client.post('/api/me/offers/', data=new_offer, headers=headers)
    assert http.client.CREATED == response.status_code

    response = client.get('/api/offers/?search=platypus')
    result = response.json

    assert http.client.OK == response.status_code
    assert len(result) > 0

    # Check that the returned values contain "platypus"
    for offer in result:
        expected = {
            'description': ANY,
            'title': ANY,
            'username': username,
            'id': ANY,
            'category': ANY,
            'latitude': ANY,
            'longitude': ANY,
            'picture_url': ANY,
            'timestamp': ANY,
        }
        assert expected == offer
        assert 'platypus' in offer['description'].lower()
コード例 #5
0
def test_valid_token_header():
    header = token_validation.generate_token_header('tonystark', PRIVATE_KEY)
    result = token_validation.validate_token_header(header, PUBLIC_KEY)
    assert 'tonystark' == result
コード例 #6
0
def test_valid_token_header_invalid_key():
    header = token_validation.generate_token_header('tonystark', PRIVATE_KEY)
    result = token_validation.validate_token_header(header, INVALID_PUBLIC_KEY)
    assert None is result