You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafficcontrol.apache.org by "gokulakrishnansvm (via GitHub)" <gi...@apache.org> on 2023/05/15 20:33:56 UTC
[GitHub] [trafficcontrol] gokulakrishnansvm opened a new pull request, #7523: Added API Contract test case for servers endpoint and refactored existing ones.
gokulakrishnansvm opened a new pull request, #7523:
URL: https://github.com/apache/trafficcontrol/pull/7523
<!--
Thank you for contributing! Please be sure to read our contribution guidelines: https://github.com/apache/trafficcontrol/blob/master/CONTRIBUTING.md
If this closes or relates to an existing issue, please reference it using one of the following:
Closes: #ISSUE
Related: #ISSUE
If this PR fixes a security vulnerability, DO NOT submit! Instead, contact
the Apache Traffic Control Security Team at security@trafficcontrol.apache.org and follow the
guidelines at https://apache.org/security regarding vulnerability disclosure.
-->
- Added Api contract test case for server endpoint.
- Refactored code for all existing Api contract test cases, Used Json schema validation for validating Keys and data types of values in the test case.
- Replaced response_template.json file with json schema formats.
- Refactored all fixtures(post_data) in conftest, Added common method to verfiy response template and added common methods for get and post requests.
- Moved request_template.json , response_template.json and to_data.json to folder named data.
<!-- **^ Add meaningful description above** --><hr/>
## Which Traffic Control components are affected by this PR?
<!-- Please delete all components from this list that are NOT affected by this PR.
Feel free to add the name of a tool or script that is affected but not on the list.
-->
- Traffic Ops Test
## What is the best way to verify this PR?
Step 1 : Follow steps from README file(traffic_ops/testing/api_contract) to run api-contract-tests.
Step 2 : To execute servers API Contract Testcase , navigate to traffic_ops/testing/api_contract/v4
pytest --to-user Username --to-password Password --to-url URL --config Config Path --request-template Request template --response-template Response template test_servers.py
Note: Config, Request template and response template paths are optional.
## PR submission checklist
- [x] This PR has tests <!-- If not, please delete this text and explain why this PR does not need tests. -->
- [x] This PR **DOES NOT FIX A SERIOUS SECURITY VULNERABILITY** (see [the Apache Software Foundation's security guidelines](https://apache.org/security) for details)
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you 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.
-->
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@trafficcontrol.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [trafficcontrol] TerekhovaKate commented on a diff in pull request #7523: Added API Contract test case for servers endpoint and refactored existing ones.
Posted by "TerekhovaKate (via GitHub)" <gi...@apache.org>.
TerekhovaKate commented on code in PR #7523:
URL: https://github.com/apache/trafficcontrol/pull/7523#discussion_r1194356298
##########
traffic_ops/testing/api_contract/v4/conftest.py:
##########
@@ -845,39 +770,78 @@ def phys_locations_post_data(to_session: TOSession, request_template_data: list[
if not isinstance(name, str):
raise TypeError(f"name must be str, not '{type(name)}'")
phys_locations["name"] = name[:4] + randstr
- shortName = phys_locations["shortName"]
+ shortname = phys_locations["shortName"]
Review Comment:
shortName = phys_locations["shortName"]
shortname = phys_locations["shortName"]
please check name
short_name is recomended
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@trafficcontrol.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [trafficcontrol] TerekhovaKate commented on a diff in pull request #7523: Added API Contract test case for servers endpoint and refactored existing ones.
Posted by "TerekhovaKate (via GitHub)" <gi...@apache.org>.
TerekhovaKate commented on code in PR #7523:
URL: https://github.com/apache/trafficcontrol/pull/7523#discussion_r1195567600
##########
traffic_ops/testing/api_contract/v4/conftest.py:
##########
@@ -363,6 +366,94 @@ def response_template_data(pytestconfig: pytest.Config
return response_template
+def api_response_data(api_response: tuple[primitive | dict[str, object] | list[primitive |
+ dict[str, object] | list[object]], requests.Response],
+ request_type: str=None) -> dict[str, object]:
+ """
+ Checks API get/post response.
+ :param api_response: Raw api response.
+ :returns: Verified response data
+ """
+ if request_type == "get":
+ try:
+ api_response = api_response[0]
+ if not isinstance(api_response, list):
+ raise TypeError("malformed API response; 'response' property not an array")
+ except KeyError as e:
+ raise TypeError(f"missing API property '{e.args[0]}'") from e
+ if api_response:
Review Comment:
Validate api_data before returning: Currently, the code assumes that if api_response is not empty, the first element of api_response is the desired data. However, it doesn’t verify if it’s a valid data object. Consider adding validation for api_data before returning it.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@trafficcontrol.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [trafficcontrol] mitchell852 merged pull request #7523: Added API Contract test case for servers endpoint and refactored existing ones.
Posted by "mitchell852 (via GitHub)" <gi...@apache.org>.
mitchell852 merged PR #7523:
URL: https://github.com/apache/trafficcontrol/pull/7523
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@trafficcontrol.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [trafficcontrol] TerekhovaKate commented on a diff in pull request #7523: Added API Contract test case for servers endpoint and refactored existing ones.
Posted by "TerekhovaKate (via GitHub)" <gi...@apache.org>.
TerekhovaKate commented on code in PR #7523:
URL: https://github.com/apache/trafficcontrol/pull/7523#discussion_r1194356298
##########
traffic_ops/testing/api_contract/v4/conftest.py:
##########
@@ -845,39 +770,78 @@ def phys_locations_post_data(to_session: TOSession, request_template_data: list[
if not isinstance(name, str):
raise TypeError(f"name must be str, not '{type(name)}'")
phys_locations["name"] = name[:4] + randstr
- shortName = phys_locations["shortName"]
+ shortname = phys_locations["shortName"]
Review Comment:
shortName = phys_locations["shortName"]
shortname = phys_locations["shortName"]
please check name
short_name is recomended
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@trafficcontrol.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [trafficcontrol] ericholguin commented on a diff in pull request #7523: Added API Contract test case for servers endpoint and refactored existing ones.
Posted by "ericholguin (via GitHub)" <gi...@apache.org>.
ericholguin commented on code in PR #7523:
URL: https://github.com/apache/trafficcontrol/pull/7523#discussion_r1194364858
##########
traffic_control/clients/python/trafficops/tosession.py:
##########
@@ -1395,8 +1395,8 @@ def get_physical_locations(self, query_params=None):
:raises: Union[LoginError, OperationError]
"""
- @api_request('post', 'phys_locations', ('3.0', '3.1', '4.0', '4.1', '5.0'))
- def create_physical_locations(self, query_params=None, data=None):
+ @api_request('post', 'phys_locations', ('3.0', '4.0', '4.1', '5.0'))
Review Comment:
Please re-add 3.1
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@trafficcontrol.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org