import os import pytest from unittest.mock import patch, MagicMock from app import app, create_bucket, BucketSchema # Set a dummy API_KEY for testing os.environ['API_KEY'] = 'test-key' @pytest.fixture def client(): app.config['TESTING'] = True with app.test_client() as client: yield client def test_ping(client): response = client.get('/') assert response.status_code == 200 assert response.json == ["Pong"] @patch('app.Terraform') def test_create_bucket(mock_terraform): # Mock Terraform.apply() returning (0, 'success') mock_tf_instance = MagicMock() mock_tf_instance.apply.return_value = (0, 'success') mock_terraform.return_value = mock_tf_instance result = create_bucket("dev", "AES256", "mybucket", "Enabled") assert result[0] == 0 def test_bucket_data_success(client): with patch('app.create_bucket') as mock_create: mock_create.return_value = (0, 'success') payload = { "environment": "dev", "bucket_name": "mybucket", "versioning": "Enabled", "encryption": "AES256", "api_key": "test-key" } response = client.post('/create_bucket', json=payload) assert response.status_code == 200 assert "Creating bucket mybucket in dev" in response.data.decode() def test_bucket_data_invalid_key(client): payload = { "environment": "dev", "bucket_name": "mybucket", "versioning": "Enabled", "encryption": "AES256", "api_key": "wrong-key" } response = client.post('/create_bucket', json=payload) assert response.status_code == 403 assert "Authentication error" in response.data.decode()