diff --git a/ibm_cloud_networking_services/zones_v1.py b/ibm_cloud_networking_services/zones_v1.py index b402bcb..88ebf19 100644 --- a/ibm_cloud_networking_services/zones_v1.py +++ b/ibm_cloud_networking_services/zones_v1.py @@ -1,6 +1,6 @@ # coding: utf-8 -# (C) Copyright IBM Corp. 2020. +# (C) Copyright IBM Corp. 2024. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,11 +14,15 @@ # See the License for the specific language governing permissions and # limitations under the License. +# IBM OpenAPI SDK Code Generator Version: 3.84.0-a4533f12-20240103-170852 + """ CIS Zones + +API Version: 1.0.1 """ -from typing import Dict, List +from typing import Dict, List, Optional import json from ibm_cloud_sdk_core import BaseService, DetailedResponse @@ -31,6 +35,7 @@ # Service ############################################################################## + class ZonesV1(BaseService): """The Zones V1 service.""" @@ -38,10 +43,11 @@ class ZonesV1(BaseService): DEFAULT_SERVICE_NAME = 'zones' @classmethod - def new_instance(cls, - crn: str, - service_name: str = DEFAULT_SERVICE_NAME, - ) -> 'ZonesV1': + def new_instance( + cls, + crn: str, + service_name: str = DEFAULT_SERVICE_NAME, + ) -> 'ZonesV1': """ Return a new client for the Zones service using the specified parameters and external configuration. @@ -59,69 +65,87 @@ def new_instance(cls, service.configure_service(service_name) return service - def __init__(self, - crn: str, - authenticator: Authenticator = None, - ) -> None: + def __init__( + self, + crn: str, + authenticator: Authenticator = None, + ) -> None: """ Construct a new client for the Zones service. :param str crn: Full url-encoded CRN of the service instance. :param Authenticator authenticator: The authenticator specifies the authentication mechanism. - Get up to date information from https://github.com/IBM/python-sdk-core/blob/master/README.md + Get up to date information from https://github.com/IBM/python-sdk-core/blob/main/README.md about initializing the authenticator of your choice. """ if crn is None: raise ValueError('crn must be provided') - BaseService.__init__(self, - service_url=self.DEFAULT_SERVICE_URL, - authenticator=authenticator) + BaseService.__init__(self, service_url=self.DEFAULT_SERVICE_URL, authenticator=authenticator) self.crn = crn - ######################### # CIS Zones ######################### - - def list_zones(self, - **kwargs + def list_zones( + self, + *, + page: Optional[int] = None, + per_page: Optional[int] = None, + **kwargs, ) -> DetailedResponse: """ List all zones. List all zones for a service instance. + :param int page: (optional) Page number of paginated results. + :param int per_page: (optional) Maximum number of zones per page. :param dict headers: A `dict` containing the request headers :return: A `DetailedResponse` containing the result, headers and HTTP status code. :rtype: DetailedResponse with `dict` result representing a `ListZonesResp` object """ headers = {} - sdk_headers = get_sdk_headers(service_name=self.DEFAULT_SERVICE_NAME, - service_version='V1', - operation_id='list_zones') + sdk_headers = get_sdk_headers( + service_name=self.DEFAULT_SERVICE_NAME, + service_version='V1', + operation_id='list_zones', + ) headers.update(sdk_headers) + params = { + 'page': page, + 'per_page': per_page, + } + if 'headers' in kwargs: headers.update(kwargs.get('headers')) - - url = '/v1/{0}/zones'.format( - *self.encode_path_vars(self.crn)) - request = self.prepare_request(method='GET', - url=url, - headers=headers) - - response = self.send(request) + del kwargs['headers'] + headers['Accept'] = 'application/json' + + path_param_keys = ['crn'] + path_param_values = self.encode_path_vars(self.crn) + path_param_dict = dict(zip(path_param_keys, path_param_values)) + url = '/v1/{crn}/zones'.format(**path_param_dict) + request = self.prepare_request( + method='GET', + url=url, + headers=headers, + params=params, + ) + + response = self.send(request, **kwargs) return response - - def create_zone(self, + def create_zone( + self, *, - name: str = None, - **kwargs + name: Optional[str] = None, + type: Optional[str] = None, + **kwargs, ) -> DetailedResponse: """ Create zone. @@ -129,19 +153,23 @@ def create_zone(self, Add a new zone for a given service instance. :param str name: (optional) name. + :param str type: (optional) zone type. :param dict headers: A `dict` containing the request headers :return: A `DetailedResponse` containing the result, headers and HTTP status code. :rtype: DetailedResponse with `dict` result representing a `ZoneResp` object """ headers = {} - sdk_headers = get_sdk_headers(service_name=self.DEFAULT_SERVICE_NAME, - service_version='V1', - operation_id='create_zone') + sdk_headers = get_sdk_headers( + service_name=self.DEFAULT_SERVICE_NAME, + service_version='V1', + operation_id='create_zone', + ) headers.update(sdk_headers) data = { - 'name': name + 'name': name, + 'type': type, } data = {k: v for (k, v) in data.items() if v is not None} data = json.dumps(data) @@ -149,21 +177,27 @@ def create_zone(self, if 'headers' in kwargs: headers.update(kwargs.get('headers')) - - url = '/v1/{0}/zones'.format( - *self.encode_path_vars(self.crn)) - request = self.prepare_request(method='POST', - url=url, - headers=headers, - data=data) - - response = self.send(request) + del kwargs['headers'] + headers['Accept'] = 'application/json' + + path_param_keys = ['crn'] + path_param_values = self.encode_path_vars(self.crn) + path_param_dict = dict(zip(path_param_keys, path_param_values)) + url = '/v1/{crn}/zones'.format(**path_param_dict) + request = self.prepare_request( + method='POST', + url=url, + headers=headers, + data=data, + ) + + response = self.send(request, **kwargs) return response - - def delete_zone(self, + def delete_zone( + self, zone_identifier: str, - **kwargs + **kwargs, ) -> DetailedResponse: """ Delete zone. @@ -176,30 +210,38 @@ def delete_zone(self, :rtype: DetailedResponse with `dict` result representing a `DeleteZoneResp` object """ - if zone_identifier is None: + if not zone_identifier: raise ValueError('zone_identifier must be provided') headers = {} - sdk_headers = get_sdk_headers(service_name=self.DEFAULT_SERVICE_NAME, - service_version='V1', - operation_id='delete_zone') + sdk_headers = get_sdk_headers( + service_name=self.DEFAULT_SERVICE_NAME, + service_version='V1', + operation_id='delete_zone', + ) headers.update(sdk_headers) if 'headers' in kwargs: headers.update(kwargs.get('headers')) - - url = '/v1/{0}/zones/{1}'.format( - *self.encode_path_vars(self.crn, zone_identifier)) - request = self.prepare_request(method='DELETE', - url=url, - headers=headers) - - response = self.send(request) + del kwargs['headers'] + headers['Accept'] = 'application/json' + + path_param_keys = ['crn', 'zone_identifier'] + path_param_values = self.encode_path_vars(self.crn, zone_identifier) + path_param_dict = dict(zip(path_param_keys, path_param_values)) + url = '/v1/{crn}/zones/{zone_identifier}'.format(**path_param_dict) + request = self.prepare_request( + method='DELETE', + url=url, + headers=headers, + ) + + response = self.send(request, **kwargs) return response - - def get_zone(self, + def get_zone( + self, zone_identifier: str, - **kwargs + **kwargs, ) -> DetailedResponse: """ Get zone. @@ -212,32 +254,40 @@ def get_zone(self, :rtype: DetailedResponse with `dict` result representing a `ZoneResp` object """ - if zone_identifier is None: + if not zone_identifier: raise ValueError('zone_identifier must be provided') headers = {} - sdk_headers = get_sdk_headers(service_name=self.DEFAULT_SERVICE_NAME, - service_version='V1', - operation_id='get_zone') + sdk_headers = get_sdk_headers( + service_name=self.DEFAULT_SERVICE_NAME, + service_version='V1', + operation_id='get_zone', + ) headers.update(sdk_headers) if 'headers' in kwargs: headers.update(kwargs.get('headers')) - - url = '/v1/{0}/zones/{1}'.format( - *self.encode_path_vars(self.crn, zone_identifier)) - request = self.prepare_request(method='GET', - url=url, - headers=headers) - - response = self.send(request) + del kwargs['headers'] + headers['Accept'] = 'application/json' + + path_param_keys = ['crn', 'zone_identifier'] + path_param_values = self.encode_path_vars(self.crn, zone_identifier) + path_param_dict = dict(zip(path_param_keys, path_param_values)) + url = '/v1/{crn}/zones/{zone_identifier}'.format(**path_param_dict) + request = self.prepare_request( + method='GET', + url=url, + headers=headers, + ) + + response = self.send(request, **kwargs) return response - - def update_zone(self, + def update_zone( + self, zone_identifier: str, *, - paused: bool = None, - **kwargs + paused: Optional[bool] = None, + **kwargs, ) -> DetailedResponse: """ Update zone. @@ -251,16 +301,18 @@ def update_zone(self, :rtype: DetailedResponse with `dict` result representing a `ZoneResp` object """ - if zone_identifier is None: + if not zone_identifier: raise ValueError('zone_identifier must be provided') headers = {} - sdk_headers = get_sdk_headers(service_name=self.DEFAULT_SERVICE_NAME, - service_version='V1', - operation_id='update_zone') + sdk_headers = get_sdk_headers( + service_name=self.DEFAULT_SERVICE_NAME, + service_version='V1', + operation_id='update_zone', + ) headers.update(sdk_headers) data = { - 'paused': paused + 'paused': paused, } data = {k: v for (k, v) in data.items() if v is not None} data = json.dumps(data) @@ -268,21 +320,27 @@ def update_zone(self, if 'headers' in kwargs: headers.update(kwargs.get('headers')) - - url = '/v1/{0}/zones/{1}'.format( - *self.encode_path_vars(self.crn, zone_identifier)) - request = self.prepare_request(method='PATCH', - url=url, - headers=headers, - data=data) - - response = self.send(request) + del kwargs['headers'] + headers['Accept'] = 'application/json' + + path_param_keys = ['crn', 'zone_identifier'] + path_param_values = self.encode_path_vars(self.crn, zone_identifier) + path_param_dict = dict(zip(path_param_keys, path_param_values)) + url = '/v1/{crn}/zones/{zone_identifier}'.format(**path_param_dict) + request = self.prepare_request( + method='PATCH', + url=url, + headers=headers, + data=data, + ) + + response = self.send(request, **kwargs) return response - - def zone_activation_check(self, + def zone_activation_check( + self, zone_identifier: str, - **kwargs + **kwargs, ) -> DetailedResponse: """ Check zone. @@ -295,24 +353,32 @@ def zone_activation_check(self, :rtype: DetailedResponse with `dict` result representing a `ZoneActivationcheckResp` object """ - if zone_identifier is None: + if not zone_identifier: raise ValueError('zone_identifier must be provided') headers = {} - sdk_headers = get_sdk_headers(service_name=self.DEFAULT_SERVICE_NAME, - service_version='V1', - operation_id='zone_activation_check') + sdk_headers = get_sdk_headers( + service_name=self.DEFAULT_SERVICE_NAME, + service_version='V1', + operation_id='zone_activation_check', + ) headers.update(sdk_headers) if 'headers' in kwargs: headers.update(kwargs.get('headers')) - - url = '/v1/{0}/zones/{1}/activation_check'.format( - *self.encode_path_vars(self.crn, zone_identifier)) - request = self.prepare_request(method='PUT', - url=url, - headers=headers) - - response = self.send(request) + del kwargs['headers'] + headers['Accept'] = 'application/json' + + path_param_keys = ['crn', 'zone_identifier'] + path_param_values = self.encode_path_vars(self.crn, zone_identifier) + path_param_dict = dict(zip(path_param_keys, path_param_values)) + url = '/v1/{crn}/zones/{zone_identifier}/activation_check'.format(**path_param_dict) + request = self.prepare_request( + method='PUT', + url=url, + headers=headers, + ) + + response = self.send(request, **kwargs) return response @@ -321,15 +387,17 @@ def zone_activation_check(self, ############################################################################## -class DeleteZoneRespResult(): +class DeleteZoneRespResult: """ result. - :attr str id: id. + :param str id: id. """ - def __init__(self, - id: str) -> None: + def __init__( + self, + id: str, + ) -> None: """ Initialize a DeleteZoneRespResult object. @@ -377,15 +445,18 @@ def __ne__(self, other: 'DeleteZoneRespResult') -> bool: """Return `true` when self and other are not equal, false otherwise.""" return not self == other -class ZoneActivationcheckRespResult(): + +class ZoneActivationcheckRespResult: """ result. - :attr str id: id. + :param str id: id. """ - def __init__(self, - id: str) -> None: + def __init__( + self, + id: str, + ) -> None: """ Initialize a ZoneActivationcheckRespResult object. @@ -433,21 +504,24 @@ def __ne__(self, other: 'ZoneActivationcheckRespResult') -> bool: """Return `true` when self and other are not equal, false otherwise.""" return not self == other -class DeleteZoneResp(): + +class DeleteZoneResp: """ delete zone response. - :attr bool success: success. - :attr List[List[str]] errors: errors. - :attr List[List[str]] messages: messages. - :attr DeleteZoneRespResult result: result. + :param bool success: success. + :param List[List[str]] errors: errors. + :param List[List[str]] messages: messages. + :param DeleteZoneRespResult result: result. """ - def __init__(self, - success: bool, - errors: List[List[str]], - messages: List[List[str]], - result: 'DeleteZoneRespResult') -> None: + def __init__( + self, + success: bool, + errors: List[List[str]], + messages: List[List[str]], + result: 'DeleteZoneRespResult', + ) -> None: """ Initialize a DeleteZoneResp object. @@ -498,7 +572,10 @@ def to_dict(self) -> Dict: if hasattr(self, 'messages') and self.messages is not None: _dict['messages'] = self.messages if hasattr(self, 'result') and self.result is not None: - _dict['result'] = self.result.to_dict() + if isinstance(self.result, dict): + _dict['result'] = self.result + else: + _dict['result'] = self.result.to_dict() return _dict def _to_dict(self): @@ -519,23 +596,26 @@ def __ne__(self, other: 'DeleteZoneResp') -> bool: """Return `true` when self and other are not equal, false otherwise.""" return not self == other -class ListZonesResp(): + +class ListZonesResp: """ list zones response. - :attr bool success: success. - :attr List[List[str]] errors: errors. - :attr List[List[str]] messages: messages. - :attr List[ZoneDetails] result: zone list. - :attr ResultInfo result_info: result information. + :param bool success: success. + :param List[List[str]] errors: errors. + :param List[List[str]] messages: messages. + :param List[ZoneDetails] result: zone list. + :param ResultInfo result_info: result information. """ - def __init__(self, - success: bool, - errors: List[List[str]], - messages: List[List[str]], - result: List['ZoneDetails'], - result_info: 'ResultInfo') -> None: + def __init__( + self, + success: bool, + errors: List[List[str]], + messages: List[List[str]], + result: List['ZoneDetails'], + result_info: 'ResultInfo', + ) -> None: """ Initialize a ListZonesResp object. @@ -568,7 +648,7 @@ def from_dict(cls, _dict: Dict) -> 'ListZonesResp': else: raise ValueError('Required property \'messages\' not present in ListZonesResp JSON') if 'result' in _dict: - args['result'] = [ZoneDetails.from_dict(x) for x in _dict.get('result')] + args['result'] = [ZoneDetails.from_dict(v) for v in _dict.get('result')] else: raise ValueError('Required property \'result\' not present in ListZonesResp JSON') if 'result_info' in _dict: @@ -592,9 +672,18 @@ def to_dict(self) -> Dict: if hasattr(self, 'messages') and self.messages is not None: _dict['messages'] = self.messages if hasattr(self, 'result') and self.result is not None: - _dict['result'] = [x.to_dict() for x in self.result] + result_list = [] + for v in self.result: + if isinstance(v, dict): + result_list.append(v) + else: + result_list.append(v.to_dict()) + _dict['result'] = result_list if hasattr(self, 'result_info') and self.result_info is not None: - _dict['result_info'] = self.result_info.to_dict() + if isinstance(self.result_info, dict): + _dict['result_info'] = self.result_info + else: + _dict['result_info'] = self.result_info.to_dict() return _dict def _to_dict(self): @@ -615,21 +704,24 @@ def __ne__(self, other: 'ListZonesResp') -> bool: """Return `true` when self and other are not equal, false otherwise.""" return not self == other -class ResultInfo(): + +class ResultInfo: """ result information. - :attr int page: page. - :attr int per_page: per page. - :attr int count: count. - :attr int total_count: total count. + :param int page: page. + :param int per_page: per page. + :param int count: count. + :param int total_count: total count. """ - def __init__(self, - page: int, - per_page: int, - count: int, - total_count: int) -> None: + def __init__( + self, + page: int, + per_page: int, + count: int, + total_count: int, + ) -> None: """ Initialize a ResultInfo object. @@ -701,21 +793,24 @@ def __ne__(self, other: 'ResultInfo') -> bool: """Return `true` when self and other are not equal, false otherwise.""" return not self == other -class ZoneActivationcheckResp(): + +class ZoneActivationcheckResp: """ zone activation check response. - :attr bool success: success. - :attr List[List[str]] errors: errors. - :attr List[List[str]] messages: messages. - :attr ZoneActivationcheckRespResult result: result. + :param bool success: success. + :param List[List[str]] errors: errors. + :param List[List[str]] messages: messages. + :param ZoneActivationcheckRespResult result: result. """ - def __init__(self, - success: bool, - errors: List[List[str]], - messages: List[List[str]], - result: 'ZoneActivationcheckRespResult') -> None: + def __init__( + self, + success: bool, + errors: List[List[str]], + messages: List[List[str]], + result: 'ZoneActivationcheckRespResult', + ) -> None: """ Initialize a ZoneActivationcheckResp object. @@ -766,7 +861,10 @@ def to_dict(self) -> Dict: if hasattr(self, 'messages') and self.messages is not None: _dict['messages'] = self.messages if hasattr(self, 'result') and self.result is not None: - _dict['result'] = self.result.to_dict() + if isinstance(self.result, dict): + _dict['result'] = self.result + else: + _dict['result'] = self.result.to_dict() return _dict def _to_dict(self): @@ -787,34 +885,43 @@ def __ne__(self, other: 'ZoneActivationcheckResp') -> bool: """Return `true` when self and other are not equal, false otherwise.""" return not self == other -class ZoneDetails(): + +class ZoneDetails: """ zone details. - :attr str id: (optional) id. - :attr str created_on: (optional) created date. - :attr str modified_on: (optional) modified date. - :attr str name: (optional) name. - :attr str original_registrar: (optional) original registrar. - :attr str original_dnshost: (optional) orginal dns host. - :attr str status: (optional) status. - :attr bool paused: (optional) paused. - :attr List[str] original_name_servers: (optional) orginal name servers. - :attr List[str] name_servers: (optional) name servers. + :param str id: (optional) id. + :param str created_on: (optional) created date. + :param str modified_on: (optional) modified date. + :param str name: (optional) name. + :param str original_registrar: (optional) original registrar. + :param str original_dnshost: (optional) orginal dns host. + :param str status: (optional) status. + :param bool paused: (optional) paused. + :param List[str] original_name_servers: (optional) orginal name servers. + :param List[str] name_servers: (optional) name servers. + :param str type: (optional) zone type. + :param str verification_key: (optional) verification key. + :param str cname_suffix: (optional) canme suffix. """ - def __init__(self, - *, - id: str = None, - created_on: str = None, - modified_on: str = None, - name: str = None, - original_registrar: str = None, - original_dnshost: str = None, - status: str = None, - paused: bool = None, - original_name_servers: List[str] = None, - name_servers: List[str] = None) -> None: + def __init__( + self, + *, + id: Optional[str] = None, + created_on: Optional[str] = None, + modified_on: Optional[str] = None, + name: Optional[str] = None, + original_registrar: Optional[str] = None, + original_dnshost: Optional[str] = None, + status: Optional[str] = None, + paused: Optional[bool] = None, + original_name_servers: Optional[List[str]] = None, + name_servers: Optional[List[str]] = None, + type: Optional[str] = None, + verification_key: Optional[str] = None, + cname_suffix: Optional[str] = None, + ) -> None: """ Initialize a ZoneDetails object. @@ -828,6 +935,9 @@ def __init__(self, :param bool paused: (optional) paused. :param List[str] original_name_servers: (optional) orginal name servers. :param List[str] name_servers: (optional) name servers. + :param str type: (optional) zone type. + :param str verification_key: (optional) verification key. + :param str cname_suffix: (optional) canme suffix. """ self.id = id self.created_on = created_on @@ -839,6 +949,9 @@ def __init__(self, self.paused = paused self.original_name_servers = original_name_servers self.name_servers = name_servers + self.type = type + self.verification_key = verification_key + self.cname_suffix = cname_suffix @classmethod def from_dict(cls, _dict: Dict) -> 'ZoneDetails': @@ -864,6 +977,12 @@ def from_dict(cls, _dict: Dict) -> 'ZoneDetails': args['original_name_servers'] = _dict.get('original_name_servers') if 'name_servers' in _dict: args['name_servers'] = _dict.get('name_servers') + if 'type' in _dict: + args['type'] = _dict.get('type') + if 'verification_key' in _dict: + args['verification_key'] = _dict.get('verification_key') + if 'cname_suffix' in _dict: + args['cname_suffix'] = _dict.get('cname_suffix') return cls(**args) @classmethod @@ -894,6 +1013,12 @@ def to_dict(self) -> Dict: _dict['original_name_servers'] = self.original_name_servers if hasattr(self, 'name_servers') and self.name_servers is not None: _dict['name_servers'] = self.name_servers + if hasattr(self, 'type') and self.type is not None: + _dict['type'] = self.type + if hasattr(self, 'verification_key') and self.verification_key is not None: + _dict['verification_key'] = self.verification_key + if hasattr(self, 'cname_suffix') and self.cname_suffix is not None: + _dict['cname_suffix'] = self.cname_suffix return _dict def _to_dict(self): @@ -914,21 +1039,24 @@ def __ne__(self, other: 'ZoneDetails') -> bool: """Return `true` when self and other are not equal, false otherwise.""" return not self == other -class ZoneResp(): + +class ZoneResp: """ zone response. - :attr bool success: success. - :attr List[List[str]] errors: errors. - :attr List[List[str]] messages: messages. - :attr ZoneDetails result: zone details. + :param bool success: success. + :param List[List[str]] errors: errors. + :param List[List[str]] messages: messages. + :param ZoneDetails result: zone details. """ - def __init__(self, - success: bool, - errors: List[List[str]], - messages: List[List[str]], - result: 'ZoneDetails') -> None: + def __init__( + self, + success: bool, + errors: List[List[str]], + messages: List[List[str]], + result: 'ZoneDetails', + ) -> None: """ Initialize a ZoneResp object. @@ -979,7 +1107,10 @@ def to_dict(self) -> Dict: if hasattr(self, 'messages') and self.messages is not None: _dict['messages'] = self.messages if hasattr(self, 'result') and self.result is not None: - _dict['result'] = self.result.to_dict() + if isinstance(self.result, dict): + _dict['result'] = self.result + else: + _dict['result'] = self.result.to_dict() return _dict def _to_dict(self): diff --git a/test/integration/test_zones_v1.py b/test/integration/test_zones_v1.py index 7807790..9a2c361 100644 --- a/test/integration/test_zones_v1.py +++ b/test/integration/test_zones_v1.py @@ -16,14 +16,14 @@ # load the .env file containing your environment variables try: - load_dotenv(find_dotenv(filename="cis.env")) + load_dotenv(find_dotenv(filename=configFile)) except: print('warning: no cis.env file loaded') class TestZonesV1(unittest.TestCase): """ Sample function to call zones sdk functions """ - + @unittest.skip("Authentication failing") def setUp(self): @@ -131,6 +131,48 @@ def test_2_zones(self): zone_identifier=None).get_result() self.assertEqual(val.exception.msg, 'zone_identifier must be provided') + + ################## partial zone integration test ################### + def test_3_zones(self): + """ create a partial zone """ + self.zone_name = "uuid-" + \ + str(uuid.uuid1())[1:6] + ".ibm.com" + response = self.zones.create_zone( + name=self.zone_name, type="partial").get_result() + assert response is not None and response.get('success') is True + result = response.get('result') + self.zone_id = result.get('id') + self.paused = result.get('paused') + + """ list all zones """ + response = self.zones.list_zones().get_result() + assert response is not None and response.get('success') is True + + """ zone activation check """ + try: + response = self.zones.zone_activation_check( + zone_identifier=self.zone_id).get_result() + assert response is not None and response.get('success') is True + except ApiException as e: + print("Exception:", e) + + """ update a zone """ + self.paused = not self.paused + response = self.zones.update_zone( + zone_identifier=self.zone_id, paused=self.paused).get_result() + assert response is not None and response.get('success') is True + + self.paused = not self.paused + response = self.zones.update_zone( + zone_identifier=self.zone_id, paused=self.paused).get_result() + assert response is not None and response.get('success') is True + + """ delete a zone """ + response = self.zones.delete_zone( + zone_identifier=self.zone_id).get_result() + assert response is not None and response.get('success') is True + + if __name__ == '__main__': diff --git a/test/unit/test_zones_v1.py b/test/unit/test_zones_v1.py index 70814c2..81133e7 100644 --- a/test/unit/test_zones_v1.py +++ b/test/unit/test_zones_v1.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# (C) Copyright IBM Corp. 2020. +# (C) Copyright IBM Corp. 2024. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,121 +13,255 @@ # See the License for the specific language governing permissions and # limitations under the License. +""" +Unit Tests for ZonesV1 +""" + from ibm_cloud_sdk_core.authenticators.no_auth_authenticator import NoAuthAuthenticator import inspect import json +import os import pytest import re +import requests import responses +import urllib from ibm_cloud_networking_services.zones_v1 import * crn = 'testString' -service = ZonesV1( +_service = ZonesV1( authenticator=NoAuthAuthenticator(), - crn=crn - ) + crn=crn, +) + +_base_url = 'https://api.cis.cloud.ibm.com' +_service.set_service_url(_base_url) + + +def preprocess_url(operation_path: str): + """ + Returns the request url associated with the specified operation path. + This will be base_url concatenated with a quoted version of operation_path. + The returned request URL is used to register the mock response so it needs + to match the request URL that is formed by the requests library. + """ + # First, unquote the path since it might have some quoted/escaped characters in it + # due to how the generator inserts the operation paths into the unit test code. + operation_path = urllib.parse.unquote(operation_path) + + # Next, quote the path using urllib so that we approximate what will + # happen during request processing. + operation_path = urllib.parse.quote(operation_path, safe='/') + + # Finally, form the request URL from the base URL and operation path. + request_url = _base_url + operation_path + + # If the request url does NOT end with a /, then just return it as-is. + # Otherwise, return a regular expression that matches one or more trailing /. + if re.fullmatch('.*/+', request_url) is None: + return request_url + return re.compile(request_url.rstrip('/') + '/+') -base_url = 'https://api.cis.cloud.ibm.com' -service.set_service_url(base_url) ############################################################################## # Start of Service: CISZones ############################################################################## # region -#----------------------------------------------------------------------------- -# Test Class for list_zones -#----------------------------------------------------------------------------- -class TestListZones(): - - # Preprocess the request URL to ensure the mock response will be found. - def preprocess_url(self, request_url: str): - if re.fullmatch('.*/+', request_url) is None: - return request_url - else: - return re.compile(request_url.rstrip('/') + '/+') - - #-------------------------------------------------------- - # list_zones() - #-------------------------------------------------------- + +class TestNewInstance: + """ + Test Class for new_instance + """ + + def test_new_instance(self): + """ + new_instance() + """ + os.environ['TEST_SERVICE_AUTH_TYPE'] = 'noAuth' + + service = ZonesV1.new_instance( + crn=crn, + service_name='TEST_SERVICE', + ) + + assert service is not None + assert isinstance(service, ZonesV1) + + def test_new_instance_without_authenticator(self): + """ + new_instance_without_authenticator() + """ + with pytest.raises(ValueError, match='authenticator must be provided'): + service = ZonesV1.new_instance( + crn=crn, + service_name='TEST_SERVICE_NOT_FOUND', + ) + + def test_new_instance_without_required_params(self): + """ + new_instance_without_required_params() + """ + with pytest.raises(TypeError, match='new_instance\\(\\) missing \\d required positional arguments?: \'.*\''): + service = ZonesV1.new_instance() + + def test_new_instance_required_param_none(self): + """ + new_instance_required_param_none() + """ + with pytest.raises(ValueError, match='crn must be provided'): + service = ZonesV1.new_instance( + crn=None, + ) + + +class TestListZones: + """ + Test Class for list_zones + """ + @responses.activate def test_list_zones_all_params(self): + """ + list_zones() + """ # Set up mock - url = self.preprocess_url(base_url + '/v1/testString/zones') - mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": [{"id": "f1aba936b94213e5b8dca0c0dbf1f9cc", "created_on": "2014-01-01T05:20:00.12345Z", "modified_on": "2014-01-01T05:20:00.12345Z", "name": "test-example.com", "original_registrar": "GoDaddy", "original_dnshost": "NameCheap", "status": "active", "paused": false, "original_name_servers": ["ns1.originaldnshost.com"], "name_servers": ["ns001.name.cloud.ibm.com"]}], "result_info": {"page": 1, "per_page": 20, "count": 1, "total_count": 2000}}' - responses.add(responses.GET, - url, - body=mock_response, - content_type='application/json', - status=200) + url = preprocess_url('/v1/testString/zones') + mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": [{"id": "f1aba936b94213e5b8dca0c0dbf1f9cc", "created_on": "2014-01-01T05:20:00.12345Z", "modified_on": "2014-01-01T05:20:00.12345Z", "name": "test-example.com", "original_registrar": "GoDaddy", "original_dnshost": "NameCheap", "status": "active", "paused": false, "original_name_servers": ["ns1.originaldnshost.com"], "name_servers": ["ns001.name.cloud.ibm.com"], "type": "full", "verification_key": "476754457-428595283", "cname_suffix": "cdn.cloudflare.net"}], "result_info": {"page": 1, "per_page": 20, "count": 1, "total_count": 2000}}' + responses.add( + responses.GET, + url, + body=mock_response, + content_type='application/json', + status=200, + ) + + # Set up parameter values + page = 1 + per_page = 20 # Invoke method - response = service.list_zones() + response = _service.list_zones( + page=page, + per_page=per_page, + headers={}, + ) + + # Check for correct operation + assert len(responses.calls) == 1 + assert response.status_code == 200 + # Validate query params + query_string = responses.calls[0].request.url.split('?', 1)[1] + query_string = urllib.parse.unquote_plus(query_string) + assert 'page={}'.format(page) in query_string + assert 'per_page={}'.format(per_page) in query_string + + def test_list_zones_all_params_with_retries(self): + # Enable retries and run test_list_zones_all_params. + _service.enable_retries() + self.test_list_zones_all_params() + + # Disable retries and run test_list_zones_all_params. + _service.disable_retries() + self.test_list_zones_all_params() + + @responses.activate + def test_list_zones_required_params(self): + """ + test_list_zones_required_params() + """ + # Set up mock + url = preprocess_url('/v1/testString/zones') + mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": [{"id": "f1aba936b94213e5b8dca0c0dbf1f9cc", "created_on": "2014-01-01T05:20:00.12345Z", "modified_on": "2014-01-01T05:20:00.12345Z", "name": "test-example.com", "original_registrar": "GoDaddy", "original_dnshost": "NameCheap", "status": "active", "paused": false, "original_name_servers": ["ns1.originaldnshost.com"], "name_servers": ["ns001.name.cloud.ibm.com"], "type": "full", "verification_key": "476754457-428595283", "cname_suffix": "cdn.cloudflare.net"}], "result_info": {"page": 1, "per_page": 20, "count": 1, "total_count": 2000}}' + responses.add( + responses.GET, + url, + body=mock_response, + content_type='application/json', + status=200, + ) + # Invoke method + response = _service.list_zones() # Check for correct operation assert len(responses.calls) == 1 assert response.status_code == 200 + def test_list_zones_required_params_with_retries(self): + # Enable retries and run test_list_zones_required_params. + _service.enable_retries() + self.test_list_zones_required_params() + + # Disable retries and run test_list_zones_required_params. + _service.disable_retries() + self.test_list_zones_required_params() - #-------------------------------------------------------- - # test_list_zones_value_error() - #-------------------------------------------------------- @responses.activate def test_list_zones_value_error(self): + """ + test_list_zones_value_error() + """ # Set up mock - url = self.preprocess_url(base_url + '/v1/testString/zones') - mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": [{"id": "f1aba936b94213e5b8dca0c0dbf1f9cc", "created_on": "2014-01-01T05:20:00.12345Z", "modified_on": "2014-01-01T05:20:00.12345Z", "name": "test-example.com", "original_registrar": "GoDaddy", "original_dnshost": "NameCheap", "status": "active", "paused": false, "original_name_servers": ["ns1.originaldnshost.com"], "name_servers": ["ns001.name.cloud.ibm.com"]}], "result_info": {"page": 1, "per_page": 20, "count": 1, "total_count": 2000}}' - responses.add(responses.GET, - url, - body=mock_response, - content_type='application/json', - status=200) + url = preprocess_url('/v1/testString/zones') + mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": [{"id": "f1aba936b94213e5b8dca0c0dbf1f9cc", "created_on": "2014-01-01T05:20:00.12345Z", "modified_on": "2014-01-01T05:20:00.12345Z", "name": "test-example.com", "original_registrar": "GoDaddy", "original_dnshost": "NameCheap", "status": "active", "paused": false, "original_name_servers": ["ns1.originaldnshost.com"], "name_servers": ["ns001.name.cloud.ibm.com"], "type": "full", "verification_key": "476754457-428595283", "cname_suffix": "cdn.cloudflare.net"}], "result_info": {"page": 1, "per_page": 20, "count": 1, "total_count": 2000}}' + responses.add( + responses.GET, + url, + body=mock_response, + content_type='application/json', + status=200, + ) # Pass in all but one required param and check for a ValueError req_param_dict = { } for param in req_param_dict.keys(): - req_copy = {key:val if key is not param else None for (key,val) in req_param_dict.items()} + req_copy = {key: val if key is not param else None for (key, val) in req_param_dict.items()} with pytest.raises(ValueError): - service.list_zones(**req_copy) + _service.list_zones(**req_copy) + def test_list_zones_value_error_with_retries(self): + # Enable retries and run test_list_zones_value_error. + _service.enable_retries() + self.test_list_zones_value_error() + # Disable retries and run test_list_zones_value_error. + _service.disable_retries() + self.test_list_zones_value_error() -#----------------------------------------------------------------------------- -# Test Class for create_zone -#----------------------------------------------------------------------------- -class TestCreateZone(): - # Preprocess the request URL to ensure the mock response will be found. - def preprocess_url(self, request_url: str): - if re.fullmatch('.*/+', request_url) is None: - return request_url - else: - return re.compile(request_url.rstrip('/') + '/+') +class TestCreateZone: + """ + Test Class for create_zone + """ - #-------------------------------------------------------- - # create_zone() - #-------------------------------------------------------- @responses.activate def test_create_zone_all_params(self): + """ + create_zone() + """ # Set up mock - url = self.preprocess_url(base_url + '/v1/testString/zones') - mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": {"id": "f1aba936b94213e5b8dca0c0dbf1f9cc", "created_on": "2014-01-01T05:20:00.12345Z", "modified_on": "2014-01-01T05:20:00.12345Z", "name": "test-example.com", "original_registrar": "GoDaddy", "original_dnshost": "NameCheap", "status": "active", "paused": false, "original_name_servers": ["ns1.originaldnshost.com"], "name_servers": ["ns001.name.cloud.ibm.com"]}}' - responses.add(responses.POST, - url, - body=mock_response, - content_type='application/json', - status=200) + url = preprocess_url('/v1/testString/zones') + mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": {"id": "f1aba936b94213e5b8dca0c0dbf1f9cc", "created_on": "2014-01-01T05:20:00.12345Z", "modified_on": "2014-01-01T05:20:00.12345Z", "name": "test-example.com", "original_registrar": "GoDaddy", "original_dnshost": "NameCheap", "status": "active", "paused": false, "original_name_servers": ["ns1.originaldnshost.com"], "name_servers": ["ns001.name.cloud.ibm.com"], "type": "full", "verification_key": "476754457-428595283", "cname_suffix": "cdn.cloudflare.net"}}' + responses.add( + responses.POST, + url, + body=mock_response, + content_type='application/json', + status=200, + ) # Set up parameter values name = 'test-example.com' + type = 'full' # Invoke method - response = service.create_zone( + response = _service.create_zone( name=name, - headers={} + type=type, + headers={}, ) # Check for correct operation @@ -136,108 +270,141 @@ def test_create_zone_all_params(self): # Validate body params req_body = json.loads(str(responses.calls[0].request.body, 'utf-8')) assert req_body['name'] == 'test-example.com' + assert req_body['type'] == 'full' + + def test_create_zone_all_params_with_retries(self): + # Enable retries and run test_create_zone_all_params. + _service.enable_retries() + self.test_create_zone_all_params() + # Disable retries and run test_create_zone_all_params. + _service.disable_retries() + self.test_create_zone_all_params() - #-------------------------------------------------------- - # test_create_zone_required_params() - #-------------------------------------------------------- @responses.activate def test_create_zone_required_params(self): + """ + test_create_zone_required_params() + """ # Set up mock - url = self.preprocess_url(base_url + '/v1/testString/zones') - mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": {"id": "f1aba936b94213e5b8dca0c0dbf1f9cc", "created_on": "2014-01-01T05:20:00.12345Z", "modified_on": "2014-01-01T05:20:00.12345Z", "name": "test-example.com", "original_registrar": "GoDaddy", "original_dnshost": "NameCheap", "status": "active", "paused": false, "original_name_servers": ["ns1.originaldnshost.com"], "name_servers": ["ns001.name.cloud.ibm.com"]}}' - responses.add(responses.POST, - url, - body=mock_response, - content_type='application/json', - status=200) + url = preprocess_url('/v1/testString/zones') + mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": {"id": "f1aba936b94213e5b8dca0c0dbf1f9cc", "created_on": "2014-01-01T05:20:00.12345Z", "modified_on": "2014-01-01T05:20:00.12345Z", "name": "test-example.com", "original_registrar": "GoDaddy", "original_dnshost": "NameCheap", "status": "active", "paused": false, "original_name_servers": ["ns1.originaldnshost.com"], "name_servers": ["ns001.name.cloud.ibm.com"], "type": "full", "verification_key": "476754457-428595283", "cname_suffix": "cdn.cloudflare.net"}}' + responses.add( + responses.POST, + url, + body=mock_response, + content_type='application/json', + status=200, + ) # Invoke method - response = service.create_zone() - + response = _service.create_zone() # Check for correct operation assert len(responses.calls) == 1 assert response.status_code == 200 + def test_create_zone_required_params_with_retries(self): + # Enable retries and run test_create_zone_required_params. + _service.enable_retries() + self.test_create_zone_required_params() + + # Disable retries and run test_create_zone_required_params. + _service.disable_retries() + self.test_create_zone_required_params() - #-------------------------------------------------------- - # test_create_zone_value_error() - #-------------------------------------------------------- @responses.activate def test_create_zone_value_error(self): + """ + test_create_zone_value_error() + """ # Set up mock - url = self.preprocess_url(base_url + '/v1/testString/zones') - mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": {"id": "f1aba936b94213e5b8dca0c0dbf1f9cc", "created_on": "2014-01-01T05:20:00.12345Z", "modified_on": "2014-01-01T05:20:00.12345Z", "name": "test-example.com", "original_registrar": "GoDaddy", "original_dnshost": "NameCheap", "status": "active", "paused": false, "original_name_servers": ["ns1.originaldnshost.com"], "name_servers": ["ns001.name.cloud.ibm.com"]}}' - responses.add(responses.POST, - url, - body=mock_response, - content_type='application/json', - status=200) + url = preprocess_url('/v1/testString/zones') + mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": {"id": "f1aba936b94213e5b8dca0c0dbf1f9cc", "created_on": "2014-01-01T05:20:00.12345Z", "modified_on": "2014-01-01T05:20:00.12345Z", "name": "test-example.com", "original_registrar": "GoDaddy", "original_dnshost": "NameCheap", "status": "active", "paused": false, "original_name_servers": ["ns1.originaldnshost.com"], "name_servers": ["ns001.name.cloud.ibm.com"], "type": "full", "verification_key": "476754457-428595283", "cname_suffix": "cdn.cloudflare.net"}}' + responses.add( + responses.POST, + url, + body=mock_response, + content_type='application/json', + status=200, + ) # Pass in all but one required param and check for a ValueError req_param_dict = { } for param in req_param_dict.keys(): - req_copy = {key:val if key is not param else None for (key,val) in req_param_dict.items()} + req_copy = {key: val if key is not param else None for (key, val) in req_param_dict.items()} with pytest.raises(ValueError): - service.create_zone(**req_copy) + _service.create_zone(**req_copy) + def test_create_zone_value_error_with_retries(self): + # Enable retries and run test_create_zone_value_error. + _service.enable_retries() + self.test_create_zone_value_error() + # Disable retries and run test_create_zone_value_error. + _service.disable_retries() + self.test_create_zone_value_error() -#----------------------------------------------------------------------------- -# Test Class for delete_zone -#----------------------------------------------------------------------------- -class TestDeleteZone(): - # Preprocess the request URL to ensure the mock response will be found. - def preprocess_url(self, request_url: str): - if re.fullmatch('.*/+', request_url) is None: - return request_url - else: - return re.compile(request_url.rstrip('/') + '/+') +class TestDeleteZone: + """ + Test Class for delete_zone + """ - #-------------------------------------------------------- - # delete_zone() - #-------------------------------------------------------- @responses.activate def test_delete_zone_all_params(self): + """ + delete_zone() + """ # Set up mock - url = self.preprocess_url(base_url + '/v1/testString/zones/testString') + url = preprocess_url('/v1/testString/zones/testString') mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": {"id": "f1aba936b94213e5b8dca0c0dbf1f9cc"}}' - responses.add(responses.DELETE, - url, - body=mock_response, - content_type='application/json', - status=200) + responses.add( + responses.DELETE, + url, + body=mock_response, + content_type='application/json', + status=200, + ) # Set up parameter values zone_identifier = 'testString' # Invoke method - response = service.delete_zone( + response = _service.delete_zone( zone_identifier, - headers={} + headers={}, ) # Check for correct operation assert len(responses.calls) == 1 assert response.status_code == 200 + def test_delete_zone_all_params_with_retries(self): + # Enable retries and run test_delete_zone_all_params. + _service.enable_retries() + self.test_delete_zone_all_params() + + # Disable retries and run test_delete_zone_all_params. + _service.disable_retries() + self.test_delete_zone_all_params() - #-------------------------------------------------------- - # test_delete_zone_value_error() - #-------------------------------------------------------- @responses.activate def test_delete_zone_value_error(self): + """ + test_delete_zone_value_error() + """ # Set up mock - url = self.preprocess_url(base_url + '/v1/testString/zones/testString') + url = preprocess_url('/v1/testString/zones/testString') mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": {"id": "f1aba936b94213e5b8dca0c0dbf1f9cc"}}' - responses.add(responses.DELETE, - url, - body=mock_response, - content_type='application/json', - status=200) + responses.add( + responses.DELETE, + url, + body=mock_response, + content_type='application/json', + status=200, + ) # Set up parameter values zone_identifier = 'testString' @@ -247,65 +414,78 @@ def test_delete_zone_value_error(self): "zone_identifier": zone_identifier, } for param in req_param_dict.keys(): - req_copy = {key:val if key is not param else None for (key,val) in req_param_dict.items()} + req_copy = {key: val if key is not param else None for (key, val) in req_param_dict.items()} with pytest.raises(ValueError): - service.delete_zone(**req_copy) + _service.delete_zone(**req_copy) + def test_delete_zone_value_error_with_retries(self): + # Enable retries and run test_delete_zone_value_error. + _service.enable_retries() + self.test_delete_zone_value_error() + # Disable retries and run test_delete_zone_value_error. + _service.disable_retries() + self.test_delete_zone_value_error() -#----------------------------------------------------------------------------- -# Test Class for get_zone -#----------------------------------------------------------------------------- -class TestGetZone(): - # Preprocess the request URL to ensure the mock response will be found. - def preprocess_url(self, request_url: str): - if re.fullmatch('.*/+', request_url) is None: - return request_url - else: - return re.compile(request_url.rstrip('/') + '/+') +class TestGetZone: + """ + Test Class for get_zone + """ - #-------------------------------------------------------- - # get_zone() - #-------------------------------------------------------- @responses.activate def test_get_zone_all_params(self): + """ + get_zone() + """ # Set up mock - url = self.preprocess_url(base_url + '/v1/testString/zones/testString') - mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": {"id": "f1aba936b94213e5b8dca0c0dbf1f9cc", "created_on": "2014-01-01T05:20:00.12345Z", "modified_on": "2014-01-01T05:20:00.12345Z", "name": "test-example.com", "original_registrar": "GoDaddy", "original_dnshost": "NameCheap", "status": "active", "paused": false, "original_name_servers": ["ns1.originaldnshost.com"], "name_servers": ["ns001.name.cloud.ibm.com"]}}' - responses.add(responses.GET, - url, - body=mock_response, - content_type='application/json', - status=200) + url = preprocess_url('/v1/testString/zones/testString') + mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": {"id": "f1aba936b94213e5b8dca0c0dbf1f9cc", "created_on": "2014-01-01T05:20:00.12345Z", "modified_on": "2014-01-01T05:20:00.12345Z", "name": "test-example.com", "original_registrar": "GoDaddy", "original_dnshost": "NameCheap", "status": "active", "paused": false, "original_name_servers": ["ns1.originaldnshost.com"], "name_servers": ["ns001.name.cloud.ibm.com"], "type": "full", "verification_key": "476754457-428595283", "cname_suffix": "cdn.cloudflare.net"}}' + responses.add( + responses.GET, + url, + body=mock_response, + content_type='application/json', + status=200, + ) # Set up parameter values zone_identifier = 'testString' # Invoke method - response = service.get_zone( + response = _service.get_zone( zone_identifier, - headers={} + headers={}, ) # Check for correct operation assert len(responses.calls) == 1 assert response.status_code == 200 + def test_get_zone_all_params_with_retries(self): + # Enable retries and run test_get_zone_all_params. + _service.enable_retries() + self.test_get_zone_all_params() + + # Disable retries and run test_get_zone_all_params. + _service.disable_retries() + self.test_get_zone_all_params() - #-------------------------------------------------------- - # test_get_zone_value_error() - #-------------------------------------------------------- @responses.activate def test_get_zone_value_error(self): + """ + test_get_zone_value_error() + """ # Set up mock - url = self.preprocess_url(base_url + '/v1/testString/zones/testString') - mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": {"id": "f1aba936b94213e5b8dca0c0dbf1f9cc", "created_on": "2014-01-01T05:20:00.12345Z", "modified_on": "2014-01-01T05:20:00.12345Z", "name": "test-example.com", "original_registrar": "GoDaddy", "original_dnshost": "NameCheap", "status": "active", "paused": false, "original_name_servers": ["ns1.originaldnshost.com"], "name_servers": ["ns001.name.cloud.ibm.com"]}}' - responses.add(responses.GET, - url, - body=mock_response, - content_type='application/json', - status=200) + url = preprocess_url('/v1/testString/zones/testString') + mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": {"id": "f1aba936b94213e5b8dca0c0dbf1f9cc", "created_on": "2014-01-01T05:20:00.12345Z", "modified_on": "2014-01-01T05:20:00.12345Z", "name": "test-example.com", "original_registrar": "GoDaddy", "original_dnshost": "NameCheap", "status": "active", "paused": false, "original_name_servers": ["ns1.originaldnshost.com"], "name_servers": ["ns001.name.cloud.ibm.com"], "type": "full", "verification_key": "476754457-428595283", "cname_suffix": "cdn.cloudflare.net"}}' + responses.add( + responses.GET, + url, + body=mock_response, + content_type='application/json', + status=200, + ) # Set up parameter values zone_identifier = 'testString' @@ -315,47 +495,50 @@ def test_get_zone_value_error(self): "zone_identifier": zone_identifier, } for param in req_param_dict.keys(): - req_copy = {key:val if key is not param else None for (key,val) in req_param_dict.items()} + req_copy = {key: val if key is not param else None for (key, val) in req_param_dict.items()} with pytest.raises(ValueError): - service.get_zone(**req_copy) + _service.get_zone(**req_copy) + def test_get_zone_value_error_with_retries(self): + # Enable retries and run test_get_zone_value_error. + _service.enable_retries() + self.test_get_zone_value_error() + # Disable retries and run test_get_zone_value_error. + _service.disable_retries() + self.test_get_zone_value_error() -#----------------------------------------------------------------------------- -# Test Class for update_zone -#----------------------------------------------------------------------------- -class TestUpdateZone(): - # Preprocess the request URL to ensure the mock response will be found. - def preprocess_url(self, request_url: str): - if re.fullmatch('.*/+', request_url) is None: - return request_url - else: - return re.compile(request_url.rstrip('/') + '/+') +class TestUpdateZone: + """ + Test Class for update_zone + """ - #-------------------------------------------------------- - # update_zone() - #-------------------------------------------------------- @responses.activate def test_update_zone_all_params(self): + """ + update_zone() + """ # Set up mock - url = self.preprocess_url(base_url + '/v1/testString/zones/testString') - mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": {"id": "f1aba936b94213e5b8dca0c0dbf1f9cc", "created_on": "2014-01-01T05:20:00.12345Z", "modified_on": "2014-01-01T05:20:00.12345Z", "name": "test-example.com", "original_registrar": "GoDaddy", "original_dnshost": "NameCheap", "status": "active", "paused": false, "original_name_servers": ["ns1.originaldnshost.com"], "name_servers": ["ns001.name.cloud.ibm.com"]}}' - responses.add(responses.PATCH, - url, - body=mock_response, - content_type='application/json', - status=200) + url = preprocess_url('/v1/testString/zones/testString') + mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": {"id": "f1aba936b94213e5b8dca0c0dbf1f9cc", "created_on": "2014-01-01T05:20:00.12345Z", "modified_on": "2014-01-01T05:20:00.12345Z", "name": "test-example.com", "original_registrar": "GoDaddy", "original_dnshost": "NameCheap", "status": "active", "paused": false, "original_name_servers": ["ns1.originaldnshost.com"], "name_servers": ["ns001.name.cloud.ibm.com"], "type": "full", "verification_key": "476754457-428595283", "cname_suffix": "cdn.cloudflare.net"}}' + responses.add( + responses.PATCH, + url, + body=mock_response, + content_type='application/json', + status=200, + ) # Set up parameter values zone_identifier = 'testString' paused = False # Invoke method - response = service.update_zone( + response = _service.update_zone( zone_identifier, paused=paused, - headers={} + headers={}, ) # Check for correct operation @@ -365,48 +548,68 @@ def test_update_zone_all_params(self): req_body = json.loads(str(responses.calls[0].request.body, 'utf-8')) assert req_body['paused'] == False + def test_update_zone_all_params_with_retries(self): + # Enable retries and run test_update_zone_all_params. + _service.enable_retries() + self.test_update_zone_all_params() + + # Disable retries and run test_update_zone_all_params. + _service.disable_retries() + self.test_update_zone_all_params() - #-------------------------------------------------------- - # test_update_zone_required_params() - #-------------------------------------------------------- @responses.activate def test_update_zone_required_params(self): + """ + test_update_zone_required_params() + """ # Set up mock - url = self.preprocess_url(base_url + '/v1/testString/zones/testString') - mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": {"id": "f1aba936b94213e5b8dca0c0dbf1f9cc", "created_on": "2014-01-01T05:20:00.12345Z", "modified_on": "2014-01-01T05:20:00.12345Z", "name": "test-example.com", "original_registrar": "GoDaddy", "original_dnshost": "NameCheap", "status": "active", "paused": false, "original_name_servers": ["ns1.originaldnshost.com"], "name_servers": ["ns001.name.cloud.ibm.com"]}}' - responses.add(responses.PATCH, - url, - body=mock_response, - content_type='application/json', - status=200) + url = preprocess_url('/v1/testString/zones/testString') + mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": {"id": "f1aba936b94213e5b8dca0c0dbf1f9cc", "created_on": "2014-01-01T05:20:00.12345Z", "modified_on": "2014-01-01T05:20:00.12345Z", "name": "test-example.com", "original_registrar": "GoDaddy", "original_dnshost": "NameCheap", "status": "active", "paused": false, "original_name_servers": ["ns1.originaldnshost.com"], "name_servers": ["ns001.name.cloud.ibm.com"], "type": "full", "verification_key": "476754457-428595283", "cname_suffix": "cdn.cloudflare.net"}}' + responses.add( + responses.PATCH, + url, + body=mock_response, + content_type='application/json', + status=200, + ) # Set up parameter values zone_identifier = 'testString' # Invoke method - response = service.update_zone( + response = _service.update_zone( zone_identifier, - headers={} + headers={}, ) # Check for correct operation assert len(responses.calls) == 1 assert response.status_code == 200 + def test_update_zone_required_params_with_retries(self): + # Enable retries and run test_update_zone_required_params. + _service.enable_retries() + self.test_update_zone_required_params() + + # Disable retries and run test_update_zone_required_params. + _service.disable_retries() + self.test_update_zone_required_params() - #-------------------------------------------------------- - # test_update_zone_value_error() - #-------------------------------------------------------- @responses.activate def test_update_zone_value_error(self): + """ + test_update_zone_value_error() + """ # Set up mock - url = self.preprocess_url(base_url + '/v1/testString/zones/testString') - mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": {"id": "f1aba936b94213e5b8dca0c0dbf1f9cc", "created_on": "2014-01-01T05:20:00.12345Z", "modified_on": "2014-01-01T05:20:00.12345Z", "name": "test-example.com", "original_registrar": "GoDaddy", "original_dnshost": "NameCheap", "status": "active", "paused": false, "original_name_servers": ["ns1.originaldnshost.com"], "name_servers": ["ns001.name.cloud.ibm.com"]}}' - responses.add(responses.PATCH, - url, - body=mock_response, - content_type='application/json', - status=200) + url = preprocess_url('/v1/testString/zones/testString') + mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": {"id": "f1aba936b94213e5b8dca0c0dbf1f9cc", "created_on": "2014-01-01T05:20:00.12345Z", "modified_on": "2014-01-01T05:20:00.12345Z", "name": "test-example.com", "original_registrar": "GoDaddy", "original_dnshost": "NameCheap", "status": "active", "paused": false, "original_name_servers": ["ns1.originaldnshost.com"], "name_servers": ["ns001.name.cloud.ibm.com"], "type": "full", "verification_key": "476754457-428595283", "cname_suffix": "cdn.cloudflare.net"}}' + responses.add( + responses.PATCH, + url, + body=mock_response, + content_type='application/json', + status=200, + ) # Set up parameter values zone_identifier = 'testString' @@ -416,65 +619,78 @@ def test_update_zone_value_error(self): "zone_identifier": zone_identifier, } for param in req_param_dict.keys(): - req_copy = {key:val if key is not param else None for (key,val) in req_param_dict.items()} + req_copy = {key: val if key is not param else None for (key, val) in req_param_dict.items()} with pytest.raises(ValueError): - service.update_zone(**req_copy) + _service.update_zone(**req_copy) + def test_update_zone_value_error_with_retries(self): + # Enable retries and run test_update_zone_value_error. + _service.enable_retries() + self.test_update_zone_value_error() + # Disable retries and run test_update_zone_value_error. + _service.disable_retries() + self.test_update_zone_value_error() -#----------------------------------------------------------------------------- -# Test Class for zone_activation_check -#----------------------------------------------------------------------------- -class TestZoneActivationCheck(): - # Preprocess the request URL to ensure the mock response will be found. - def preprocess_url(self, request_url: str): - if re.fullmatch('.*/+', request_url) is None: - return request_url - else: - return re.compile(request_url.rstrip('/') + '/+') +class TestZoneActivationCheck: + """ + Test Class for zone_activation_check + """ - #-------------------------------------------------------- - # zone_activation_check() - #-------------------------------------------------------- @responses.activate def test_zone_activation_check_all_params(self): + """ + zone_activation_check() + """ # Set up mock - url = self.preprocess_url(base_url + '/v1/testString/zones/testString/activation_check') + url = preprocess_url('/v1/testString/zones/testString/activation_check') mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": {"id": "f1aba936b94213e5b8dca0c0dbf1f9cc"}}' - responses.add(responses.PUT, - url, - body=mock_response, - content_type='application/json', - status=200) + responses.add( + responses.PUT, + url, + body=mock_response, + content_type='application/json', + status=200, + ) # Set up parameter values zone_identifier = 'testString' # Invoke method - response = service.zone_activation_check( + response = _service.zone_activation_check( zone_identifier, - headers={} + headers={}, ) # Check for correct operation assert len(responses.calls) == 1 assert response.status_code == 200 + def test_zone_activation_check_all_params_with_retries(self): + # Enable retries and run test_zone_activation_check_all_params. + _service.enable_retries() + self.test_zone_activation_check_all_params() + + # Disable retries and run test_zone_activation_check_all_params. + _service.disable_retries() + self.test_zone_activation_check_all_params() - #-------------------------------------------------------- - # test_zone_activation_check_value_error() - #-------------------------------------------------------- @responses.activate def test_zone_activation_check_value_error(self): + """ + test_zone_activation_check_value_error() + """ # Set up mock - url = self.preprocess_url(base_url + '/v1/testString/zones/testString/activation_check') + url = preprocess_url('/v1/testString/zones/testString/activation_check') mock_response = '{"success": true, "errors": [["errors"]], "messages": [["messages"]], "result": {"id": "f1aba936b94213e5b8dca0c0dbf1f9cc"}}' - responses.add(responses.PUT, - url, - body=mock_response, - content_type='application/json', - status=200) + responses.add( + responses.PUT, + url, + body=mock_response, + content_type='application/json', + status=200, + ) # Set up parameter values zone_identifier = 'testString' @@ -484,10 +700,18 @@ def test_zone_activation_check_value_error(self): "zone_identifier": zone_identifier, } for param in req_param_dict.keys(): - req_copy = {key:val if key is not param else None for (key,val) in req_param_dict.items()} + req_copy = {key: val if key is not param else None for (key, val) in req_param_dict.items()} with pytest.raises(ValueError): - service.zone_activation_check(**req_copy) + _service.zone_activation_check(**req_copy) + def test_zone_activation_check_value_error_with_retries(self): + # Enable retries and run test_zone_activation_check_value_error. + _service.enable_retries() + self.test_zone_activation_check_value_error() + + # Disable retries and run test_zone_activation_check_value_error. + _service.disable_retries() + self.test_zone_activation_check_value_error() # endregion @@ -500,15 +724,17 @@ def test_zone_activation_check_value_error(self): # Start of Model Tests ############################################################################## # region -#----------------------------------------------------------------------------- -# Test Class for DeleteZoneRespResult -#----------------------------------------------------------------------------- -class TestDeleteZoneRespResult(): - - #-------------------------------------------------------- - # Test serialization/deserialization for DeleteZoneRespResult - #-------------------------------------------------------- + + +class TestModel_DeleteZoneRespResult: + """ + Test Class for DeleteZoneRespResult + """ + def test_delete_zone_resp_result_serialization(self): + """ + Test serialization/deserialization for DeleteZoneRespResult + """ # Construct a json representation of a DeleteZoneRespResult model delete_zone_resp_result_model_json = {} @@ -529,15 +755,16 @@ def test_delete_zone_resp_result_serialization(self): delete_zone_resp_result_model_json2 = delete_zone_resp_result_model.to_dict() assert delete_zone_resp_result_model_json2 == delete_zone_resp_result_model_json -#----------------------------------------------------------------------------- -# Test Class for ZoneActivationcheckRespResult -#----------------------------------------------------------------------------- -class TestZoneActivationcheckRespResult(): - #-------------------------------------------------------- - # Test serialization/deserialization for ZoneActivationcheckRespResult - #-------------------------------------------------------- +class TestModel_ZoneActivationcheckRespResult: + """ + Test Class for ZoneActivationcheckRespResult + """ + def test_zone_activationcheck_resp_result_serialization(self): + """ + Test serialization/deserialization for ZoneActivationcheckRespResult + """ # Construct a json representation of a ZoneActivationcheckRespResult model zone_activationcheck_resp_result_model_json = {} @@ -558,19 +785,20 @@ def test_zone_activationcheck_resp_result_serialization(self): zone_activationcheck_resp_result_model_json2 = zone_activationcheck_resp_result_model.to_dict() assert zone_activationcheck_resp_result_model_json2 == zone_activationcheck_resp_result_model_json -#----------------------------------------------------------------------------- -# Test Class for DeleteZoneResp -#----------------------------------------------------------------------------- -class TestDeleteZoneResp(): - #-------------------------------------------------------- - # Test serialization/deserialization for DeleteZoneResp - #-------------------------------------------------------- +class TestModel_DeleteZoneResp: + """ + Test Class for DeleteZoneResp + """ + def test_delete_zone_resp_serialization(self): + """ + Test serialization/deserialization for DeleteZoneResp + """ # Construct dict forms of any model objects needed in order to build this model. - delete_zone_resp_result_model = {} # DeleteZoneRespResult + delete_zone_resp_result_model = {} # DeleteZoneRespResult delete_zone_resp_result_model['id'] = 'f1aba936b94213e5b8dca0c0dbf1f9cc' # Construct a json representation of a DeleteZoneResp model @@ -595,25 +823,20 @@ def test_delete_zone_resp_serialization(self): delete_zone_resp_model_json2 = delete_zone_resp_model.to_dict() assert delete_zone_resp_model_json2 == delete_zone_resp_model_json -#----------------------------------------------------------------------------- -# Test Class for ListZonesResp -#----------------------------------------------------------------------------- -class TestListZonesResp(): - #-------------------------------------------------------- - # Test serialization/deserialization for ListZonesResp - #-------------------------------------------------------- +class TestModel_ListZonesResp: + """ + Test Class for ListZonesResp + """ + def test_list_zones_resp_serialization(self): + """ + Test serialization/deserialization for ListZonesResp + """ # Construct dict forms of any model objects needed in order to build this model. - result_info_model = {} # ResultInfo - result_info_model['page'] = 1 - result_info_model['per_page'] = 20 - result_info_model['count'] = 1 - result_info_model['total_count'] = 2000 - - zone_details_model = {} # ZoneDetails + zone_details_model = {} # ZoneDetails zone_details_model['id'] = 'f1aba936b94213e5b8dca0c0dbf1f9cc' zone_details_model['created_on'] = '2014-01-01T05:20:00.12345Z' zone_details_model['modified_on'] = '2014-01-01T05:20:00.12345Z' @@ -624,6 +847,15 @@ def test_list_zones_resp_serialization(self): zone_details_model['paused'] = False zone_details_model['original_name_servers'] = ['ns1.originaldnshost.com'] zone_details_model['name_servers'] = ['ns001.name.cloud.ibm.com'] + zone_details_model['type'] = 'full' + zone_details_model['verification_key'] = '476754457-428595283' + zone_details_model['cname_suffix'] = 'cdn.cloudflare.net' + + result_info_model = {} # ResultInfo + result_info_model['page'] = 1 + result_info_model['per_page'] = 20 + result_info_model['count'] = 1 + result_info_model['total_count'] = 2000 # Construct a json representation of a ListZonesResp model list_zones_resp_model_json = {} @@ -648,15 +880,16 @@ def test_list_zones_resp_serialization(self): list_zones_resp_model_json2 = list_zones_resp_model.to_dict() assert list_zones_resp_model_json2 == list_zones_resp_model_json -#----------------------------------------------------------------------------- -# Test Class for ResultInfo -#----------------------------------------------------------------------------- -class TestResultInfo(): - #-------------------------------------------------------- - # Test serialization/deserialization for ResultInfo - #-------------------------------------------------------- +class TestModel_ResultInfo: + """ + Test Class for ResultInfo + """ + def test_result_info_serialization(self): + """ + Test serialization/deserialization for ResultInfo + """ # Construct a json representation of a ResultInfo model result_info_model_json = {} @@ -680,19 +913,20 @@ def test_result_info_serialization(self): result_info_model_json2 = result_info_model.to_dict() assert result_info_model_json2 == result_info_model_json -#----------------------------------------------------------------------------- -# Test Class for ZoneActivationcheckResp -#----------------------------------------------------------------------------- -class TestZoneActivationcheckResp(): - #-------------------------------------------------------- - # Test serialization/deserialization for ZoneActivationcheckResp - #-------------------------------------------------------- +class TestModel_ZoneActivationcheckResp: + """ + Test Class for ZoneActivationcheckResp + """ + def test_zone_activationcheck_resp_serialization(self): + """ + Test serialization/deserialization for ZoneActivationcheckResp + """ # Construct dict forms of any model objects needed in order to build this model. - zone_activationcheck_resp_result_model = {} # ZoneActivationcheckRespResult + zone_activationcheck_resp_result_model = {} # ZoneActivationcheckRespResult zone_activationcheck_resp_result_model['id'] = 'f1aba936b94213e5b8dca0c0dbf1f9cc' # Construct a json representation of a ZoneActivationcheckResp model @@ -717,15 +951,16 @@ def test_zone_activationcheck_resp_serialization(self): zone_activationcheck_resp_model_json2 = zone_activationcheck_resp_model.to_dict() assert zone_activationcheck_resp_model_json2 == zone_activationcheck_resp_model_json -#----------------------------------------------------------------------------- -# Test Class for ZoneDetails -#----------------------------------------------------------------------------- -class TestZoneDetails(): - #-------------------------------------------------------- - # Test serialization/deserialization for ZoneDetails - #-------------------------------------------------------- +class TestModel_ZoneDetails: + """ + Test Class for ZoneDetails + """ + def test_zone_details_serialization(self): + """ + Test serialization/deserialization for ZoneDetails + """ # Construct a json representation of a ZoneDetails model zone_details_model_json = {} @@ -739,6 +974,9 @@ def test_zone_details_serialization(self): zone_details_model_json['paused'] = False zone_details_model_json['original_name_servers'] = ['ns1.originaldnshost.com'] zone_details_model_json['name_servers'] = ['ns001.name.cloud.ibm.com'] + zone_details_model_json['type'] = 'full' + zone_details_model_json['verification_key'] = '476754457-428595283' + zone_details_model_json['cname_suffix'] = 'cdn.cloudflare.net' # Construct a model instance of ZoneDetails by calling from_dict on the json representation zone_details_model = ZoneDetails.from_dict(zone_details_model_json) @@ -755,19 +993,20 @@ def test_zone_details_serialization(self): zone_details_model_json2 = zone_details_model.to_dict() assert zone_details_model_json2 == zone_details_model_json -#----------------------------------------------------------------------------- -# Test Class for ZoneResp -#----------------------------------------------------------------------------- -class TestZoneResp(): - #-------------------------------------------------------- - # Test serialization/deserialization for ZoneResp - #-------------------------------------------------------- +class TestModel_ZoneResp: + """ + Test Class for ZoneResp + """ + def test_zone_resp_serialization(self): + """ + Test serialization/deserialization for ZoneResp + """ # Construct dict forms of any model objects needed in order to build this model. - zone_details_model = {} # ZoneDetails + zone_details_model = {} # ZoneDetails zone_details_model['id'] = 'f1aba936b94213e5b8dca0c0dbf1f9cc' zone_details_model['created_on'] = '2014-01-01T05:20:00.12345Z' zone_details_model['modified_on'] = '2014-01-01T05:20:00.12345Z' @@ -778,6 +1017,9 @@ def test_zone_resp_serialization(self): zone_details_model['paused'] = False zone_details_model['original_name_servers'] = ['ns1.originaldnshost.com'] zone_details_model['name_servers'] = ['ns001.name.cloud.ibm.com'] + zone_details_model['type'] = 'full' + zone_details_model['verification_key'] = '476754457-428595283' + zone_details_model['cname_suffix'] = 'cdn.cloudflare.net' # Construct a json representation of a ZoneResp model zone_resp_model_json = {}