def get_am_version_info(): am_cfg = AMConfig() logger.info("Get software version of the OpenAM instance") headers = { 'X-OpenAM-Username': '******', 'X-OpenAM-Password': os.environ['AM_ADMIN_PWD'], 'Content-Type': 'application/json', 'Accept-API-Version': 'resource=2.0, protocol=1.0' } response = post(verify=am_cfg.ssl_verify, url=am_cfg.rest_authn_url, headers=headers) rest.check_http_status(http_result=response, expected_status=200) admin_token = response.json()['tokenId'] logger.info('Get AM version') headers = { 'Content-Type': 'application/json', 'Accept-API-Version': 'resource=1.0', 'iplanetdirectorypro': admin_token } response = get(verify=am_cfg.ssl_verify, url=am_cfg.am_url + '/json/serverinfo/version', headers=headers) rest.check_http_status(http_result=response, expected_status=200) version_info = "{} (build: {}, revision: {})".format( response.json()['version'], response.json()['date'], response.json()['revision']) return version_info
def create_user(self, username, password='******'): headers = { 'X-OpenAM-Username': '******', 'X-OpenAM-Password': self.amadmin_pwd, 'Content-Type': 'application/json', 'Accept-API-Version': 'resource=2.0, protocol=1.0' } logger.test_step('Admin login') response = post(verify=self.ssl_verify, url=self.rest_authn_admin_url, headers=headers) rest.check_http_status(http_result=response, expected_status=200) admin_token = response.json()["tokenId"] headers = { 'iPlanetDirectoryPro': admin_token, 'Content-Type': 'application/json', 'Accept-API-Version': 'resource=3.0, protocol=2.1' } user_data = { 'username': username, 'userpassword': password, 'mail': f'{username}@forgerock.com' } logger.test_step('Expecting test user to be created - HTTP-201') response = post(verify=self.ssl_verify, url=self.am_url + '/json/realms/root/users/?_action=create', headers=headers, json=user_data) rest.check_http_status(http_result=response, expected_status=201)
def delete_user(self, username): headers = { 'X-OpenAM-Username': '******', 'X-OpenAM-Password': self.amadmin_pwd, 'Content-Type': 'application/json', 'Accept-API-Version': 'resource=2.0, protocol=1.0' } logger.test_step('Admin login') response = post(verify=self.ssl_verify, url=self.rest_authn_admin_url, headers=headers) rest.check_http_status(http_result=response, expected_status=200) admin_token = response.json()["tokenId"] headers = { 'iPlanetDirectoryPro': admin_token, 'Content-Type': 'application/json', 'Accept-API-Version': 'resource=3.0, protocol=2.1' } logger.test_step('Expecting test user to be deleted - HTTP-200') response = delete(verify=self.ssl_verify, url=self.am_url + f'/json/realms/root/users/{username}', headers=headers) rest.check_http_status(http_result=response, expected_status=200)
def test_0_ping(self): """Test if OpenAM is responding on isAlive endpoint""" logger.test_step('Ping OpenAM isAlive.jsp') response = get(verify=self.amcfg.ssl_verify, url=self.amcfg.am_url + '/isAlive.jsp') rest.check_http_status(http_result=response, expected_status=200)
def teardown_class(cls): """""" headers1 = cls.idmcfg.get_admin_headers( {'Content-Type': 'application/json'}) logger.test_step('Get user id') response = get(verify=cls.idmcfg.ssl_verify, url=cls.idmcfg.rest_managed_user_url + '?_queryFilter=true', headers=headers1).json() # rest.check_http_status(http_result=response, expected_status=200) if response['resultCount'] == 0: return _id = response["result"][0]["_id"] headers2 = cls.idmcfg.get_admin_headers({ 'Content-Type': 'application/json', 'if-match': '*', }) logger.test_step('Delete user') response = delete(verify=cls.idmcfg.ssl_verify, url=cls.idmcfg.rest_managed_user_url + '/' + _id, headers=headers2) rest.check_http_status(http_result=response, expected_status=200)
def test_0_ping(self): """Simple ping test to IDM""" logger.test_step('Ping OpenIDM') response = get(verify=self.idmcfg.ssl_verify, url=self.idmcfg.rest_ping_url, headers=self.idmcfg.get_admin_headers(None)) rest.check_http_status(http_result=response, expected_status=200)
def delete_user(self, user_id): headers = self.get_admin_headers({ 'Content-Type': 'application/json', 'if-match': '*', }) logger.test_step('Delete test user') response = delete(verify=self.ssl_verify, url=f'{self.rest_managed_user_url}/{user_id}', headers=headers) rest.check_http_status(http_result=response, expected_status=200)
def create_user(self, payload): headers = self.get_admin_headers({ 'Content-Type': 'application/json', }) logger.test_step('Create test user') response = post(verify=self.ssl_verify, url=f'{self.rest_managed_user_url}?_action=create', headers=headers, data=payload) rest.check_http_status(http_result=response, expected_status=201)
def login_user(self, username, password): headers = { 'X-OpenAM-Username': username, 'X-OpenAM-Password': password, 'Content-Type': 'application/json', 'Accept-API-Version': 'resource=2.0, protocol=1.0' } logger.test_step(f'User {username} authn REST - AM') response = post(verify=self.ssl_verify, url=self.rest_authn_url, headers=headers) rest.check_http_status(http_result=response, expected_status=200)
def get_idm_version_info(): idm_cfg = IDMConfig() logger.info("Get software version of the OpenIDM instance") headers = idm_cfg.get_admin_headers({'Content-Type': 'application/json'}) response = get(verify=idm_cfg.ssl_verify, url=idm_cfg.idm_url + '/info/version', headers=headers) rest.check_http_status(http_result=response, expected_status=200) version_info = "{} (build: {}, revision: {})".format( response.json()['productVersion'], response.json()['productBuildDate'], response.json()['productRevision']) return version_info
def test_2_user_login(self): """Test AuthN as user""" headers = { 'X-OpenAM-Username': '******', 'X-OpenAM-Password': '******', 'Content-Type': 'application/json', 'Accept-API-Version': 'resource=2.0, protocol=1.0' } logger.test_step('User authn REST') response = post(verify=self.amcfg.ssl_verify, url=self.amcfg.rest_authn_url, headers=headers) rest.check_http_status(http_result=response, expected_status=200)
def test_1_admin_login(self): """Test AuthN as amadmin""" headers = { 'X-OpenAM-Username': '******', 'X-OpenAM-Password': os.environ['AM_ADMIN_PWD'], 'Content-Type': 'application/json', 'Accept-API-Version': 'resource=2.0, protocol=1.0' } logger.test_step('Admin authn REST') response = post(verify=self.amcfg.ssl_verify, url=self.amcfg.rest_authn_admin_url, headers=headers) rest.check_http_status(http_result=response, expected_status=200)
def test_2_update_managed_user(self): """Test to update managed user as admin""" headers = self.idmcfg.get_admin_headers({ 'Content-Type': 'application/json', 'If-Match': '*' }) user_id = self.idmcfg.get_userid_by_name(self.testuser) payload = """[{"operation":"replace", "field":"/telephoneNumber", "value":"15031234567"}]""" logger.test_step('Update test user') response = patch(verify=self.idmcfg.ssl_verify, url=f'{self.idmcfg.rest_managed_user_url}/{user_id}', headers=headers, data=payload) rest.check_http_status(response, expected_status=200)
def version(self): """ Return the product version information. :return: Dictionary """ amcfg = AMConfig() logger.debug('Get admin token') headers = { 'X-OpenAM-Username': '******', 'X-OpenAM-Password': os.environ['AM_ADMIN_PWD'], 'Content-Type': 'application/json', 'Accept-API-Version': 'resource=2.0, protocol=1.0' } response = post(verify=amcfg.ssl_verify, url=amcfg.rest_authn_url, headers=headers) rest.check_http_status(http_result=response, expected_status=200) admin_token = response.json()['tokenId'] logger.debug('Get AM version') headers = { 'Content-Type': 'application/json', 'Accept-API-Version': 'resource=1.0', 'iplanetdirectorypro': admin_token } response = get(verify=amcfg.ssl_verify, url=amcfg.am_url + '/json/serverinfo/version', headers=headers) rest.check_http_status(http_result=response, expected_status=200) version = response.json()['version'] revision = response.json()['revision'] date = response.json()['date'] am_metadata = { 'TITLE': self.product_type, 'DESCRIPTION': self.name, 'VERSION': version, 'REVISION': revision, 'DATE': date } return am_metadata
def version(self): """ Return the product version information. :return: Dictionary """ idm_cfg = IDMConfig() logger.info("Get software version of the OpenIDM instance") headers = idm_cfg.get_admin_headers( {'Content-Type': 'application/json'}) response = get(verify=idm_cfg.ssl_verify, url=idm_cfg.idm_url + '/info/version', headers=headers) rest.check_http_status(http_result=response, expected_status=200) return { 'TITLE': self.product_type, 'DESCRIPTION': self.name, 'VERSION': response.json()['productVersion'], 'REVISION': response.json()['productRevision'], 'DATE': response.json()['productBuildDate'] }
def test_3_oauth2_access_token(self): """Test Oauth2 access token""" headers = { 'X-OpenAM-Username': '******', 'X-OpenAM-Password': '******', 'Content-Type': 'application/json', 'Accept-API-Version': 'resource=2.0, protocol=1.0' } logger.test_step('User authn REST') response = post(verify=self.amcfg.ssl_verify, url=self.amcfg.rest_authn_url, headers=headers) rest.check_http_status(http_result=response, expected_status=200) tokenid = response.json()['tokenId'] cookies = response.cookies params = (('client_id', 'smokeclient'), ('scope', 'cn'), ('state', '1234'), ('redirect_uri', 'https://fake.com'), ('response_type', 'code'), ('realm', self.amcfg.am_realm)) headers = {'Content-Type': 'application/x-www-form-urlencoded'} data = {"decision": "Allow", "csrf": tokenid} logger.test_step('Oauth2 authz REST') response = post(verify=self.amcfg.ssl_verify, url=self.amcfg.rest_oauth2_authz_url, data=data, headers=headers, cookies=cookies, params=params, allow_redirects=False) rest.check_http_status(http_result=response, expected_status=302) location = response.headers['Location'] print(location) auth_code = re.findall('(?<=code=)(.+?)(?=&)', location) data = { 'grant_type': 'authorization_code', 'code': auth_code[0], 'redirect_uri': 'https://fake.com', 'client_id': 'smokeclient' } logger.test_step('Oauth2 get access-token REST') response = post(verify=self.amcfg.ssl_verify, url=self.amcfg.rest_oauth2_access_token_url, data=data, headers=headers) rest.check_http_status(http_result=response, expected_status=200)