import flask import json import pytest from unittest.mock import patch, mock_open, call from werkzeug.exceptions import HTTPException from api import create_app @pytest.mark.usefixtures("mock_clients", "mock_client_credentials") def test_get_token(mock_clients, mock_client_credentials): app = create_app() with patch( "builtins.open", mock_open(read_data=json.dumps(mock_clients)) ) as mock_file_open, app.test_client() as app_test_client: response = app_test_client.get("/token", query_string=mock_client_credentials) assert response.status_code == 200 assert "token" in response.json @pytest.mark.usefixtures("mock_clients", "mock_invalid_credentials") def test_get_token_invalid_credentials(mock_clients, mock_invalid_credentials): app = create_app() with patch( "builtins.open", mock_open(read_data=json.dumps(mock_clients)) ) as mock_file_open, app.test_client() as app_test_client: response = app_test_client.get("/token", query_string=mock_invalid_credentials) assert response.status_code == 403 assert "token" not in response.json @pytest.mark.usefixtures("mock_clients", "mock_client_credentials") def test_get_token_no_credentials(mock_clients, mock_client_credentials): app = create_app() with patch( "builtins.open", mock_open(read_data=json.dumps(mock_clients)) ) as mock_file_open, app.test_client() as app_test_client: response = app_test_client.get("/token") assert response.status_code == 400 assert "token" not in response.json