Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
    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)
Ejemplo n.º 7
0
    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)
Ejemplo n.º 8
0
    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)
Ejemplo n.º 9
0
    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)
Ejemplo n.º 10
0
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
Ejemplo n.º 11
0
    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)
Ejemplo n.º 12
0
    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)
Ejemplo n.º 13
0
    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)
Ejemplo n.º 14
0
    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
Ejemplo n.º 15
0
    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']
        }
Ejemplo n.º 16
0
    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)