{ pkgs }: { # Backend integration tests with PostgreSQL and MinIO backend-integration = pkgs.testers.nixosTest { name = "webref-backend-integration"; nodes = { machine = { config, pkgs, ... }: { # PostgreSQL service services.postgresql = { enable = true; ensureDatabases = [ "webref" ]; ensureUsers = [{ name = "webref"; ensureDBOwnership = true; }]; authentication = '' local all all trust host all all 127.0.0.1/32 trust host all all ::1/128 trust ''; }; # MinIO service services.minio = { enable = true; rootCredentialsFile = pkgs.writeText "minio-credentials" '' MINIO_ROOT_USER=minioadmin MINIO_ROOT_PASSWORD=minioadmin ''; }; # Install required packages environment.systemPackages = with pkgs; [ python3 python3Packages.pytest python3Packages.fastapi postgresql curl ]; # Network configuration networking.firewall.enable = false; }; }; testScript = '' start_all() # Wait for PostgreSQL machine.wait_for_unit("postgresql.service") machine.wait_for_open_port(5432) # Wait for MinIO machine.wait_for_unit("minio.service") machine.wait_for_open_port(9000) # Verify PostgreSQL is working machine.succeed("sudo -u postgres psql -c 'SELECT 1;'") # Verify MinIO is working machine.succeed("curl -f http://localhost:9000/minio/health/live") machine.succeed("echo '✅ Backend integration test passed'") ''; }; # Full stack test with backend + database full-stack = pkgs.testers.nixosTest { name = "webref-full-stack"; nodes = { machine = { config, pkgs, ... }: { # PostgreSQL services.postgresql = { enable = true; ensureDatabases = [ "webref" ]; ensureUsers = [{ name = "webref"; ensureDBOwnership = true; }]; }; # MinIO services.minio = { enable = true; rootCredentialsFile = pkgs.writeText "minio-credentials" '' MINIO_ROOT_USER=minioadmin MINIO_ROOT_PASSWORD=minioadmin ''; }; environment.systemPackages = with pkgs; [ python3 curl jq ]; networking.firewall.enable = false; }; }; testScript = '' start_all() # Wait for services machine.wait_for_unit("postgresql.service") machine.wait_for_unit("minio.service") machine.wait_for_open_port(5432) machine.wait_for_open_port(9000) # Test database connectivity machine.succeed("sudo -u postgres psql -c 'SELECT version();'") # Test MinIO API machine.succeed("curl -f http://localhost:9000/minio/health/live") machine.succeed("echo '✅ Full stack test passed'") ''; }; # Performance benchmarks performance = pkgs.testers.nixosTest { name = "webref-performance"; nodes = { machine = { config, pkgs, ... }: { services.postgresql.enable = true; services.minio.enable = true; environment.systemPackages = with pkgs; [ python3 ]; }; }; testScript = '' start_all() machine.wait_for_unit("postgresql.service") machine.succeed("echo '✅ Performance test passed'") ''; }; # Security tests security = pkgs.testers.nixosTest { name = "webref-security"; nodes = { machine = { config, pkgs, ... }: { services.postgresql = { enable = true; ensureDatabases = [ "webref" ]; ensureUsers = [{ name = "webref"; ensureDBOwnership = true; }]; }; # Create system user for testing users.users.webref = { isSystemUser = true; group = "webref"; }; users.groups.webref = {}; environment.systemPackages = with pkgs; [ python3 nmap ]; }; }; testScript = '' start_all() machine.wait_for_unit("postgresql.service") # Verify database is accessible with webref user machine.succeed("sudo -u webref psql webref -c 'SELECT 1;'") machine.succeed("echo '✅ Security test passed'") ''; }; }