def test_logout(mock_send): c = Client(config_location) mock_send.return_value.status = "ok" mock_send.return_value.data.uri = "https://example.com/end_session" params = {"oxd_id": c.oxd_id} command = {"command": "get_logout_uri", "params": params} # called with no optional params uri = c.get_logout_uri() mock_send.assert_called_with(command) # called with OPTIONAL id_token_hint uri = c.get_logout_uri("some_id") command["params"]["id_token_hint"] = "some_id" mock_send.assert_called_with(command) assert_equal(uri, "https://example.com/end_session") # called wiht OPTIONAL id_token_hint + post_logout_redirect_uri uri = c.get_logout_uri("some_id", "https://some.site/logout") command["params"]["post_logout_redirect_uri"] = "https://some.site/logout" mock_send.assert_called_with(command) # called wiht OPTIONAL id_token_hint + post_logout_redirect_uri + state uri = c.get_logout_uri("some_id", "https://some.site/logout", "some-s") command["params"]["state"] = "some-s" mock_send.assert_called_with(command) # called wiht OPTIONAL id_token_hint + post_logout_redirect_uri uri = c.get_logout_uri("some_id", "https://some.site/logout", "some-s", "some-ss") command["params"]["session_state"] = "some-ss" mock_send.assert_called_with(command)
def test_logout(mock_send): c = Client(config_location) mock_send.return_value.status = "ok" mock_send.return_value.data.uri = "https://example.com/end_session" params = {"oxd_id": c.oxd_id} command = {"command": "get_logout_uri", "params": params} # called with no optional params uri = c.get_logout_uri() mock_send.assert_called_with(command) # called with OPTIONAL id_token_hint uri = c.get_logout_uri("some_id") command["params"]["id_token_hint"] = "some_id" mock_send.assert_called_with(command) assert_equal(uri, "https://example.com/end_session") # called wiht OPTIONAL id_token_hint + post_logout_redirect_uri uri = c.get_logout_uri("some_id", "https://some.site/logout") command["params"]["post_logout_redirect_uri"] = "https://some.site/logout" mock_send.assert_called_with(command) # called wiht OPTIONAL id_token_hint + post_logout_redirect_uri + state uri = c.get_logout_uri("some_id", "https://some.site/logout", "some-s") command["params"]["state"] = "some-s" mock_send.assert_called_with(command) # called wiht OPTIONAL id_token_hint + post_logout_redirect_uri uri = c.get_logout_uri("some_id", "https://some.site/logout", "some-s", "some-ss") command["params"]["session_state"] = "some-ss" mock_send.assert_called_with(command)
def test_logout_raises_error_when_oxd_return_error(mock_send): c = Client(config_location) mock_send.return_value.status = "error" mock_send.return_value.data.error = "MockError" mock_send.return_value.data.error_description = "Logout Mock Error" with assert_raises(RuntimeError): c.get_logout_uri()
def test_logout_raises_error_when_oxd_return_error(mock_send): c = Client(config_location) mock_send.return_value.status = "error" mock_send.return_value.data.error = "MockError" mock_send.return_value.data.error_description = "Logout Mock Error" with assert_raises(RuntimeError): c.get_logout_uri()
def test_openid_commands(config_file): """function that runs the commands in a interactive manner :param config_file: config file location """ c = Client(config_file) print "\n=> Setup Client" setup_data = c.setup_client() logging.info("Received: %s", setup_data) print "\n=> Get Client Token" tokens = c.get_client_token(auto_update=False) logging.info("Received: %s", tokens) print "\n=> Introspect Access Token" introspection = c.introspect_access_token( access_token=tokens['access_token']) logging.info("Received: %s", introspection) print "\n=> Update site registration" updated = c.update_site() c.config.set("client", "scope", "openid,profile") logging.info("Received: %s", updated) print "\n=> Getting auth URL" auth_url = c.get_authorization_url() print "Visit this URL in your browser: ", auth_url logging.info("Received: %s", auth_url) print "\n=> Getting tokens by code" callback_url = raw_input("Enter redirected URL to parse tokens: ") parsed = urlparse.urlparse(callback_url) params = urlparse.parse_qs(parsed.query) tokens = c.get_tokens_by_code(params['code'][0], params['state'][0]) logging.info("Received: %s", tokens) print "\n=> Getting user info" claims = c.get_user_info(tokens['access_token']) logging.info("Received: %s", claims) print "\n=> Getting new access token using refresh token" new_token = c.get_access_token_by_refresh_token(tokens["refresh_token"]) logging.info("Received: %s", new_token) print "\n=> Getting Logout URI" logout_uri = c.get_logout_uri() logging.info("Received: %s", logout_uri) print "Visit this URL to logout: ", logout_uri print "\n=> Register Site" reg = c.register_site() logging.info("Received: %s", reg) print "\n=> Remove Site" oxd_id = c.remove_site() logging.info("Received: %s", oxd_id)
def logout(): logout_user() if os.path.exists(current_app.config["OXD_CLIENT_CONFIG_FILE"]): config = current_app.config["OXD_CLIENT_CONFIG_FILE"] oxc = Client(config) # If site is not registered, first register it if not oxc.config.get('oxd', 'id'): oxc.register_site() logout_url = oxc.get_logout_uri() return redirect(logout_url) pw_file = os.path.join(current_app.config['DATA_DIR'], '.pw') if os.path.exists(pw_file): os.remove(pw_file) return redirect(url_for("auth.login"))