Exemplo n.º 1
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)
Exemplo n.º 2
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)
Exemplo n.º 3
0
    def test_3_run_recon_to_ldap(self):
        """Test to run reconciliation to ldap"""

        headers = self.idmcfg.get_admin_headers({
            'Content-Type': 'application/json'
        })

        params = {
            '_action': 'recon',
            'mapping': 'managedUser_systemLdapAccounts',
            'waitForCompletion': 'True'
        }

        logger.test_step('Reconciliation')
        response = post(verify=self.idmcfg.ssl_verify, url=self.idmcfg.idm_url + '/recon', params=params,
                        headers=headers)
        rest.check_http_status(http_result=response, expected_status=200)
Exemplo n.º 4
0
    def test_6_user_self_registration(self):
        """Test to use self service registration as user"""

        user_data = {
            "input": {
                "user": {
                    "userName": "******",
                    "givenName": "rick",
                    "sn": "sutter",
                    "mail": "*****@*****.**",
                    "password": "******",
                    "preferences": {
                        "updates": False,
                        "marketing": False
                    }
                },
                "kba": [
                    {
                        "answer": "black",
                        "questionId": "1"
                    }
                ]
            }
        }

        headers = {'Content-Type': 'application/json',
                   'X-OpenIDM-Username': '******',
                   'X-OpenIDM-Password': '******',
                   'Cache-Control': 'no-cache'}
        params = {'_action': 'submitRequirements'}

        logger.test_step('Get token')
        response = post(verify=self.idmcfg.ssl_verify, url=self.idmcfg.rest_selfreg_url, params=params,
                        headers=headers, json=user_data)
        rest.check_http_status(http_result=response, expected_status=200)

        token = response.json()["token"]
        user_data["token"] = token

        logger.test_step('Self register as user')
        response = post(verify=self.idmcfg.ssl_verify, url=self.idmcfg.rest_selfreg_url, params=params,
                        headers=headers, json=user_data)
        rest.check_http_status(http_result=response, expected_status=200)

        logger.test_step('Expecting success in returned json"')
        assert (response.json()['status']['success'] is True), "Response's status is not True"
Exemplo n.º 5
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']}
Exemplo n.º 6
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': '******',
            '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
Exemplo n.º 7
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': '*'})
        payload = """{"userName": "******",
                   "telephoneNumber": "6669876987",
                   "givenName": "devopsguy",
                   "description": "Just another user",
                   "sn": "sutter",
                   "mail": "*****@*****.**",
                   "password": "******",
                   "accountStatus": "active"} """

        logger.test_step('Update test user')
        response = put(verify=self.idmcfg.ssl_verify, url=self.idmcfg.rest_managed_user_url + self.testuser,
                       headers=headers, data=payload)
        rest.check_http_status(http_result=response, expected_status=200)
Exemplo n.º 8
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': '******',
               '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
Exemplo n.º 9
0
    def setup_class(cls):
        """Setup a user that will be tested in user login."""

        headers = {'X-OpenAM-Username': '******', 'X-OpenAM-Password': '******',
                   'Content-Type': 'application/json', 'Accept-API-Version': 'resource=2.0, protocol=1.0'}

        logger.test_step('Admin login')
        response = post(verify=cls.amcfg.ssl_verify, url=cls.amcfg.rest_authn_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': '******',
                     'userpassword': '******',
                     'mail': '*****@*****.**'}

        logger.test_step('Expecting test user to be created - HTTP-201')
        response = post(verify=cls.amcfg.ssl_verify, url=cls.amcfg.am_url + '/json/realms/root/users/?_action=create',
                        headers=headers, json=user_data)
        rest.check_http_status(http_result=response, expected_status=201)
Exemplo n.º 10
0
    def teardown_class(cls):
        """Delete user rsutter"""

        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)

        _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)
Exemplo n.º 11
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)
Exemplo n.º 12
0
    def test_access_neu_url(self):
        """Test if we can access resource without login - allowed by not enforced url"""

        logger.test_step('Expecting to have access to NEU url')
        response = get(verify=self.amcfg.ssl_verify, url=self.agent_cfg.agent_url + self.neu_url)
        rest.check_http_status(http_result=response, expected_status=200)
Exemplo n.º 13
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)
Exemplo n.º 14
0
    def test_7_user_reset_pw(self):
        """Test to use self service password reset as user"""

        current_session = session()

        headers_init = {
            'Content-Type': 'application/json',
            'X-OpenIDM-Username': '******',
            'X-OpenIDM-Password': '******',
            'Cache-Control': 'no-cache',
            'X-OpenIDM-NoSession': "true",
            "Accept-API-Version": "protocol=1.0,resource=1.0"
        }

        headers = {
            'Content-Type': 'application/json',
            'X-OpenIDM-Username': '******',
            'X-OpenIDM-Password': '******',
            'Cache-Control': 'no-cache'
        }

        params = {
            '_action': 'submitRequirements'
        }

        payload1 = {
            "input": {
                'queryFilter': 'userName eq \"rsutter\"'
            }
        }

        logger.test_step('Stage 1 - Try to find user with query for pw reset')
        response_stage1 = current_session.post(verify=self.idmcfg.ssl_verify, url=self.idmcfg.rest_selfpwreset_url,
                                               headers=headers_init, params=params, json=payload1)
        rest.check_http_status(http_result=response_stage1, expected_status=200)

        payload2 = {
            "token": response_stage1.json()["token"],
            "input": {
                'queryFilter': 'userName eq \"rsutter\"'
            }
        }

        logger.test_step('Stage 2 - Query user')
        response_stage2 = current_session.post(verify=self.idmcfg.ssl_verify, url=self.idmcfg.rest_selfpwreset_url,
                                               headers=headers_init, params=params, json=payload2)
        rest.check_http_status(http_result=response_stage2, expected_status=200)

        payload3 = {
            "token": response_stage2.json()["token"],
            "input": {
                "answer1": "black"
            }
        }

        logger.test_step('Stage 3 - Answer question')
        response_stage3 = current_session.post(verify=self.idmcfg.ssl_verify, url=self.idmcfg.rest_selfpwreset_url,
                                               headers=headers, params=params, json=payload3)
        rest.check_http_status(http_result=response_stage3, expected_status=200)

        payload4 = {
            "token": response_stage3.json()["token"],
            "input": {
                "password": "******"
            }
        }

        logger.test_step('Stage 4 - Password reset')
        response_stage4 = current_session.post(verify=self.idmcfg.ssl_verify, url=self.idmcfg.rest_selfpwreset_url,
                                               headers=headers, params=params, json=payload4)
        rest.check_http_status(http_result=response_stage4, expected_status=200)

        current_session.close()