From cc2810bbf97163dcf041a9e1059a057b83d53b92 Mon Sep 17 00:00:00 2001 From: johnpccd Date: Sun, 25 May 2025 00:43:07 +0200 Subject: [PATCH] cp --- .../terraform/.terraform.tfstate.lock.info | 1 - deployment/terraform/terraform.tfstate | 18 +- test_admin_images.py | 201 ------------------ 3 files changed, 6 insertions(+), 214 deletions(-) delete mode 100644 deployment/terraform/.terraform.tfstate.lock.info delete mode 100644 test_admin_images.py diff --git a/deployment/terraform/.terraform.tfstate.lock.info b/deployment/terraform/.terraform.tfstate.lock.info deleted file mode 100644 index 6060cd6..0000000 --- a/deployment/terraform/.terraform.tfstate.lock.info +++ /dev/null @@ -1 +0,0 @@ -{"ID":"9b771a70-f4b7-dbb4-f919-38d27ca55e23","Operation":"OperationTypeApply","Info":"","Who":"DESKTOP\\habal@Desktop","Version":"1.10.1","Created":"2025-05-24T22:38:22.6064375Z","Path":"terraform.tfstate"} \ No newline at end of file diff --git a/deployment/terraform/terraform.tfstate b/deployment/terraform/terraform.tfstate index 2cd0c62..d05a72e 100644 --- a/deployment/terraform/terraform.tfstate +++ b/deployment/terraform/terraform.tfstate @@ -1,7 +1,7 @@ { "version": 4, "terraform_version": "1.10.1", - "serial": 415, + "serial": 417, "lineage": "a183cd95-f987-8698-c6dd-84e933c394a5", "outputs": { "cloud_function_name": { @@ -469,7 +469,7 @@ "automatic_update_policy": [ {} ], - "build": "projects/761163285547/locations/us-central1/builds/b2b7e513-e00e-462a-8ac8-94abdfb4a0b9", + "build": "projects/761163285547/locations/us-central1/builds/7b34015c-eb2f-4a80-ac64-b7d3355173ac", "docker_repository": "projects/gen-lang-client-0424120530/locations/us-central1/repositories/gcf-artifacts", "entry_point": "process_image_embedding", "environment_variables": {}, @@ -483,7 +483,7 @@ { "bucket": "gen-lang-client-0424120530-cloud-function-source", "generation": 1748123369545880, - "object": "function-source-a5d3a7fe131c972bf8d0edf309545042.zip" + "object": "function-source-46efa1aee5386e2f244b597289c7c4ba.zip" } ] } @@ -523,6 +523,7 @@ "FIRESTORE_DATABASE_NAME": "sereact-imagedb", "FIRESTORE_PROJECT_ID": "gen-lang-client-0424120530", "GCS_BUCKET_NAME": "sereact-images", + "GOOGLE_CLOUD_PROJECT": "gen-lang-client-0424120530", "LOG_EXECUTION_ID": "true", "LOG_LEVEL": "INFO", "QDRANT_API_KEY": "", @@ -530,7 +531,7 @@ "QDRANT_HOST": "34.71.6.1", "QDRANT_HTTPS": "false", "QDRANT_PORT": "6333", - "VISION_API_ENABLED": "true" + "VERTEX_AI_LOCATION": "us-central1" }, "gcf_uri": "", "ingress_settings": "ALLOW_ALL", @@ -552,7 +553,7 @@ "goog-terraform-provisioned": "true" }, "timeouts": null, - "update_time": "2025-05-24T22:31:52.525335119Z", + "update_time": "2025-05-24T22:39:42.051374046Z", "url": "https://us-central1-gen-lang-client-0424120530.cloudfunctions.net/process-image-embedding" }, "sensitive_attributes": [ @@ -596,13 +597,6 @@ } ] }, - { - "mode": "managed", - "type": "google_compute_address", - "name": "vector_db_static_ip", - "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", - "instances": [] - }, { "mode": "managed", "type": "google_compute_firewall", diff --git a/test_admin_images.py b/test_admin_images.py deleted file mode 100644 index fa9414c..0000000 --- a/test_admin_images.py +++ /dev/null @@ -1,201 +0,0 @@ -#!/usr/bin/env python3 -""" -Test script to verify admin image access functionality. -This script tests that: -1. Regular users can only see images from their own team -2. Admin users can see all images across all teams -""" - -import asyncio -import sys -import os -from datetime import datetime -from bson import ObjectId - -# Add the src directory to the path -sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'src')) - -from src.models.image import ImageModel -from src.models.user import UserModel -from src.db.repositories.image_repository import image_repository -from src.db.repositories.user_repository import user_repository -from src.db.providers.firestore_provider import firestore_db - - -async def setup_test_data(): - """Set up test data for the admin functionality test""" - print("Setting up test data...") - - # Create two teams - team1_id = ObjectId() - team2_id = ObjectId() - - # Create users - regular_user = UserModel( - email="regular@test.com", - name="Regular User", - team_id=team1_id, - is_admin=False - ) - - admin_user = UserModel( - email="admin@test.com", - name="Admin User", - team_id=team1_id, - is_admin=True - ) - - # Create test images for team 1 - image1_team1 = ImageModel( - filename="team1-image1.jpg", - original_filename="team1_image1.jpg", - file_size=1024, - content_type="image/jpeg", - storage_path="images/team1-image1.jpg", - team_id=team1_id, - uploader_id=regular_user.id, - description="Team 1 Image 1", - tags=["team1", "test"] - ) - - image2_team1 = ImageModel( - filename="team1-image2.jpg", - original_filename="team1_image2.jpg", - file_size=2048, - content_type="image/jpeg", - storage_path="images/team1-image2.jpg", - team_id=team1_id, - uploader_id=admin_user.id, - description="Team 1 Image 2", - tags=["team1", "admin"] - ) - - # Create test images for team 2 - image1_team2 = ImageModel( - filename="team2-image1.jpg", - original_filename="team2_image1.jpg", - file_size=1536, - content_type="image/jpeg", - storage_path="images/team2-image1.jpg", - team_id=team2_id, - uploader_id=ObjectId(), # Different user from team 2 - description="Team 2 Image 1", - tags=["team2", "test"] - ) - - return { - 'regular_user': regular_user, - 'admin_user': admin_user, - 'team1_id': team1_id, - 'team2_id': team2_id, - 'images': [image1_team1, image2_team1, image1_team2] - } - - -async def test_regular_user_access(regular_user, team1_id): - """Test that regular users only see their team's images""" - print("\n=== Testing Regular User Access ===") - - # Simulate getting images for regular user (team-filtered) - team1_images = await image_repository.get_by_team(team1_id, skip=0, limit=50) - team1_count = await image_repository.count_by_team(team1_id) - - print(f"Regular user sees {len(team1_images)} images from their team") - print(f"Total count for team: {team1_count}") - - for image in team1_images: - print(f" - {image.filename} (Team: {image.team_id})") - - # Verify all images belong to the user's team - for image in team1_images: - assert image.team_id == team1_id, f"Regular user should not see image from different team: {image.filename}" - - print("โœ… Regular user access test passed - only sees team images") - return len(team1_images) - - -async def test_admin_user_access(admin_user): - """Test that admin users see all images across all teams""" - print("\n=== Testing Admin User Access ===") - - # Simulate getting all images for admin user - all_images = await image_repository.get_all_with_pagination(skip=0, limit=50) - all_count = await image_repository.count_all() - - print(f"Admin user sees {len(all_images)} images across all teams") - print(f"Total count across all teams: {all_count}") - - teams_seen = set() - for image in all_images: - teams_seen.add(str(image.team_id)) - print(f" - {image.filename} (Team: {image.team_id})") - - print(f"Admin sees images from {len(teams_seen)} different teams") - - # Verify admin sees more images than regular user would - assert len(all_images) >= 2, "Admin should see images from multiple teams" - assert len(teams_seen) >= 2, "Admin should see images from at least 2 teams" - - print("โœ… Admin user access test passed - sees all images across teams") - return len(all_images) - - -async def main(): - """Main test function""" - print("๐Ÿงช Testing Admin Image Access Functionality") - print("=" * 50) - - try: - # Connect to database - firestore_db.connect() - print("โœ… Connected to Firestore") - - # Set up test data - test_data = await setup_test_data() - - # Create test images in database - created_images = [] - for image in test_data['images']: - created_image = await image_repository.create(image) - created_images.append(created_image) - print(f"Created test image: {created_image.filename}") - - # Test regular user access - regular_count = await test_regular_user_access( - test_data['regular_user'], - test_data['team1_id'] - ) - - # Test admin user access - admin_count = await test_admin_user_access(test_data['admin_user']) - - # Verify admin sees more images than regular user - print(f"\n=== Summary ===") - print(f"Regular user images: {regular_count}") - print(f"Admin user images: {admin_count}") - - if admin_count > regular_count: - print("โœ… SUCCESS: Admin sees more images than regular user") - else: - print("โŒ FAILURE: Admin should see more images than regular user") - - # Clean up test data - print(f"\n=== Cleanup ===") - for image in created_images: - await image_repository.delete(image.id) - print(f"Deleted test image: {image.filename}") - - print("โœ… Test completed successfully!") - - except Exception as e: - print(f"โŒ Test failed with error: {e}") - import traceback - traceback.print_exc() - finally: - # Disconnect from database - firestore_db.disconnect() - print("โœ… Disconnected from Firestore") - - -if __name__ == "__main__": - asyncio.run(main()) \ No newline at end of file