Esempio n. 1
0
    def test_get_token_raises_on_response_code_500(self, mock_jinja_env,
                                                   mock_requests):
        # type: (MagicMock, MagicMock) -> None
        # Arrange
        username = ''
        passwd = ''

        mock_requests.post.return_value = resp = MagicMock()
        resp.ok = False
        resp.headers.get.return_value = ('application/soap+xml')
        resp.status_code = 500

        resp.content = '''
        <Envelope>
            <Body>
                <RequestSecurityTokenResponse>
                    <RequestedSecurityToken>
                        <Assertion whatever='1'></Assertion>
                    </RequestedSecurityToken>
                </RequestSecurityTokenResponse>
            </Body>
        </Envelope>
        '''

        # Act
        with self.assertRaises(Exception):
            tokens.get_token(username, passwd)
Esempio n. 2
0
    def test_get_token_raises_stored_response_error(self, mock_jinja_env,
                                                    mock_requests):
        from requests import HTTPError

        # type: (MagicMock, MagicMock) -> None
        # Arrange
        username = ''
        passwd = ''

        mock_requests.post.return_value = resp = MagicMock()
        resp.ok = False
        resp.raise_for_status.side_effect = HTTPError

        resp.content = '''
        <Envelope>
            <Body>
                <RequestSecurityTokenResponse>
                    <RequestedSecurityToken>
                        <Assertion whatever='1'></Assertion>
                        <Assertion whatever='1'></Assertion>
                    </RequestedSecurityToken>
                </RequestSecurityTokenResponse>
            </Body>
        </Envelope>
        '''

        # Act
        with self.assertRaises(HTTPError):
            tokens.get_token(username, passwd)
Esempio n. 3
0
    def test_get_token_raises_on_too_many_tokens(self, mock_jinja_env,
                                                 mock_requests):
        # type: (MagicMock, MagicMock) -> None
        # Arrange
        username = ''
        passwd = ''

        mock_requests.post.return_value = resp = MagicMock()
        resp.ok = True

        resp.content = '''
        <Envelope>
            <Body>
                <RequestSecurityTokenResponse>
                    <RequestedSecurityToken>
                        <Assertion whatever='1'></Assertion>
                        <Assertion whatever='1'></Assertion>
                    </RequestedSecurityToken>
                </RequestSecurityTokenResponse>
            </Body>
        </Envelope>
        '''

        # Act
        with self.assertRaises(KeyError):
            tokens.get_token(username, passwd)
Esempio n. 4
0
    def test_wso2_login_failure(self, m):
        m.post(
            'http://example.com/auth',
            text=util.get_fixture('wso2-failed-login.xml'),
        )

        with self.assertRaises(Exception) as cm:
            tokens.get_token('hest', 'fest')

        self.assertEqual(
            cm.exception.args,
            ('The security token could not be authenticated or authorized', ))
Esempio n. 5
0
    def test_get_token(self, mock_requests):
        # type: (MagicMock, MagicMock) -> None
        # Arrange
        username = ''
        passwd = ''

        mock_requests.post.return_value = resp = MagicMock()
        resp.ok = True
        resp.content = '''
        <Body>
            <RequestSecurityTokenResponse>
                <RequestedSecurityToken>
                    <Assertion whatever='1'></Assertion>
                </RequestedSecurityToken>
            </RequestSecurityTokenResponse>
        </Body>
        '''

        expected_result = (b'saml-gzipped H4sIAAAAAAAC/7NxLC5OLSrJzM9TKM9I'
                           b'LEktSy2yVTJU0rfjUkADALryg9gqAAAA')

        # Act
        actual_result = tokens.get_token(username, passwd)

        # Assert
        self.assertEqual(expected_result, actual_result)
Esempio n. 6
0
    def test_get_token_pretty_printed(self, mock_jinja_env, mock_requests):
        # type: (MagicMock, MagicMock, MagicMock) -> None
        # Arrange
        username = ''
        passwd = ''

        mock_requests.post.return_value = resp = MagicMock()
        resp.ok = True
        resp.content = '''
            <Body>
                <RequestSecurityTokenResponse>
                    <RequestedSecurityToken>
                        <Assertion whatever="1">
                            <Issuer>issuer</Issuer>
                            <Subject>subject</Subject>
                            <Conditions>conditions</Conditions>
                        </Assertion>
                    </RequestedSecurityToken>
                </RequestSecurityTokenResponse>
            </Body>'''

        expected = b'''<Assertion whatever="1">
                            <Issuer>issuer</Issuer>
                            <Subject>subject</Subject>
                            <Conditions>conditions</Conditions>
                        </Assertion>
                    \n'''

        # Act
        actual = tokens.get_token(username, passwd, pretty_print=True)

        # Assert
        self.assertEqual(expected, actual)
Esempio n. 7
0
    def test_adfs_login(self, m):
        m.post(
            'http://example.com/auth',
            text=util.get_fixture('adfs-successful-login.xml'),
        )

        assertion = util.get_fixture('adfs-assertion.txt', 'rb')

        self.assertEqual(assertion, tokens.get_token('hest', 'fest'))
Esempio n. 8
0
    def test_get_token_raises_on_fault(self, mock_jinja_env, mock_requests):
        # type: (MagicMock, MagicMock) -> None
        # Arrange
        username = ''
        passwd = ''

        mock_requests.post.return_value = resp = MagicMock()
        resp.ok = True

        resp.content = '''
        <Envelope>
            <Body>
                <Fault></Fault>
            </Body>
        </Envelope>
        '''

        # Act
        with self.assertRaises(Exception):
            tokens.get_token(username, passwd)