import pytest from unittest.mock import Mock, patch from flask import Request import json class TestRequest: """Request handling tests""" def test_get_json_data_valid(self): """Test getting valid JSON data from request""" mock_request = Mock(spec=Request) mock_request.get_json.return_value = {"key": "value"} result = mock_request.get_json() assert result == {"key": "value"} def test_get_json_data_empty(self): """Test getting empty JSON data from request""" mock_request = Mock(spec=Request) mock_request.get_json.return_value = {} result = mock_request.get_json() assert result == {} def test_get_json_data_none(self): """Test getting None when no JSON data""" mock_request = Mock(spec=Request) mock_request.get_json.return_value = None result = mock_request.get_json() assert result is None def test_request_headers(self): """Test accessing request headers""" mock_request = Mock(spec=Request) mock_request.headers = {"Content-Type": "application/json"} assert mock_request.headers["Content-Type"] == "application/json" def test_request_args(self): """Test accessing URL query parameters""" mock_request = Mock(spec=Request) mock_request.args = {"param1": "value1", "param2": "value2"} assert mock_request.args["param1"] == "value1" assert mock_request.args["param2"] == "value2" def test_request_method(self): """Test request HTTP methods""" mock_request = Mock(spec=Request) mock_request.method = "POST" assert mock_request.method == "POST" def test_request_data_raw(self): """Test accessing raw request data""" mock_request = Mock(spec=Request) mock_request.data = b'{"test": "data"}' assert mock_request.data == b'{"test": "data"}' data = json.loads(mock_request.data) assert data["test"] == "data" def test_request_form_data(self): """Test accessing form data""" mock_request = Mock(spec=Request) mock_request.form = {"username": "testuser", "password": "testpass"} assert mock_request.form["username"] == "testuser" assert mock_request.form["password"] == "testpass"