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
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
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
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()
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
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