def patch_case_request_title(self, case_request=None, case_request_id=None, payload=None): if not case_request and case_request_id: case_request = self.get_case_request_by_id( case_request_id=case_request_id) elif not case_request: raise ValueError( 'Must specify case object or case id to patch description.') url = extract(body=case_request.json(), path="$.links[?(@.rel=='modifytitle')].href") json = MongoDBConnection(db='TestData', coll='JsonModels') json = json.coll.find_one({'json_model': 'modify_case_request_title'}, { 'payload': 1, '_id': 0 }) if not payload: payload = extract(body=json, path='$.payload') r = self._user.patch(url=url, payload=payload) return r
def post_case_request_document(self, file, case_request=None, case_request_id=None): if case_request_id and case_request: case_request = self.get_case_request_by_id( case_request_id=case_request_id) elif not case_request: raise ValueError( "Must specify opportunity or opportunity id to patch document to." ) url = extract(body=case_request.json(), path='$.links[?(@.rel=="modifycasedocuments")].href') filename = 'test_document.pdf' mp_encoder = MultipartEncoder( fields={ 'documentDetail': dumps({"fileName": filename}), 'file': (filename, file.open(mode='rb'), 'application/pdf'), }) r = self._user.post(url=url, data=mp_encoder, to_string=True) url = extract(body=r.json(), path='$.case.links[[email protected]=="self"].href') r = self._user.get(url=url) return r
def put_case_contact(self, case_request=None, case_request_id=None, contact_id=None): if case_request_id and not case_request: case_request = self.get_case_request_by_id(case_request_id=case_request_id) elif not case_request: raise ValueError('Must specify case object or case id to patch description.') url = extract(body=case_request.json(), path='$.links[?(@.rel=="modifycasecontacts")].href') payload = self.set_valid_contact_to_patch(case_request=case_request, contact_id=contact_id) r = self._user.put(url=url, payload=payload) url = extract(body=r.json(), path='$.caseContacts..case.links[?(@.rel=="self")].href') r = self._user.get(url=url) return r
def patch_case_request_title(self, case_request=None, case_request_id=None, payload=None): if not case_request and case_request_id: case_request = self.get_case_request_by_id( case_request_id=case_request_id) elif not case_request: raise ValueError( 'Must specify case object or case id to patch description.') url = extract(body=case_request.json(), path="$.links[?(@.rel=='modifytitle')].href") json = MongoDBConnection(db='TestData', coll='JsonModels') json = json.coll.find_one({'json_model': 'modify_case_request_title'}, { 'payload': 1, '_id': 0 }) if not payload: payload = json.get('payload') payload = update_json(body=payload, values={ '$.caseTitle': "aut_test_%s" % datetime.now().strftime("DS1_%Y%m%d_%H%M") }) r = self._user.patch(url=url, payload=payload) return r
def set_valid_contact_to_patch(self, case_request=None, case_request_id=None, contact_id=None): if case_request_id and not case_request: case_request = self.get_case_request_by_id( case_request_id=case_request_id) elif not case_request: raise ValueError( 'Must specify case object or case id to patch description.') contacts = self.get_case_available_contacts(case_request=case_request) contacts_ids = extract(body=contacts.json(), path='$.contacts..contactId', multiple=True) if contact_id and contact_id in contacts and isinstance( contact_id, int): print('ContactId available! continue...') return self.prepare_contact_payload(contact_id=contact_id) else: try: print('Choosing the first contact available of: %s' % contacts_ids) return self.prepare_contact_payload(contact_id=contacts_ids[0]) except IndexError as e: raise ( 'There are no contacts available for the chosen case. Check data.' )
def get_case_available_contacts(self, case_request=None, case_request_id=None): if case_request_id and not case_request: case_request = self.get_case_request_by_id(case_request_id=case_request_id) elif not case_request: raise ValueError('Must specify case object or case id to patch description.') url = extract(body=case_request.json(), path='$.links[?(@.rel=="contacts")].href') r = self._user.get(url=url) return r
def get_case_types(self, case_request_id=None, case_request=None): if case_request_id and not case_request: case_request = self.get_case_request_by_id( case_request_id=case_request_id) elif not case_request: raise ValueError( 'Must specify case object or case id to patch description.') url = extract(body=case_request.json(), path="$.links[?(@.rel=='casetypes')].href") types = self._user.get(url=url) return types
def patch_case_request_type(self, case_request_id=None, case_request=None, case_type_id=None): if case_request_id and not case_request: case_request = self.get_case_request_by_id( case_request_id=case_request_id) elif not case_request: raise ValueError( 'Must specify case object or case id to patch description.') types = self.get_case_types(case_request=case_request) type_ids = extract(body=types.json(), path='$.caseTypes..caseTypeId', multiple=True) if type_ids: if case_type_id in type_ids: print('CaseTypeId available! continue') url = extract( body=types.json(), path= '$.caseTypes[?(@.caseTypeId==1)].links[?(@.method=="PATCH")].href' ) else: print('Choosing first caseTypeId available of: %s' % type_ids) url = extract( body=types.json(), path='$.caseTypes[0].links[?(@.method=="PATCH")].href') r = self._user.patch(url=url) return r elif not type_ids: raise ( 'There are no case types available for the chosen case. Check data.' )
def login(self): api = ConfigLogin().configure_test_data_login(env=self._env) headers = extract(body=api, path="$..headers") body = extract(body=api, path="$..body") body = update_json(body=body, values={ "username": self._user, "password": self._password }) url = extract(body=api, path="$..url") self._session = self.post(url=url, data=body, headers=headers, login=True) self.store_session_id(response=self._session) self.store_user_roles(response=self._session) print('\n User logged in: %s' % self._user) print('LegalEntity chosen: %s' % self._legal_entity) print('-' * 20) return self._session
def post_new_case_request(self, customer_id=None, payload=None): json = MongoDBConnection(db='TestData', coll='JsonModels') json = json.coll.find_one({'json_model': 'new_case_request'}, { 'payload': 1, 'url': 1, '_id': 0 }) url = extract(body=json, path='$.url') if not payload and customer_id: payload = update_json(body=json['payload'], values={'$..customerId': customer_id}) r = self._user.post(url=url, payload=payload) return r
def patch_case_to_requested(self, case_request_id=None, case_request=None): if case_request_id and not case_request: case_request = self.get_case_request_by_id( case_request_id=case_request_id) elif not case_request: raise ValueError( 'Must specify case object or case id to patch description.') url = extract(body=case_request.json(), path='$.links[?(@.rel=="requested")].href') if url: r = self._user.patch(url=url) else: raise ('CaseRequest is not ready to be requested. Check data.') return r
def configure_environment(self, env, layer): env_object = self._config.coll.find_one({'name': env}) base_url = extract(body=env_object, path='$.%s' % layer) return base_url
def post_new(self, legal_entity_id=None, payload=None): r = self.post_new_opportunity(legal_entity_id=legal_entity_id, body=payload) self._id = extract(body=r.json(), path="$..opportunityId") return r