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:
One-Fine-Day 2017-12-05 15:51:48 -06:00
parent 49d1077f9a
commit 2cd77d393d
3 changed files with 79 additions and 33 deletions

3
.gitignore vendored
View File

@ -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

View File

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

View 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'