def test_run_server(): bacp: BrowserAzureCredentialsProvider = make_valid_browser_azure_credential_provider( ) MockSocket.mocked_data = browser_azure_data.valid_response result: str = bacp.run_server(listen_socket=MockSocket(), idp_response_timeout=10, state=browser_azure_data.state) assert result == browser_azure_data.code
def test_run_server_parses_saml_response(http_response): MockSocket.mocked_data = http_response with patch("socket.socket", return_value=MockSocket()): browser_saml_credentials: BrowserSamlCredentialsProvider = BrowserSamlCredentialsProvider( ) parsed_saml_response: str = browser_saml_credentials.run_server( listen_port=0, idp_response_timeout=5) assert parsed_saml_response == saml_response_data.encoded_saml_response.decode( "utf-8")
def test_run_server_invalid_data(data): data, expected_exception = data bacp: BrowserAzureCredentialsProvider = make_valid_browser_azure_credential_provider( ) MockSocket.mocked_data = data with pytest.raises(InterfaceError) as ex: bacp.run_server(listen_socket=MockSocket(), idp_response_timeout=10, state=browser_azure_data.state) assert expected_exception in str(ex.value)
def test_run_server_calls_get_success_response_http_msg(mocker): bacp: BrowserAzureCredentialsProvider = make_valid_browser_azure_credential_provider( ) MockSocket.mocked_data = browser_azure_data.valid_response listen_socket: MockSocket = MockSocket() spy = mocker.spy(bacp, "close_window_http_resp") result: str = bacp.run_server(listen_socket=listen_socket, idp_response_timeout=10, state=browser_azure_data.state) assert spy.called is True assert spy.call_count == 1
def test_fetch_authorization_errors_should_fail(mocker): bacp: BrowserAzureCredentialsProvider = make_valid_browser_azure_credential_provider( ) mocker.patch( "redshift_connector.plugin.BrowserAzureCredentialsProvider.open_browser", return_value=None) with patch( "redshift_connector.plugin.BrowserAzureCredentialsProvider.run_server" ) as mocked_server: mocked_server.side_effect = Exception("bad mistake") with pytest.raises(Exception, match="bad mistake"): bacp.fetch_authorization_token(listen_socket=MockSocket())
def test_fetch_authorization_token_returns_authorization_token(mocker): bacp: BrowserAzureCredentialsProvider = make_valid_browser_azure_credential_provider( ) mock_authorization_token: str = "my_authorization_token" mocker.patch( "redshift_connector.plugin.BrowserAzureCredentialsProvider.open_browser", return_value=None) mocker.patch( "redshift_connector.plugin.BrowserAzureCredentialsProvider.run_server", return_value=mock_authorization_token) assert bacp.fetch_authorization_token( listen_socket=MockSocket()) == mock_authorization_token
def test_get_saml_assertion_uses_listen_port(mocker): bacp: BrowserAzureCredentialsProvider = make_valid_browser_azure_credential_provider( ) mocked_token: str = "test_token" mocked_saml_assertion: str = "test_saml_assertion" mocked_socket = MockSocket() mocker.patch( "redshift_connector.plugin.BrowserAzureCredentialsProvider.get_listen_socket", return_value=mocked_socket) mocker.patch( "redshift_connector.plugin.BrowserAzureCredentialsProvider.fetch_authorization_token", return_value=mocked_token) mocker.patch( "redshift_connector.plugin.BrowserAzureCredentialsProvider.fetch_saml_response", return_value=mocked_saml_assertion, ) mocker.patch( "redshift_connector.plugin.BrowserAzureCredentialsProvider.wrap_and_encode_assertion", return_value=None) get_listen_socket_spy = mocker.spy(BrowserAzureCredentialsProvider, "get_listen_socket") fetch_auth_spy = mocker.spy(BrowserAzureCredentialsProvider, "fetch_authorization_token") fetch_saml_spy = mocker.spy(BrowserAzureCredentialsProvider, "fetch_saml_response") wrap_and_encode_spy = mocker.spy(BrowserAzureCredentialsProvider, "wrap_and_encode_assertion") bacp.get_saml_assertion() assert bacp.redirectUri == "http://localhost:{port}/redshift/".format( port=bacp.listen_port) assert get_listen_socket_spy.called assert get_listen_socket_spy.call_count == 1 assert fetch_auth_spy.called assert fetch_auth_spy.call_count == 1 assert fetch_auth_spy.call_args[0][0] == mocked_socket assert fetch_saml_spy.called assert fetch_saml_spy.call_count == 1 assert fetch_saml_spy.call_args[0][0] == mocked_token assert wrap_and_encode_spy.called assert wrap_and_encode_spy.call_count == 1 assert wrap_and_encode_spy.call_args[0][0] == mocked_saml_assertion