ActionsValidationsResource and VersionsResource Unit Tests
test_actions_validations_id_api.py contains the unit tests for the ActionsValidationsResource test_api.py contains the unit tests for the VersionsResource .gitignore was modified in follow up to the additon of --cov-report=html in the tox file from the 'Unit Test for WorkflowResource and WorkflowIdResource' commit Change-Id: Ic830ade260591e7145b1199a2b4be1c6f9cdf8a6
This commit is contained in:
parent
49d1077f9a
commit
2cd77d393d
3
.gitignore
vendored
3
.gitignore
vendored
@ -37,6 +37,7 @@ pip-delete-this-directory.txt
|
|||||||
|
|
||||||
# Unit test / coverage reports
|
# Unit test / coverage reports
|
||||||
htmlcov/
|
htmlcov/
|
||||||
|
cov/*
|
||||||
.tox/
|
.tox/
|
||||||
.coverage
|
.coverage
|
||||||
.coverage.*
|
.coverage.*
|
||||||
@ -108,4 +109,4 @@ AUTHORS
|
|||||||
# build/lint artifacts
|
# build/lint artifacts
|
||||||
/charts/shipyard/charts
|
/charts/shipyard/charts
|
||||||
/charts/shipyard/requirements.lock
|
/charts/shipyard/requirements.lock
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
@ -11,11 +11,13 @@
|
|||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
import json
|
from mock import patch
|
||||||
|
import pytest
|
||||||
|
|
||||||
from shipyard_airflow.control.action.actions_validations_id_api import \
|
from shipyard_airflow.control.action.actions_validations_id_api import \
|
||||||
ActionsValidationsResource
|
ActionsValidationsResource
|
||||||
from shipyard_airflow.errors import ApiError
|
from shipyard_airflow.errors import ApiError
|
||||||
|
from tests.unit.control import common
|
||||||
|
|
||||||
|
|
||||||
def actions_db(action_id):
|
def actions_db(action_id):
|
||||||
@ -52,39 +54,53 @@ def get_validations(validation_id):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def test_get_action_validation():
|
class TestActionsValidationsResource():
|
||||||
"""
|
@patch.object(ActionsValidationsResource, 'get_action_validation',
|
||||||
Tests the main response from get all actions
|
common.str_responder)
|
||||||
"""
|
def test_on_get(self, api_client):
|
||||||
action_resource = ActionsValidationsResource()
|
"""Validate the on_get method returns 200 on success"""
|
||||||
# stubs for db
|
result = api_client.simulate_get(
|
||||||
action_resource.get_action_db = actions_db
|
"/api/v1.0/actions/123456/validations/123456",
|
||||||
action_resource.get_validation_db = get_validations
|
headers=common.AUTH_HEADERS)
|
||||||
|
assert result.status_code == 200
|
||||||
|
|
||||||
validation = action_resource.get_action_validation(
|
def test_get_action_validation(self):
|
||||||
action_id='59bb330a-9e64-49be-a586-d253bb67d443',
|
"""Tests the main response from get all actions"""
|
||||||
validation_id='43'
|
action_resource = ActionsValidationsResource()
|
||||||
)
|
# stubs for db
|
||||||
print(json.dumps(validation, default=str))
|
action_resource.get_action_db = actions_db
|
||||||
assert validation['action_id'] == '59bb330a-9e64-49be-a586-d253bb67d443'
|
action_resource.get_validation_db = get_validations
|
||||||
assert validation['validation_name'] == 'It has shiny goodness'
|
|
||||||
|
|
||||||
try:
|
|
||||||
validation = action_resource.get_action_validation(
|
validation = action_resource.get_action_validation(
|
||||||
action_id='59bb330a-9e64-49be-a586-d253bb67d443',
|
action_id='59bb330a-9e64-49be-a586-d253bb67d443',
|
||||||
validation_id='not a chance'
|
validation_id='43')
|
||||||
)
|
assert validation[
|
||||||
assert False
|
'action_id'] == '59bb330a-9e64-49be-a586-d253bb67d443'
|
||||||
except ApiError as api_error:
|
assert validation['validation_name'] == 'It has shiny goodness'
|
||||||
assert api_error.status == '404 Not Found'
|
|
||||||
assert api_error.title == 'Validation not found'
|
|
||||||
|
|
||||||
try:
|
with pytest.raises(ApiError) as api_error:
|
||||||
validation = action_resource.get_action_validation(
|
action_resource.get_action_validation(
|
||||||
action_id='error_it',
|
action_id='59bb330a-9e64-49be-a586-d253bb67d443',
|
||||||
validation_id='not a chance'
|
validation_id='not a chance')
|
||||||
)
|
assert 'Validation not found' in str(api_error)
|
||||||
assert False
|
|
||||||
except ApiError as api_error:
|
with pytest.raises(ApiError) as api_error:
|
||||||
assert api_error.status == '404 Not Found'
|
validation = action_resource.get_action_validation(
|
||||||
assert api_error.title == 'Action not found'
|
action_id='error_it', validation_id='not a chance')
|
||||||
|
assert 'Action not found' in str(api_error)
|
||||||
|
|
||||||
|
@patch('shipyard_airflow.db.shipyard_db.ShipyardDbAccess.get_action_by_id')
|
||||||
|
def test_get_action_db(self, mock_get_action_by_id):
|
||||||
|
action_resource = ActionsValidationsResource()
|
||||||
|
action_id = '123456789'
|
||||||
|
action_resource.get_action_db(action_id)
|
||||||
|
mock_get_action_by_id.assert_called_with(action_id=action_id)
|
||||||
|
|
||||||
|
@patch(
|
||||||
|
'shipyard_airflow.db.shipyard_db.ShipyardDbAccess.get_validation_by_id'
|
||||||
|
)
|
||||||
|
def test_get_validation_db(self, mock_get_tasks_by_id):
|
||||||
|
action_resource = ActionsValidationsResource()
|
||||||
|
validation_id = '123456'
|
||||||
|
action_resource.get_validation_db(validation_id)
|
||||||
|
mock_get_tasks_by_id.assert_called_with(validation_id=validation_id)
|
||||||
|
29
tests/unit/control/test_api.py
Normal file
29
tests/unit/control/test_api.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# Copyright 2017 AT&T Intellectual Property. All other rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
from shipyard_airflow.control.base import ShipyardRequestContext
|
||||||
|
from shipyard_airflow.control.api import VersionsResource
|
||||||
|
from tests.unit.control.common import create_req, create_resp
|
||||||
|
|
||||||
|
context = ShipyardRequestContext()
|
||||||
|
|
||||||
|
|
||||||
|
class TestVersionsResource():
|
||||||
|
def test_on_get(self):
|
||||||
|
version_resource = VersionsResource()
|
||||||
|
req = create_req(context, None)
|
||||||
|
resp = create_resp()
|
||||||
|
version_resource.on_get(req, resp)
|
||||||
|
assert sorted(resp.body) == sorted(
|
||||||
|
'{"v1.0": {"status": "stable", "path": "/api/v1.0"}}')
|
||||||
|
assert resp.status == '200 OK'
|
Loading…
x
Reference in New Issue
Block a user