Skip to content
Snippets Groups Projects

Add forgotten test file for the new capability request Pyramid views

Merged Nathan Hertz requested to merge add-forgotten-capability-request-tests into main
1 file
+ 104
0
Compare changes
  • Side-by-side
  • Inline
"""
Tests that test the view functionality of our capability request REST API.
The logic can be found in `capability/views/capability.py`.
"""
from pyramid.config import Configurator
from pyramid.httpexceptions import (
HTTPBadRequest,
HTTPExpectationFailed,
HTTPNotFound,
HTTPPreconditionFailed,
)
from pyramid.testing import DummyRequest
def test_view_capability_request(test_config: Configurator, request_null_capability: DummyRequest):
"""
Tests the view_capability_request view to make sure it properly returns the info of a capability request
:param test_config: Dummy Pyramid Configurator object set up for testing
:param request_null_capability: Dummy Pyramid request object set up with mocked DB access
supporting the null capability
"""
from capability.views.capability_request import view_capability_request
expected_response = (
'{"id": 0, "capability_name": "null", "state": "Created", "parameters": "-g"}'
)
request_null_capability.matchdict["capability_name"] = "null"
request_null_capability.matchdict["request_id"] = 0
response = view_capability_request(request_null_capability)
assert response.status_code == 200
assert response.json_body == expected_response
def test_view_capability_request_not_found(
test_config: Configurator, request_null_capability: DummyRequest
):
"""
Tests the view_capability_request view to make sure it properly returns a 404 Not Found exception
when a capability request does not exist
:param test_config: Dummy Pyramid Configurator object set up for testing
:param request_null_capability: Dummy Pyramid request object set up with mocked DB access
supporting the null capability
"""
from capability.views.capability_request import view_capability_request
request_null_capability.matchdict["capability_name"] = "null"
request_null_capability.matchdict["request_id"] = -1
response = view_capability_request(request_null_capability)
assert response.status_code == 404
assert type(response) is HTTPNotFound
def test_create_capability_request(
test_config: Configurator, request_null_capability: DummyRequest
):
"""
Tests the create capability view to make sure it properly supports creation of capabilities
:param test_config: Dummy Pyramid Configurator object set up for testing
:param request_null_capability: Dummy Pyramid request object set up with mocked DB access
supporting the null capability
"""
from capability.views.capability_request import create_capability_request
request_null_capability.json_body = {"parameters": "-g", "versions": []}
# Assert test capability not in list of capabilities (mocked)
assert not request_null_capability.capability_info.lookup_capability_request(1)
response = create_capability_request(request_null_capability)
assert response.status_code == 200
expected_response = (
'{"id": 1, "capability_name": "null", "state": "Created", "parameters": "-g"}'
)
assert response.json_body == expected_response
# Assert test capability has been added to list of capabilities (mocked)
assert request_null_capability.capability_info.lookup_capability_request(1)
def test_create_capability_request_error(
test_config: Configurator, request_null_capability: DummyRequest
):
"""
Tests that the create_capability_request view correctly responds with exceptions given bad input
:param test_config: Dummy Pyramid Configurator object set up for testing
:param request_null_capability: Dummy Pyramid request object set up with mocked DB access
supporting the null capability
"""
from capability.views.capability_request import create_capability_request
request_null_capability.json_body = {"bad": "param"}
response_bad_params = create_capability_request(request_null_capability)
assert response_bad_params.status_code == 400
assert type(response_bad_params) is HTTPBadRequest
request_null_capability.matchdict["capability_name"] = "does_not_exist"
request_null_capability.json_body = {"parameters": "-g", "versions": []}
response_does_not_exist = create_capability_request(request_null_capability)
assert response_does_not_exist.status_code == 412
assert type(response_does_not_exist) is HTTPPreconditionFailed
Loading