mirror of
https://github.com/ilri/dspace-statistics-api.git
synced 2024-11-22 06:15:02 +01:00
Add initial API tests
Test the basic assumptions of the API like response codes and types.
This commit is contained in:
parent
8a65d99e08
commit
bae9fb80e4
0
tests/__init__.py
Normal file
0
tests/__init__.py
Normal file
67
tests/test_api.py
Normal file
67
tests/test_api.py
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
from falcon import testing
|
||||||
|
import json
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
from dspace_statistics_api.app import api
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def client():
|
||||||
|
return testing.TestClient(api)
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_docs(client):
|
||||||
|
'''Test requesting the documentation at the root.'''
|
||||||
|
|
||||||
|
response = client.simulate_get('/')
|
||||||
|
|
||||||
|
assert isinstance(response.content, bytes)
|
||||||
|
assert response.status_code == 200
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_item(client):
|
||||||
|
'''Test requesting a single item.'''
|
||||||
|
|
||||||
|
response = client.simulate_get('/item/17')
|
||||||
|
response_doc = json.loads(response.content)
|
||||||
|
|
||||||
|
assert isinstance(response_doc['downloads'], int)
|
||||||
|
assert isinstance(response_doc['id'], int)
|
||||||
|
assert isinstance(response_doc['views'], int)
|
||||||
|
assert response.status_code == 200
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_missing_item(client):
|
||||||
|
'''Test requesting a single non-existing item.'''
|
||||||
|
|
||||||
|
response = client.simulate_get('/item/1')
|
||||||
|
|
||||||
|
assert response.status_code == 404
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_items(client):
|
||||||
|
'''Test requesting 100 items.'''
|
||||||
|
|
||||||
|
response = client.simulate_get('/items', query_string='limit=100')
|
||||||
|
response_doc = json.loads(response.content)
|
||||||
|
|
||||||
|
assert isinstance(response_doc['currentPage'], int)
|
||||||
|
assert isinstance(response_doc['totalPages'], int)
|
||||||
|
assert isinstance(response_doc['statistics'], list)
|
||||||
|
assert response.status_code == 200
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_items_invalid_limit(client):
|
||||||
|
'''Test requesting 100 items with an invalid limit parameter.'''
|
||||||
|
|
||||||
|
response = client.simulate_get('/items', query_string='limit=101')
|
||||||
|
|
||||||
|
assert response.status_code == 400
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_items_invalid_page(client):
|
||||||
|
'''Test requesting 100 items with an invalid page parameter.'''
|
||||||
|
|
||||||
|
response = client.simulate_get('/items', query_string='page=-1')
|
||||||
|
|
||||||
|
assert response.status_code == 400
|
Loading…
Reference in New Issue
Block a user