2877 lines
200 KiB
Plaintext
2877 lines
200 KiB
Plaintext
? github.com/Wikid82/charon/backend/cmd/api [no test files]
|
||
? github.com/Wikid82/charon/backend/cmd/seed [no test files]
|
||
=== RUN TestAccessListHandler_Create
|
||
=== RUN TestAccessListHandler_Create/create_whitelist_successfully
|
||
=== RUN TestAccessListHandler_Create/create_geo_whitelist_successfully
|
||
=== RUN TestAccessListHandler_Create/create_local_network_only
|
||
=== RUN TestAccessListHandler_Create/fail_with_invalid_type
|
||
=== RUN TestAccessListHandler_Create/fail_with_missing_name
|
||
--- PASS: TestAccessListHandler_Create (0.02s)
|
||
--- PASS: TestAccessListHandler_Create/create_whitelist_successfully (0.00s)
|
||
--- PASS: TestAccessListHandler_Create/create_geo_whitelist_successfully (0.00s)
|
||
--- PASS: TestAccessListHandler_Create/create_local_network_only (0.00s)
|
||
--- PASS: TestAccessListHandler_Create/fail_with_invalid_type (0.00s)
|
||
--- PASS: TestAccessListHandler_Create/fail_with_missing_name (0.00s)
|
||
=== RUN TestAccessListHandler_List
|
||
--- PASS: TestAccessListHandler_List (0.01s)
|
||
=== RUN TestAccessListHandler_Get
|
||
=== RUN TestAccessListHandler_Get/get_existing_ACL
|
||
=== RUN TestAccessListHandler_Get/get_non-existent_ACL
|
||
|
||
2025/12/03 13:15:16 [31;1m/projects/Charon/backend/internal/services/access_list_service.go:91 [35;1mrecord not found
|
||
[0m[33m[0.135ms] [34;1m[rows:0][0m SELECT * FROM `access_lists` WHERE `access_lists`.`id` = 9999 ORDER BY `access_lists`.`id` LIMIT 1
|
||
--- PASS: TestAccessListHandler_Get (0.01s)
|
||
--- PASS: TestAccessListHandler_Get/get_existing_ACL (0.00s)
|
||
--- PASS: TestAccessListHandler_Get/get_non-existent_ACL (0.00s)
|
||
=== RUN TestAccessListHandler_Update
|
||
=== RUN TestAccessListHandler_Update/update_successfully
|
||
=== RUN TestAccessListHandler_Update/update_non-existent_ACL
|
||
|
||
2025/12/03 13:15:16 [31;1m/projects/Charon/backend/internal/services/access_list_service.go:91 [35;1mrecord not found
|
||
[0m[33m[0.124ms] [34;1m[rows:0][0m SELECT * FROM `access_lists` WHERE `access_lists`.`id` = 9999 ORDER BY `access_lists`.`id` LIMIT 1
|
||
--- PASS: TestAccessListHandler_Update (0.01s)
|
||
--- PASS: TestAccessListHandler_Update/update_successfully (0.00s)
|
||
--- PASS: TestAccessListHandler_Update/update_non-existent_ACL (0.00s)
|
||
=== RUN TestAccessListHandler_Delete
|
||
=== RUN TestAccessListHandler_Delete/delete_successfully
|
||
=== RUN TestAccessListHandler_Delete/fail_to_delete_ACL_in_use
|
||
=== RUN TestAccessListHandler_Delete/delete_non-existent_ACL
|
||
--- PASS: TestAccessListHandler_Delete (0.01s)
|
||
--- PASS: TestAccessListHandler_Delete/delete_successfully (0.00s)
|
||
--- PASS: TestAccessListHandler_Delete/fail_to_delete_ACL_in_use (0.00s)
|
||
--- PASS: TestAccessListHandler_Delete/delete_non-existent_ACL (0.00s)
|
||
=== RUN TestAccessListHandler_TestIP
|
||
=== RUN TestAccessListHandler_TestIP/test_IP_in_whitelist
|
||
=== RUN TestAccessListHandler_TestIP/test_IP_not_in_whitelist
|
||
=== RUN TestAccessListHandler_TestIP/test_invalid_IP
|
||
=== RUN TestAccessListHandler_TestIP/test_non-existent_ACL
|
||
|
||
2025/12/03 13:15:16 [31;1m/projects/Charon/backend/internal/services/access_list_service.go:91 [35;1mrecord not found
|
||
[0m[33m[1.041ms] [34;1m[rows:0][0m SELECT * FROM `access_lists` WHERE `access_lists`.`id` = 9999 ORDER BY `access_lists`.`id` LIMIT 1
|
||
--- PASS: TestAccessListHandler_TestIP (0.01s)
|
||
--- PASS: TestAccessListHandler_TestIP/test_IP_in_whitelist (0.00s)
|
||
--- PASS: TestAccessListHandler_TestIP/test_IP_not_in_whitelist (0.00s)
|
||
--- PASS: TestAccessListHandler_TestIP/test_invalid_IP (0.00s)
|
||
--- PASS: TestAccessListHandler_TestIP/test_non-existent_ACL (0.00s)
|
||
=== RUN TestAccessListHandler_GetTemplates
|
||
--- PASS: TestAccessListHandler_GetTemplates (0.01s)
|
||
=== RUN TestAuthHandler_Login
|
||
--- PASS: TestAuthHandler_Login (1.56s)
|
||
=== RUN TestAuthHandler_Login_Errors
|
||
|
||
2025/12/03 13:15:17 [31;1m/projects/Charon/backend/internal/services/auth_service.go:64 [35;1mrecord not found
|
||
[0m[33m[0.095ms] [34;1m[rows:0][0m SELECT * FROM `users` WHERE email = "nonexistent@example.com" ORDER BY `users`.`id` LIMIT 1
|
||
--- PASS: TestAuthHandler_Login_Errors (0.01s)
|
||
=== RUN TestAuthHandler_Register
|
||
--- PASS: TestAuthHandler_Register (0.77s)
|
||
=== RUN TestAuthHandler_Register_Duplicate
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/services/auth_service.go:54 [35;1mUNIQUE constraint failed: users.email
|
||
[0m[33m[0.428ms] [34;1m[rows:0][0m INSERT INTO `users` (`uuid`,`email`,`api_key`,`password_hash`,`name`,`role`,`enabled`,`failed_login_attempts`,`locked_until`,`last_login`,`created_at`,`updated_at`) VALUES ("fbd64b2f-2241-41aa-b3f7-211ee8378f1c","dup@example.com","6c95e613-9604-40e1-a8a5-e55f4e1a4ae8","$2a$10$T.LpJjTTn6R9k2LVzSu5Aed/AF1ybup8d4WoDBa923Sau7U.zbePG","Dup User","user",true,0,NULL,NULL,"2025-12-03 13:15:18.701","2025-12-03 13:15:18.701") RETURNING `id`
|
||
--- PASS: TestAuthHandler_Register_Duplicate (0.75s)
|
||
=== RUN TestAuthHandler_Logout
|
||
--- PASS: TestAuthHandler_Logout (0.00s)
|
||
=== RUN TestAuthHandler_Me
|
||
--- PASS: TestAuthHandler_Me (0.01s)
|
||
=== RUN TestAuthHandler_Me_NotFound
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/services/auth_service.go:147 [35;1mrecord not found
|
||
[0m[33m[0.070ms] [34;1m[rows:0][0m SELECT * FROM `users` WHERE `users`.`id` = 999 ORDER BY `users`.`id` LIMIT 1
|
||
--- PASS: TestAuthHandler_Me_NotFound (0.01s)
|
||
=== RUN TestAuthHandler_ChangePassword
|
||
--- PASS: TestAuthHandler_ChangePassword (3.07s)
|
||
=== RUN TestAuthHandler_ChangePassword_WrongOld
|
||
--- PASS: TestAuthHandler_ChangePassword_WrongOld (1.56s)
|
||
=== RUN TestAuthHandler_ChangePassword_Errors
|
||
--- PASS: TestAuthHandler_ChangePassword_Errors (0.00s)
|
||
=== RUN TestBackupHandlerSanitizesFilename
|
||
--- PASS: TestBackupHandlerSanitizesFilename (0.00s)
|
||
=== RUN TestBackupLifecycle
|
||
--- PASS: TestBackupLifecycle (0.03s)
|
||
=== RUN TestBackupHandler_Errors
|
||
--- PASS: TestBackupHandler_Errors (0.00s)
|
||
=== RUN TestBackupHandler_List_Success
|
||
--- PASS: TestBackupHandler_List_Success (0.01s)
|
||
=== RUN TestBackupHandler_Create_Success
|
||
--- PASS: TestBackupHandler_Create_Success (0.00s)
|
||
=== RUN TestBackupHandler_Download_Success
|
||
--- PASS: TestBackupHandler_Download_Success (0.00s)
|
||
=== RUN TestBackupHandler_PathTraversal
|
||
--- PASS: TestBackupHandler_PathTraversal (0.00s)
|
||
=== RUN TestBackupHandler_Download_InvalidPath
|
||
--- PASS: TestBackupHandler_Download_InvalidPath (0.00s)
|
||
=== RUN TestBackupHandler_Create_ServiceError
|
||
--- PASS: TestBackupHandler_Create_ServiceError (0.00s)
|
||
=== RUN TestBackupHandler_Delete_InternalError
|
||
--- PASS: TestBackupHandler_Delete_InternalError (0.00s)
|
||
=== RUN TestBackupHandler_Restore_InternalError
|
||
--- PASS: TestBackupHandler_Restore_InternalError (0.01s)
|
||
=== RUN TestDeleteCertificate_InUse
|
||
--- PASS: TestDeleteCertificate_InUse (0.01s)
|
||
=== RUN TestDeleteCertificate_CreatesBackup
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/api/handlers/certificate_handler_test.go:123 [35;1mrecord not found
|
||
[0m[33m[0.116ms] [34;1m[rows:0][0m SELECT * FROM `ssl_certificates` WHERE `ssl_certificates`.`id` = 1 ORDER BY `ssl_certificates`.`id` LIMIT 1
|
||
--- PASS: TestDeleteCertificate_CreatesBackup (0.02s)
|
||
=== RUN TestDeleteCertificate_BackupFailure
|
||
--- PASS: TestDeleteCertificate_BackupFailure (0.01s)
|
||
=== RUN TestDeleteCertificate_InUse_NoBackup
|
||
--- PASS: TestDeleteCertificate_InUse_NoBackup (0.01s)
|
||
=== RUN TestCertificateHandler_List
|
||
--- PASS: TestCertificateHandler_List (0.01s)
|
||
=== RUN TestCertificateHandler_Upload_MissingName
|
||
--- PASS: TestCertificateHandler_Upload_MissingName (0.01s)
|
||
=== RUN TestCertificateHandler_Upload_MissingCertFile
|
||
--- PASS: TestCertificateHandler_Upload_MissingCertFile (0.01s)
|
||
=== RUN TestCertificateHandler_Upload_MissingKeyFile
|
||
--- PASS: TestCertificateHandler_Upload_MissingKeyFile (0.01s)
|
||
=== RUN TestCertificateHandler_Upload_Success
|
||
--- PASS: TestCertificateHandler_Upload_Success (0.09s)
|
||
=== RUN TestBackupHandlerQuick
|
||
--- PASS: TestBackupHandlerQuick (0.00s)
|
||
=== RUN TestDefaultCrowdsecExecutorPidFile
|
||
--- PASS: TestDefaultCrowdsecExecutorPidFile (0.00s)
|
||
=== RUN TestDefaultCrowdsecExecutorStartStatusStop
|
||
--- PASS: TestDefaultCrowdsecExecutorStartStatusStop (0.20s)
|
||
=== RUN TestCrowdsecEndpoints
|
||
--- PASS: TestCrowdsecEndpoints (0.00s)
|
||
=== RUN TestImportConfig
|
||
--- PASS: TestImportConfig (0.00s)
|
||
=== RUN TestImportCreatesBackup
|
||
--- PASS: TestImportCreatesBackup (0.00s)
|
||
=== RUN TestExportConfig
|
||
--- PASS: TestExportConfig (0.00s)
|
||
=== RUN TestListAndReadFile
|
||
--- PASS: TestListAndReadFile (0.00s)
|
||
=== RUN TestWriteFileCreatesBackup
|
||
--- PASS: TestWriteFileCreatesBackup (0.00s)
|
||
=== RUN TestDockerHandler_ListContainers
|
||
--- PASS: TestDockerHandler_ListContainers (0.01s)
|
||
=== RUN TestDockerHandler_ListContainers_NonExistentServerID
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/services/remoteserver_service.go:77 [35;1mrecord not found
|
||
[0m[33m[0.105ms] [34;1m[rows:0][0m SELECT * FROM `remote_servers` WHERE uuid = "non-existent-uuid" ORDER BY `remote_servers`.`id` LIMIT 1
|
||
--- PASS: TestDockerHandler_ListContainers_NonExistentServerID (0.00s)
|
||
=== RUN TestDockerHandler_ListContainers_WithServerID
|
||
--- PASS: TestDockerHandler_ListContainers_WithServerID (0.01s)
|
||
=== RUN TestDockerHandler_ListContainers_WithHostQuery
|
||
--- PASS: TestDockerHandler_ListContainers_WithHostQuery (0.01s)
|
||
=== RUN TestDockerHandler_RegisterRoutes
|
||
--- PASS: TestDockerHandler_RegisterRoutes (0.00s)
|
||
=== RUN TestDockerHandler_NewDockerHandler
|
||
--- PASS: TestDockerHandler_NewDockerHandler (0.00s)
|
||
=== RUN TestDomainLifecycle
|
||
--- PASS: TestDomainLifecycle (0.01s)
|
||
=== RUN TestDomainErrors
|
||
--- PASS: TestDomainErrors (0.01s)
|
||
=== RUN TestDomainDelete_NotFound
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/api/handlers/domain_handler.go:73 [35;1mrecord not found
|
||
[0m[33m[0.108ms] [34;1m[rows:0][0m SELECT * FROM `domains` WHERE uuid = "nonexistent-uuid" AND `domains`.`deleted_at` IS NULL ORDER BY `domains`.`id` LIMIT 1
|
||
--- PASS: TestDomainDelete_NotFound (0.01s)
|
||
=== RUN TestDomainCreate_Duplicate
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/api/handlers/domain_handler.go:49 [35;1mUNIQUE constraint failed: domains.name
|
||
[0m[33m[0.307ms] [34;1m[rows:0][0m INSERT INTO `domains` (`uuid`,`name`,`created_at`,`updated_at`,`deleted_at`) VALUES ("25d43ac6-5b4d-4b10-881f-a6ad521ac740","duplicate.com","2025-12-03 13:15:24.627","2025-12-03 13:15:24.627",NULL) RETURNING `id`
|
||
--- PASS: TestDomainCreate_Duplicate (0.01s)
|
||
=== RUN TestDomainList_Empty
|
||
--- PASS: TestDomainList_Empty (0.01s)
|
||
=== RUN TestDomainCreate_LongName
|
||
--- PASS: TestDomainCreate_LongName (0.01s)
|
||
=== RUN TestFeatureFlags_GetAndUpdate
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/api/handlers/feature_flags_handler.go:41 [35;1mrecord not found
|
||
[0m[33m[0.091ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "feature.global.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/api/handlers/feature_flags_handler.go:41 [35;1mrecord not found
|
||
[0m[33m[0.068ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "feature.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/api/handlers/feature_flags_handler.go:41 [35;1mrecord not found
|
||
[0m[33m[0.124ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "feature.uptime.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/api/handlers/feature_flags_handler.go:41 [35;1mrecord not found
|
||
[0m[33m[0.093ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "feature.notifications.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/api/handlers/feature_flags_handler.go:41 [35;1mrecord not found
|
||
[0m[33m[0.113ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "feature.docker.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
--- PASS: TestFeatureFlags_GetAndUpdate (0.00s)
|
||
=== RUN TestFeatureFlags_EnvFallback
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/api/handlers/feature_flags_handler.go:41 [35;1mno such table: settings
|
||
[0m[33m[1.327ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "feature.global.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/api/handlers/feature_flags_handler.go:41 [35;1mno such table: settings
|
||
[0m[33m[0.026ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "feature.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/api/handlers/feature_flags_handler.go:41 [35;1mno such table: settings
|
||
[0m[33m[0.020ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "feature.uptime.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/api/handlers/feature_flags_handler.go:41 [35;1mno such table: settings
|
||
[0m[33m[0.038ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "feature.notifications.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/api/handlers/feature_flags_handler.go:41 [35;1mno such table: settings
|
||
[0m[33m[0.037ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "feature.docker.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
--- PASS: TestFeatureFlags_EnvFallback (0.00s)
|
||
=== RUN TestHealthHandler
|
||
--- PASS: TestHealthHandler (0.00s)
|
||
=== RUN TestIsSafePathUnderBase
|
||
--- PASS: TestIsSafePathUnderBase (0.00s)
|
||
=== RUN TestImportUploadSanitizesFilename
|
||
--- PASS: TestImportUploadSanitizesFilename (0.00s)
|
||
=== RUN TestLogsLifecycle
|
||
--- PASS: TestLogsLifecycle (0.00s)
|
||
=== RUN TestLogsHandler_PathTraversal
|
||
--- PASS: TestLogsHandler_PathTraversal (0.00s)
|
||
=== RUN TestNotificationTemplateHandler_CRUDAndPreview
|
||
--- PASS: TestNotificationTemplateHandler_CRUDAndPreview (0.01s)
|
||
=== RUN TestNotificationTemplateHandler_Create_InvalidJSON
|
||
--- PASS: TestNotificationTemplateHandler_Create_InvalidJSON (0.00s)
|
||
=== RUN TestNotificationTemplateHandler_Update_InvalidJSON
|
||
--- PASS: TestNotificationTemplateHandler_Update_InvalidJSON (0.01s)
|
||
=== RUN TestNotificationTemplateHandler_Preview_InvalidJSON
|
||
--- PASS: TestNotificationTemplateHandler_Preview_InvalidJSON (0.00s)
|
||
=== RUN TestProxyHostLifecycle
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/services/proxyhost_service.go:111 [35;1mrecord not found
|
||
[0m[33m[0.075ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts` WHERE uuid = "f42bf7ee-0c19-44a8-8772-ac20362d1ab2" ORDER BY `proxy_hosts`.`id` LIMIT 1
|
||
--- PASS: TestProxyHostLifecycle (0.02s)
|
||
=== RUN TestProxyHostDelete_WithUptimeCleanup
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/services/notification_service.go:81 [35;1mno such table: notification_providers
|
||
[0m[33m[2.137ms] [34;1m[rows:0][0m SELECT * FROM `notification_providers` WHERE enabled = true
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/api/handlers/proxy_host_handler_test.go:141 [35;1mrecord not found
|
||
[0m[33m[0.112ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts` WHERE uuid = "ph-delete-1" ORDER BY `proxy_hosts`.`id` LIMIT 1
|
||
--- PASS: TestProxyHostDelete_WithUptimeCleanup (0.02s)
|
||
=== RUN TestProxyHostErrors
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.054ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.054ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.080ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.063ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[1.331ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[1.463ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.710ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/services/proxyhost_service.go:111 [35;1mrecord not found
|
||
[0m[33m[0.088ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts` WHERE uuid = "non-existent-uuid" ORDER BY `proxy_hosts`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/services/proxyhost_service.go:111 [35;1mrecord not found
|
||
[0m[33m[0.089ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts` WHERE uuid = "non-existent-uuid" ORDER BY `proxy_hosts`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.088ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.067ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.063ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.054ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[0.037ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[0.063ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.030ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/services/proxyhost_service.go:111 [35;1mrecord not found
|
||
[0m[33m[0.073ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts` WHERE uuid = "non-existent-uuid" ORDER BY `proxy_hosts`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.054ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.080ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.061ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.097ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[0.048ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[0.050ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.036ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestProxyHostErrors (0.03s)
|
||
=== RUN TestProxyHostValidation
|
||
--- PASS: TestProxyHostValidation (0.02s)
|
||
=== RUN TestProxyHostCreate_AdvancedConfig_InvalidJSON
|
||
--- PASS: TestProxyHostCreate_AdvancedConfig_InvalidJSON (0.02s)
|
||
=== RUN TestProxyHostCreate_AdvancedConfig_Normalization
|
||
--- PASS: TestProxyHostCreate_AdvancedConfig_Normalization (0.03s)
|
||
=== RUN TestProxyHostUpdate_CertificateID_Null
|
||
--- PASS: TestProxyHostUpdate_CertificateID_Null (0.02s)
|
||
=== RUN TestProxyHostConnection
|
||
--- PASS: TestProxyHostConnection (0.02s)
|
||
=== RUN TestProxyHostHandler_List_Error
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/services/proxyhost_service.go:120 [35;1msql: database is closed
|
||
[0m[33m[0.036ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts` ORDER BY updated_at desc
|
||
--- PASS: TestProxyHostHandler_List_Error (0.01s)
|
||
=== RUN TestProxyHostWithCaddyIntegration
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.060ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.052ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.048ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.046ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[0.946ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[0.859ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.014ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/services/notification_service.go:81 [35;1mno such table: notification_providers
|
||
[0m[33m[2.018ms] [34;1m[rows:0][0m SELECT * FROM `notification_providers` WHERE enabled = true
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.084ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.076ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.070ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.083ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[0.046ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[0.037ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.039ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.085ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.094ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.095ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.083ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[0.049ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[0.038ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.039ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/services/notification_service.go:81 [35;1mno such table: notification_providers
|
||
[0m[33m[0.047ms] [34;1m[rows:0][0m SELECT * FROM `notification_providers` WHERE enabled = true
|
||
--- PASS: TestProxyHostWithCaddyIntegration (0.03s)
|
||
=== RUN TestProxyHostHandler_BulkUpdateACL_Success
|
||
--- PASS: TestProxyHostHandler_BulkUpdateACL_Success (0.02s)
|
||
=== RUN TestProxyHostHandler_BulkUpdateACL_RemoveACL
|
||
--- PASS: TestProxyHostHandler_BulkUpdateACL_RemoveACL (0.02s)
|
||
=== RUN TestProxyHostHandler_BulkUpdateACL_PartialFailure
|
||
|
||
2025/12/03 13:15:24 [31;1m/projects/Charon/backend/internal/services/proxyhost_service.go:111 [35;1mrecord not found
|
||
[0m[33m[0.076ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts` WHERE uuid = "dddfdef3-91ed-405d-94f1-0b8700ebab7e" ORDER BY `proxy_hosts`.`id` LIMIT 1
|
||
--- PASS: TestProxyHostHandler_BulkUpdateACL_PartialFailure (0.01s)
|
||
=== RUN TestProxyHostHandler_BulkUpdateACL_EmptyUUIDs
|
||
--- PASS: TestProxyHostHandler_BulkUpdateACL_EmptyUUIDs (0.02s)
|
||
=== RUN TestProxyHostHandler_BulkUpdateACL_InvalidJSON
|
||
--- PASS: TestProxyHostHandler_BulkUpdateACL_InvalidJSON (0.01s)
|
||
=== RUN TestProxyHostUpdate_AdvancedConfig_ClearAndBackup
|
||
--- PASS: TestProxyHostUpdate_AdvancedConfig_ClearAndBackup (0.01s)
|
||
=== RUN TestProxyHostUpdate_AdvancedConfig_InvalidJSON
|
||
--- PASS: TestProxyHostUpdate_AdvancedConfig_InvalidJSON (0.02s)
|
||
=== RUN TestProxyHostUpdate_SetCertificateID
|
||
--- PASS: TestProxyHostUpdate_SetCertificateID (0.02s)
|
||
=== RUN TestProxyHostUpdate_AdvancedConfig_SetBackup
|
||
--- PASS: TestProxyHostUpdate_AdvancedConfig_SetBackup (0.01s)
|
||
=== RUN TestProxyHostUpdate_ForwardPort_StringValue
|
||
--- PASS: TestProxyHostUpdate_ForwardPort_StringValue (0.01s)
|
||
=== RUN TestProxyHostUpdate_Locations_InvalidPayload
|
||
--- PASS: TestProxyHostUpdate_Locations_InvalidPayload (0.02s)
|
||
=== RUN TestProxyHostUpdate_SetBooleansAndApplication
|
||
--- PASS: TestProxyHostUpdate_SetBooleansAndApplication (0.02s)
|
||
=== RUN TestProxyHostUpdate_Locations_Replace
|
||
--- PASS: TestProxyHostUpdate_Locations_Replace (0.02s)
|
||
=== RUN TestProxyHostCreate_WithCertificateAndLocations
|
||
--- PASS: TestProxyHostCreate_WithCertificateAndLocations (0.01s)
|
||
=== RUN TestSanitizeForLog
|
||
--- PASS: TestSanitizeForLog (0.00s)
|
||
=== RUN TestSecurityHandler_GetConfigAndUpdateConfig
|
||
|
||
2025/12/03 13:15:25 [31;1m/projects/Charon/backend/internal/services/security_service.go:37 [35;1mrecord not found
|
||
[0m[33m[0.070ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:25 [31;1m/projects/Charon/backend/internal/services/security_service.go:73 [35;1mrecord not found
|
||
[0m[33m[0.092ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
--- PASS: TestSecurityHandler_GetConfigAndUpdateConfig (0.00s)
|
||
=== RUN TestSecurityHandler_GetStatus_Clean
|
||
--- PASS: TestSecurityHandler_GetStatus_Clean (0.00s)
|
||
=== RUN TestSecurityHandler_Cerberus_DBOverride
|
||
--- PASS: TestSecurityHandler_Cerberus_DBOverride (0.01s)
|
||
=== RUN TestSecurityHandler_ACL_DBOverride
|
||
--- PASS: TestSecurityHandler_ACL_DBOverride (0.00s)
|
||
=== RUN TestSecurityHandler_GenerateBreakGlass_ReturnsToken
|
||
|
||
2025/12/03 13:15:25 [31;1m/projects/Charon/backend/internal/services/security_service.go:113 [35;1mrecord not found
|
||
[0m[33m[0.227ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
--- PASS: TestSecurityHandler_GenerateBreakGlass_ReturnsToken (0.78s)
|
||
=== RUN TestSecurityHandler_ACL_DisabledWhenCerberusOff
|
||
--- PASS: TestSecurityHandler_ACL_DisabledWhenCerberusOff (0.00s)
|
||
=== RUN TestSecurityHandler_CrowdSec_Mode_DBOverride
|
||
--- PASS: TestSecurityHandler_CrowdSec_Mode_DBOverride (0.01s)
|
||
=== RUN TestSecurityHandler_CrowdSec_ExternalMappedToDisabled_DBOverride
|
||
--- PASS: TestSecurityHandler_CrowdSec_ExternalMappedToDisabled_DBOverride (0.00s)
|
||
=== RUN TestSecurityHandler_ExternalModeMappedToDisabled
|
||
--- PASS: TestSecurityHandler_ExternalModeMappedToDisabled (0.00s)
|
||
=== RUN TestSecurityHandler_Enable_Disable_WithAdminWhitelistAndToken
|
||
--- PASS: TestSecurityHandler_Enable_Disable_WithAdminWhitelistAndToken (1.56s)
|
||
=== RUN TestSecurityHandler_CreateAndListDecisionAndRulesets
|
||
|
||
2025/12/03 13:15:27 [31;1m/projects/Charon/backend/internal/services/security_service.go:204 [35;1mrecord not found
|
||
[0m[33m[0.113ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets` WHERE name = "owasp-crs" ORDER BY `security_rule_sets`.`id` LIMIT 1
|
||
--- PASS: TestSecurityHandler_CreateAndListDecisionAndRulesets (0.13s)
|
||
=== RUN TestSecurityHandler_UpsertDeleteTriggersApplyConfig
|
||
|
||
2025/12/03 13:15:27 [31;1m/projects/Charon/backend/internal/services/security_service.go:204 [35;1mrecord not found
|
||
[0m[33m[0.104ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets` WHERE name = "owasp-crs" ORDER BY `security_rule_sets`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:27 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[1.650ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:27 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.223ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:27 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.101ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:27 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.089ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:27 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.092ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:27 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.085ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:27 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.266ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:27 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.088ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
--- PASS: TestSecurityHandler_UpsertDeleteTriggersApplyConfig (0.03s)
|
||
=== RUN TestGetClientIPHeadersAndRemoteAddr
|
||
--- PASS: TestGetClientIPHeadersAndRemoteAddr (0.00s)
|
||
=== RUN TestGetMyIPHandler
|
||
--- PASS: TestGetMyIPHandler (0.00s)
|
||
=== RUN TestUpdateHandler_Check
|
||
--- PASS: TestUpdateHandler_Check (0.01s)
|
||
=== RUN TestUserHandler_GetSetupStatus
|
||
--- PASS: TestUserHandler_GetSetupStatus (0.00s)
|
||
=== RUN TestUserHandler_Setup
|
||
--- PASS: TestUserHandler_Setup (0.79s)
|
||
=== RUN TestUserHandler_Setup_DBError
|
||
--- PASS: TestUserHandler_Setup_DBError (0.00s)
|
||
=== RUN TestUserHandler_RegenerateAPIKey
|
||
--- PASS: TestUserHandler_RegenerateAPIKey (0.00s)
|
||
=== RUN TestUserHandler_GetProfile
|
||
--- PASS: TestUserHandler_GetProfile (0.01s)
|
||
=== RUN TestUserHandler_RegisterRoutes
|
||
--- PASS: TestUserHandler_RegisterRoutes (0.00s)
|
||
=== RUN TestUserHandler_Errors
|
||
|
||
2025/12/03 13:15:28 [31;1m/projects/Charon/backend/internal/api/handlers/user_handler.go:147 [35;1mrecord not found
|
||
[0m[33m[0.080ms] [34;1m[rows:0][0m SELECT * FROM `users` WHERE `users`.`id` = 99999 ORDER BY `users`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:28 [31;1m/projects/Charon/backend/internal/api/handlers/user_handler.go:130 [35;1mno such table: users
|
||
[0m[33m[0.157ms] [34;1m[rows:0][0m UPDATE `users` SET `api_key`="e49c81ed-02cd-4bef-916a-da8c29fb26a3",`updated_at`="2025-12-03 13:15:28.478" WHERE id = 99999
|
||
--- PASS: TestUserHandler_Errors (0.00s)
|
||
=== RUN TestUserHandler_UpdateProfile
|
||
=== RUN TestUserHandler_UpdateProfile/Success_Name_Only
|
||
=== RUN TestUserHandler_UpdateProfile/Success_Email_Change
|
||
=== RUN TestUserHandler_UpdateProfile/Fail_Email_Change_No_Password
|
||
=== RUN TestUserHandler_UpdateProfile/Fail_Email_Change_Wrong_Password
|
||
=== RUN TestUserHandler_UpdateProfile/Fail_Email_In_Use
|
||
--- PASS: TestUserHandler_UpdateProfile (2.27s)
|
||
--- PASS: TestUserHandler_UpdateProfile/Success_Name_Only (0.00s)
|
||
--- PASS: TestUserHandler_UpdateProfile/Success_Email_Change (0.83s)
|
||
--- PASS: TestUserHandler_UpdateProfile/Fail_Email_Change_No_Password (0.00s)
|
||
--- PASS: TestUserHandler_UpdateProfile/Fail_Email_Change_Wrong_Password (0.73s)
|
||
--- PASS: TestUserHandler_UpdateProfile/Fail_Email_In_Use (0.00s)
|
||
=== RUN TestUserHandler_UpdateProfile_Errors
|
||
|
||
2025/12/03 13:15:30 [31;1m/projects/Charon/backend/internal/api/handlers/user_handler.go:183 [35;1mrecord not found
|
||
[0m[33m[0.067ms] [34;1m[rows:0][0m SELECT * FROM `users` WHERE `users`.`id` = 999 ORDER BY `users`.`id` LIMIT 1
|
||
--- PASS: TestUserHandler_UpdateProfile_Errors (0.00s)
|
||
=== RUN TestUserLoginAfterEmailChange
|
||
--- PASS: TestUserLoginAfterEmailChange (3.65s)
|
||
=== RUN TestRemoteServerHandler_List
|
||
--- PASS: TestRemoteServerHandler_List (0.02s)
|
||
=== RUN TestRemoteServerHandler_Create
|
||
--- PASS: TestRemoteServerHandler_Create (0.01s)
|
||
=== RUN TestRemoteServerHandler_TestConnection
|
||
--- PASS: TestRemoteServerHandler_TestConnection (0.02s)
|
||
=== RUN TestRemoteServerHandler_Get
|
||
--- PASS: TestRemoteServerHandler_Get (0.01s)
|
||
=== RUN TestRemoteServerHandler_Update
|
||
--- PASS: TestRemoteServerHandler_Update (0.01s)
|
||
=== RUN TestRemoteServerHandler_Delete
|
||
|
||
2025/12/03 13:15:34 [31;1m/projects/Charon/backend/internal/services/remoteserver_service.go:77 [35;1mrecord not found
|
||
[0m[33m[0.441ms] [34;1m[rows:0][0m SELECT * FROM `remote_servers` WHERE uuid = "798ee46b-cc7c-43b0-8e71-7d0de547576e" ORDER BY `remote_servers`.`id` LIMIT 1
|
||
--- PASS: TestRemoteServerHandler_Delete (0.01s)
|
||
=== RUN TestProxyHostHandler_List
|
||
--- PASS: TestProxyHostHandler_List (0.02s)
|
||
=== RUN TestProxyHostHandler_Create
|
||
--- PASS: TestProxyHostHandler_Create (0.02s)
|
||
=== RUN TestProxyHostHandler_PartialUpdate_DoesNotWipeFields
|
||
--- PASS: TestProxyHostHandler_PartialUpdate_DoesNotWipeFields (0.02s)
|
||
=== RUN TestHealthHandler
|
||
--- PASS: TestHealthHandler (0.00s)
|
||
=== RUN TestRemoteServerHandler_Errors
|
||
|
||
2025/12/03 13:15:34 [31;1m/projects/Charon/backend/internal/services/remoteserver_service.go:77 [35;1mrecord not found
|
||
[0m[33m[0.103ms] [34;1m[rows:0][0m SELECT * FROM `remote_servers` WHERE uuid = "non-existent" ORDER BY `remote_servers`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:34 [31;1m/projects/Charon/backend/internal/services/remoteserver_service.go:77 [35;1mrecord not found
|
||
[0m[33m[0.086ms] [34;1m[rows:0][0m SELECT * FROM `remote_servers` WHERE uuid = "non-existent" ORDER BY `remote_servers`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:34 [31;1m/projects/Charon/backend/internal/services/remoteserver_service.go:77 [35;1mrecord not found
|
||
[0m[33m[0.076ms] [34;1m[rows:0][0m SELECT * FROM `remote_servers` WHERE uuid = "non-existent" ORDER BY `remote_servers`.`id` LIMIT 1
|
||
--- PASS: TestRemoteServerHandler_Errors (0.01s)
|
||
=== RUN TestImportHandler_GetStatus
|
||
|
||
2025/12/03 13:15:34 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:60 [35;1mrecord not found
|
||
[0m[33m[0.182ms] [34;1m[rows:0][0m SELECT * FROM `import_sessions` WHERE status IN ("pending","reviewing") ORDER BY created_at DESC,`import_sessions`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:34 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:60 [35;1mrecord not found
|
||
[0m[33m[0.111ms] [34;1m[rows:0][0m SELECT * FROM `import_sessions` WHERE status IN ("pending","reviewing") ORDER BY created_at DESC,`import_sessions`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:34 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:70 [35;1mrecord not found
|
||
[0m[33m[0.113ms] [34;1m[rows:0][0m SELECT * FROM `import_sessions` WHERE source_file = "/tmp/TestImportHandler_GetStatus569927036/001/mounted.caddyfile" AND status = "committed" ORDER BY committed_at DESC,`import_sessions`.`id` LIMIT 1
|
||
--- PASS: TestImportHandler_GetStatus (0.01s)
|
||
=== RUN TestImportHandler_GetPreview
|
||
|
||
2025/12/03 13:15:34 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:122 [35;1mrecord not found
|
||
[0m[33m[0.164ms] [34;1m[rows:0][0m SELECT * FROM `import_sessions` WHERE status IN ("pending","reviewing") ORDER BY created_at DESC,`import_sessions`.`id` LIMIT 1
|
||
--- PASS: TestImportHandler_GetPreview (0.01s)
|
||
=== RUN TestImportHandler_Cancel
|
||
--- PASS: TestImportHandler_Cancel (0.01s)
|
||
=== RUN TestImportHandler_Commit
|
||
--- PASS: TestImportHandler_Commit (0.01s)
|
||
=== RUN TestImportHandler_Upload
|
||
--- PASS: TestImportHandler_Upload (0.01s)
|
||
=== RUN TestImportHandler_GetPreview_WithContent
|
||
--- PASS: TestImportHandler_GetPreview_WithContent (0.01s)
|
||
=== RUN TestImportHandler_Commit_Errors
|
||
|
||
2025/12/03 13:15:34 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:583 [35;1mrecord not found
|
||
[0m[33m[0.081ms] [34;1m[rows:0][0m SELECT * FROM `import_sessions` WHERE uuid = "non-existent" AND status = "reviewing" ORDER BY `import_sessions`.`id` LIMIT 1
|
||
--- PASS: TestImportHandler_Commit_Errors (0.01s)
|
||
=== RUN TestImportHandler_Cancel_Errors
|
||
|
||
2025/12/03 13:15:34 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:734 [35;1mrecord not found
|
||
[0m[33m[0.097ms] [34;1m[rows:0][0m SELECT * FROM `import_sessions` WHERE uuid = "non-existent" ORDER BY `import_sessions`.`id` LIMIT 1
|
||
--- PASS: TestImportHandler_Cancel_Errors (0.01s)
|
||
=== RUN TestCheckMountedImport
|
||
--- PASS: TestCheckMountedImport (0.01s)
|
||
=== RUN TestImportHandler_Upload_Failure
|
||
--- PASS: TestImportHandler_Upload_Failure (0.01s)
|
||
=== RUN TestImportHandler_Upload_Conflict
|
||
--- PASS: TestImportHandler_Upload_Conflict (0.02s)
|
||
=== RUN TestImportHandler_GetPreview_BackupContent
|
||
--- PASS: TestImportHandler_GetPreview_BackupContent (0.01s)
|
||
=== RUN TestImportHandler_RegisterRoutes
|
||
|
||
2025/12/03 13:15:34 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:60 [35;1mrecord not found
|
||
[0m[33m[0.234ms] [34;1m[rows:0][0m SELECT * FROM `import_sessions` WHERE status IN ("pending","reviewing") ORDER BY created_at DESC,`import_sessions`.`id` LIMIT 1
|
||
--- PASS: TestImportHandler_RegisterRoutes (0.01s)
|
||
=== RUN TestImportHandler_GetPreview_TransientMount
|
||
|
||
2025/12/03 13:15:34 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:122 [35;1mrecord not found
|
||
[0m[33m[0.236ms] [34;1m[rows:0][0m SELECT * FROM `import_sessions` WHERE status IN ("pending","reviewing") ORDER BY created_at DESC,`import_sessions`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:34 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:167 [35;1mrecord not found
|
||
[0m[33m[0.111ms] [34;1m[rows:0][0m SELECT * FROM `import_sessions` WHERE source_file = "/tmp/TestImportHandler_GetPreview_TransientMount235786633/001/mounted.caddyfile" AND status = "committed" ORDER BY committed_at DESC,`import_sessions`.`id` LIMIT 1
|
||
--- PASS: TestImportHandler_GetPreview_TransientMount (0.02s)
|
||
=== RUN TestImportHandler_Commit_TransientUpload
|
||
|
||
2025/12/03 13:15:34 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:583 [35;1mrecord not found
|
||
[0m[33m[0.084ms] [34;1m[rows:0][0m SELECT * FROM `import_sessions` WHERE uuid = "3ce507ae-f8b1-4c06-a147-73715ff012a9" AND status = "reviewing" ORDER BY `import_sessions`.`id` LIMIT 1
|
||
--- PASS: TestImportHandler_Commit_TransientUpload (0.02s)
|
||
=== RUN TestImportHandler_Commit_TransientMount
|
||
|
||
2025/12/03 13:15:34 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:583 [35;1mrecord not found
|
||
[0m[33m[0.079ms] [34;1m[rows:0][0m SELECT * FROM `import_sessions` WHERE uuid = "2a99e2b6-1242-422b-91ae-ecf8e13e7215" AND status = "reviewing" ORDER BY `import_sessions`.`id` LIMIT 1
|
||
--- PASS: TestImportHandler_Commit_TransientMount (0.01s)
|
||
=== RUN TestImportHandler_Cancel_TransientUpload
|
||
|
||
2025/12/03 13:15:34 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:734 [35;1mrecord not found
|
||
[0m[33m[0.072ms] [34;1m[rows:0][0m SELECT * FROM `import_sessions` WHERE uuid = "1c25469d-79a6-4615-9909-6f3de39d3f9e" ORDER BY `import_sessions`.`id` LIMIT 1
|
||
--- PASS: TestImportHandler_Cancel_TransientUpload (0.01s)
|
||
=== RUN TestImportHandler_Errors
|
||
|
||
2025/12/03 13:15:34 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:583 [35;1mrecord not found
|
||
[0m[33m[0.101ms] [34;1m[rows:0][0m SELECT * FROM `import_sessions` WHERE uuid = "non-existent" AND status = "reviewing" ORDER BY `import_sessions`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:34 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:734 [35;1mrecord not found
|
||
[0m[33m[0.062ms] [34;1m[rows:0][0m SELECT * FROM `import_sessions` WHERE uuid = "non-existent" ORDER BY `import_sessions`.`id` LIMIT 1
|
||
--- PASS: TestImportHandler_Errors (0.01s)
|
||
=== RUN TestImportHandler_DetectImports
|
||
=== RUN TestImportHandler_DetectImports/no_imports
|
||
=== RUN TestImportHandler_DetectImports/single_import
|
||
=== RUN TestImportHandler_DetectImports/multiple_imports
|
||
=== RUN TestImportHandler_DetectImports/import_with_comment
|
||
--- PASS: TestImportHandler_DetectImports (0.01s)
|
||
--- PASS: TestImportHandler_DetectImports/no_imports (0.00s)
|
||
--- PASS: TestImportHandler_DetectImports/single_import (0.00s)
|
||
--- PASS: TestImportHandler_DetectImports/multiple_imports (0.00s)
|
||
--- PASS: TestImportHandler_DetectImports/import_with_comment (0.00s)
|
||
=== RUN TestImportHandler_DetectImports_InvalidJSON
|
||
--- PASS: TestImportHandler_DetectImports_InvalidJSON (0.01s)
|
||
=== RUN TestImportHandler_UploadMulti
|
||
=== RUN TestImportHandler_UploadMulti/single_Caddyfile
|
||
=== RUN TestImportHandler_UploadMulti/Caddyfile_with_site_files
|
||
=== RUN TestImportHandler_UploadMulti/missing_Caddyfile
|
||
=== RUN TestImportHandler_UploadMulti/path_traversal_in_filename
|
||
=== RUN TestImportHandler_UploadMulti/empty_file_content
|
||
--- PASS: TestImportHandler_UploadMulti (0.02s)
|
||
--- PASS: TestImportHandler_UploadMulti/single_Caddyfile (0.00s)
|
||
--- PASS: TestImportHandler_UploadMulti/Caddyfile_with_site_files (0.00s)
|
||
--- PASS: TestImportHandler_UploadMulti/missing_Caddyfile (0.00s)
|
||
--- PASS: TestImportHandler_UploadMulti/path_traversal_in_filename (0.00s)
|
||
--- PASS: TestImportHandler_UploadMulti/empty_file_content (0.00s)
|
||
=== RUN TestNotificationHandler_List
|
||
--- PASS: TestNotificationHandler_List (0.01s)
|
||
=== RUN TestNotificationHandler_MarkAsRead
|
||
--- PASS: TestNotificationHandler_MarkAsRead (0.01s)
|
||
=== RUN TestNotificationHandler_MarkAllAsRead
|
||
--- PASS: TestNotificationHandler_MarkAllAsRead (0.01s)
|
||
=== RUN TestNotificationHandler_MarkAllAsRead_Error
|
||
--- PASS: TestNotificationHandler_MarkAllAsRead_Error (0.01s)
|
||
=== RUN TestNotificationHandler_DBError
|
||
--- PASS: TestNotificationHandler_DBError (0.01s)
|
||
=== RUN TestNotificationProviderHandler_CRUD
|
||
[GIN] 2025/12/03 - 13:15:34 | 201 | 352.971µs | | POST "/api/v1/notifications/providers"
|
||
[GIN] 2025/12/03 - 13:15:34 | 200 | 351.14µs | | GET "/api/v1/notifications/providers"
|
||
[GIN] 2025/12/03 - 13:15:34 | 200 | 318.34µs | | PUT "/api/v1/notifications/providers/19d20928-252f-4c2f-b877-cad720f3c50c"
|
||
[GIN] 2025/12/03 - 13:15:34 | 200 | 122.08µs | | DELETE "/api/v1/notifications/providers/19d20928-252f-4c2f-b877-cad720f3c50c"
|
||
--- PASS: TestNotificationProviderHandler_CRUD (0.00s)
|
||
=== RUN TestNotificationProviderHandler_Templates
|
||
[GIN] 2025/12/03 - 13:15:34 | 200 | 100.32µs | | GET "/api/v1/notifications/templates"
|
||
--- PASS: TestNotificationProviderHandler_Templates (0.00s)
|
||
=== RUN TestNotificationProviderHandler_Test
|
||
[GIN] 2025/12/03 - 13:15:34 | 400 | 335.011µs | | POST "/api/v1/notifications/providers/test"
|
||
--- PASS: TestNotificationProviderHandler_Test (0.00s)
|
||
=== RUN TestNotificationProviderHandler_Errors
|
||
[GIN] 2025/12/03 - 13:15:34 | 400 | 35.01µs | | POST "/api/v1/notifications/providers"
|
||
[GIN] 2025/12/03 - 13:15:34 | 400 | 13.3µs | | PUT "/api/v1/notifications/providers/123"
|
||
[GIN] 2025/12/03 - 13:15:34 | 400 | 20.95µs | | POST "/api/v1/notifications/providers/test"
|
||
--- PASS: TestNotificationProviderHandler_Errors (0.00s)
|
||
=== RUN TestNotificationProviderHandler_InvalidCustomTemplate_Rejects
|
||
[GIN] 2025/12/03 - 13:15:34 | 400 | 447.042µs | | POST "/api/v1/notifications/providers"
|
||
[GIN] 2025/12/03 - 13:15:34 | 201 | 375.981µs | | POST "/api/v1/notifications/providers"
|
||
[GIN] 2025/12/03 - 13:15:34 | 400 | 127.16µs | | PUT "/api/v1/notifications/providers/6a12df12-c7c2-46dd-9bed-0bd49228b355"
|
||
--- PASS: TestNotificationProviderHandler_InvalidCustomTemplate_Rejects (0.01s)
|
||
=== RUN TestNotificationProviderHandler_Preview
|
||
[GIN] 2025/12/03 - 13:15:34 | 200 | 307.382µs | | POST "/api/v1/notifications/providers/preview"
|
||
[GIN] 2025/12/03 - 13:15:34 | 400 | 203.43µs | | POST "/api/v1/notifications/providers/preview"
|
||
--- PASS: TestNotificationProviderHandler_Preview (0.00s)
|
||
=== RUN TestRemoteServerHandler_TestConnectionCustom
|
||
[GIN] 2025/12/03 - 13:15:34 | 200 | 412.651µs | | POST "/api/v1/remote-servers/test"
|
||
--- PASS: TestRemoteServerHandler_TestConnectionCustom (0.02s)
|
||
=== RUN TestRemoteServerHandler_FullCRUD
|
||
[GIN] 2025/12/03 - 13:15:34 | 201 | 834.883µs | | POST "/api/v1/remote-servers"
|
||
[GIN] 2025/12/03 - 13:15:34 | 200 | 210.081µs | | GET "/api/v1/remote-servers"
|
||
[GIN] 2025/12/03 - 13:15:34 | 200 | 203.351µs | | GET "/api/v1/remote-servers/0f38320e-d1e4-420d-957c-568915e01458"
|
||
[GIN] 2025/12/03 - 13:15:34 | 200 | 543.031µs | | PUT "/api/v1/remote-servers/0f38320e-d1e4-420d-957c-568915e01458"
|
||
[GIN] 2025/12/03 - 13:15:34 | 204 | 495.942µs | | DELETE "/api/v1/remote-servers/0f38320e-d1e4-420d-957c-568915e01458"
|
||
[GIN] 2025/12/03 - 13:15:34 | 400 | 21.019µs | | POST "/api/v1/remote-servers"
|
||
|
||
2025/12/03 13:15:34 [31;1m/projects/Charon/backend/internal/services/remoteserver_service.go:77 [35;1mrecord not found
|
||
[0m[33m[0.066ms] [34;1m[rows:0][0m SELECT * FROM `remote_servers` WHERE uuid = "non-existent-uuid" ORDER BY `remote_servers`.`id` LIMIT 1
|
||
[GIN] 2025/12/03 - 13:15:34 | 404 | 142.921µs | | PUT "/api/v1/remote-servers/non-existent-uuid"
|
||
|
||
2025/12/03 13:15:34 [31;1m/projects/Charon/backend/internal/services/remoteserver_service.go:77 [35;1mrecord not found
|
||
[0m[33m[0.084ms] [34;1m[rows:0][0m SELECT * FROM `remote_servers` WHERE uuid = "non-existent-uuid" ORDER BY `remote_servers`.`id` LIMIT 1
|
||
[GIN] 2025/12/03 - 13:15:34 | 404 | 156.57µs | | DELETE "/api/v1/remote-servers/non-existent-uuid"
|
||
--- PASS: TestRemoteServerHandler_FullCRUD (0.03s)
|
||
=== RUN TestSettingsHandler_GetSettings
|
||
--- PASS: TestSettingsHandler_GetSettings (0.00s)
|
||
=== RUN TestSettingsHandler_UpdateSettings
|
||
--- PASS: TestSettingsHandler_UpdateSettings (0.00s)
|
||
=== RUN TestSettingsHandler_Errors
|
||
--- PASS: TestSettingsHandler_Errors (0.00s)
|
||
=== RUN TestUptimeHandler_List
|
||
[GIN] 2025/12/03 - 13:15:34 | 200 | 505.983µs | | GET "/api/v1/uptime"
|
||
--- PASS: TestUptimeHandler_List (0.02s)
|
||
=== RUN TestUptimeHandler_GetHistory
|
||
[GIN] 2025/12/03 - 13:15:34 | 200 | 337.161µs | | GET "/api/v1/uptime/monitor-1/history"
|
||
--- PASS: TestUptimeHandler_GetHistory (0.02s)
|
||
=== RUN TestUptimeHandler_CheckMonitor
|
||
[GIN] 2025/12/03 - 13:15:34 | 200 | 237.681µs | | POST "/api/v1/uptime/check-mon-1/check"
|
||
--- PASS: TestUptimeHandler_CheckMonitor (0.01s)
|
||
=== RUN TestUptimeHandler_CheckMonitor_NotFound
|
||
|
||
2025/12/03 13:15:35 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:819 [35;1mrecord not found
|
||
[0m[33m[0.147ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE id = "nonexistent" ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
[GIN] 2025/12/03 - 13:15:35 | 404 | 366.752µs | | POST "/api/v1/uptime/nonexistent/check"
|
||
--- PASS: TestUptimeHandler_CheckMonitor_NotFound (0.02s)
|
||
=== RUN TestUptimeHandler_Update
|
||
=== RUN TestUptimeHandler_Update/success
|
||
[GIN] 2025/12/03 - 13:15:35 | 200 | 657.452µs | | PUT "/api/v1/uptime/monitor-update"
|
||
=== RUN TestUptimeHandler_Update/invalid_json
|
||
[GIN] 2025/12/03 - 13:15:35 | 400 | 36.681µs | | PUT "/api/v1/uptime/monitor-1"
|
||
=== RUN TestUptimeHandler_Update/not_found
|
||
|
||
2025/12/03 13:15:35 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:833 [35;1mrecord not found
|
||
[0m[33m[0.106ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE id = "nonexistent" ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
[GIN] 2025/12/03 - 13:15:35 | 500 | 253.161µs | | PUT "/api/v1/uptime/nonexistent"
|
||
--- PASS: TestUptimeHandler_Update (0.06s)
|
||
--- PASS: TestUptimeHandler_Update/success (0.02s)
|
||
--- PASS: TestUptimeHandler_Update/invalid_json (0.02s)
|
||
--- PASS: TestUptimeHandler_Update/not_found (0.02s)
|
||
=== RUN TestUptimeHandler_DeleteAndSync
|
||
=== RUN TestUptimeHandler_DeleteAndSync/delete_monitor
|
||
[GIN] 2025/12/03 - 13:15:35 | 200 | 423.382µs | | DELETE "/api/v1/uptime/mon-delete"
|
||
|
||
2025/12/03 13:15:35 [31;1m/projects/Charon/backend/internal/api/handlers/uptime_handler_test.go:202 [35;1mrecord not found
|
||
[0m[33m[0.100ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE id = "mon-delete" ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
=== RUN TestUptimeHandler_DeleteAndSync/sync_creates_monitor_for_proxy_host
|
||
|
||
2025/12/03 13:15:35 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.131ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE proxy_host_id = 1 ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:35 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.101ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "127.0.0.1" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
[GIN] 2025/12/03 - 13:15:35 | 200 | 1.388914ms | | POST "/api/v1/uptime/sync"
|
||
=== RUN TestUptimeHandler_DeleteAndSync/update_enabled_via_PUT
|
||
[GIN] 2025/12/03 - 13:15:35 | 200 | 532.962µs | | PUT "/api/v1/uptime/mon-enable"
|
||
--- PASS: TestUptimeHandler_DeleteAndSync (0.05s)
|
||
--- PASS: TestUptimeHandler_DeleteAndSync/delete_monitor (0.01s)
|
||
--- PASS: TestUptimeHandler_DeleteAndSync/sync_creates_monitor_for_proxy_host (0.02s)
|
||
--- PASS: TestUptimeHandler_DeleteAndSync/update_enabled_via_PUT (0.02s)
|
||
=== RUN TestUptimeHandler_Sync_Success
|
||
[GIN] 2025/12/03 - 13:15:35 | 200 | 151.02µs | | POST "/api/v1/uptime/sync"
|
||
--- PASS: TestUptimeHandler_Sync_Success (0.02s)
|
||
=== RUN TestUptimeHandler_Delete_Error
|
||
|
||
2025/12/03 13:15:35 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:861 [35;1mno such table: uptime_monitors
|
||
[0m[33m[0.046ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE id = "nonexistent" ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
[GIN] 2025/12/03 - 13:15:35 | 500 | 167.84µs | | DELETE "/api/v1/uptime/nonexistent"
|
||
--- PASS: TestUptimeHandler_Delete_Error (0.02s)
|
||
=== RUN TestUptimeHandler_List_Error
|
||
|
||
2025/12/03 13:15:35 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:813 [35;1mno such table: uptime_monitors
|
||
[0m[33m[0.049ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` ORDER BY name ASC
|
||
[GIN] 2025/12/03 - 13:15:35 | 500 | 194.22µs | | GET "/api/v1/uptime"
|
||
--- PASS: TestUptimeHandler_List_Error (0.02s)
|
||
=== RUN TestUptimeHandler_GetHistory_Error
|
||
|
||
2025/12/03 13:15:35 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:827 [35;1mno such table: uptime_heartbeats
|
||
[0m[33m[0.044ms] [34;1m[rows:0][0m SELECT * FROM `uptime_heartbeats` WHERE monitor_id = "monitor-1" ORDER BY created_at desc LIMIT 50
|
||
[GIN] 2025/12/03 - 13:15:35 | 500 | 192.561µs | | GET "/api/v1/uptime/monitor-1/history"
|
||
--- PASS: TestUptimeHandler_GetHistory_Error (0.02s)
|
||
PASS
|
||
ok github.com/Wikid82/charon/backend/internal/api/handlers 19.973s
|
||
=== RUN TestAuthMiddleware_MissingHeader
|
||
--- PASS: TestAuthMiddleware_MissingHeader (0.00s)
|
||
=== RUN TestRequireRole_Success
|
||
--- PASS: TestRequireRole_Success (0.00s)
|
||
=== RUN TestRequireRole_Forbidden
|
||
--- PASS: TestRequireRole_Forbidden (0.00s)
|
||
=== RUN TestAuthMiddleware_Cookie
|
||
--- PASS: TestAuthMiddleware_Cookie (0.87s)
|
||
=== RUN TestAuthMiddleware_ValidToken
|
||
--- PASS: TestAuthMiddleware_ValidToken (0.84s)
|
||
=== RUN TestAuthMiddleware_InvalidToken
|
||
--- PASS: TestAuthMiddleware_InvalidToken (0.00s)
|
||
=== RUN TestRequireRole_MissingRoleInContext
|
||
--- PASS: TestRequireRole_MissingRoleInContext (0.00s)
|
||
=== RUN TestRecoveryLogsStacktraceVerbose
|
||
--- PASS: TestRecoveryLogsStacktraceVerbose (0.00s)
|
||
=== RUN TestRecoveryLogsBriefWhenNotVerbose
|
||
--- PASS: TestRecoveryLogsBriefWhenNotVerbose (0.00s)
|
||
=== RUN TestRecoverySanitizesHeadersAndPath
|
||
--- PASS: TestRecoverySanitizesHeadersAndPath (0.00s)
|
||
=== RUN TestRequestIDAddsHeaderAndLogger
|
||
--- PASS: TestRequestIDAddsHeaderAndLogger (0.00s)
|
||
=== RUN TestRequestLoggerSanitizesPath
|
||
--- PASS: TestRequestLoggerSanitizesPath (0.00s)
|
||
=== RUN TestRequestLoggerIncludesRequestID
|
||
--- PASS: TestRequestLoggerIncludesRequestID (0.00s)
|
||
PASS
|
||
ok github.com/Wikid82/charon/backend/internal/api/middleware 2.755s
|
||
=== RUN TestRegister
|
||
time="2025-12-03T13:15:16Z" level=info msg="Cleaning up invalid Let's Encrypt certificate associations..."
|
||
time="2025-12-03T13:15:16Z" level=info msg="Using Caddy data directory for certificates scan" caddy_data_dir=/data
|
||
--- PASS: TestRegister (0.06s)
|
||
time="2025-12-03T13:15:16Z" level=info msg="CertificateService: scanning cert directory" certRoot=/data/certificates
|
||
time="2025-12-03T13:15:16Z" level=info msg="CertificateService: cert directory does not exist" certRoot=/data/certificates
|
||
time="2025-12-03T13:15:16Z" level=info msg="CertificateService: disk sync complete" count=0
|
||
=== RUN TestRegisterImportHandler
|
||
--- PASS: TestRegisterImportHandler (0.01s)
|
||
PASS
|
||
ok github.com/Wikid82/charon/backend/internal/api/routes 1.122s
|
||
=== RUN TestIntegration_WAF_BlockAndMonitor
|
||
time="2025-12-03T13:15:19Z" level=info msg="Cleaning up invalid Let's Encrypt certificate associations..."
|
||
time="2025-12-03T13:15:19Z" level=info msg="Using Caddy data directory for certificates scan" caddy_data_dir=data/caddy/data
|
||
time="2025-12-03T13:15:19Z" level=warning msg="WAF blocked request" decision=block mode=block path=/api/v1/remote-servers query="test=<script>" source=waf
|
||
time="2025-12-03T13:15:19Z" level=info msg="CertificateService: scanning cert directory" certRoot=data/caddy/data/certificates
|
||
time="2025-12-03T13:15:19Z" level=info msg="CertificateService: cert directory does not exist" certRoot=data/caddy/data/certificates
|
||
time="2025-12-03T13:15:19Z" level=info msg="CertificateService: disk sync complete" count=0
|
||
time="2025-12-03T13:15:19Z" level=info msg="Cleaning up invalid Let's Encrypt certificate associations..."
|
||
time="2025-12-03T13:15:19Z" level=info msg="Using Caddy data directory for certificates scan" caddy_data_dir=data/caddy/data
|
||
time="2025-12-03T13:15:19Z" level=info msg="WAF monitored request" decision=monitor mode=monitor path=/api/v1/remote-servers query="test=<script>" source=waf
|
||
time="2025-12-03T13:15:19Z" level=info msg="CertificateService: scanning cert directory" certRoot=data/caddy/data/certificates
|
||
time="2025-12-03T13:15:19Z" level=info msg="CertificateService: cert directory does not exist" certRoot=data/caddy/data/certificates
|
||
time="2025-12-03T13:15:19Z" level=info msg="CertificateService: disk sync complete" count=0
|
||
--- PASS: TestIntegration_WAF_BlockAndMonitor (0.19s)
|
||
PASS
|
||
ok github.com/Wikid82/charon/backend/internal/api/tests 1.246s
|
||
=== RUN TestClient_Load_Success
|
||
--- PASS: TestClient_Load_Success (0.01s)
|
||
=== RUN TestClient_Load_Failure
|
||
--- PASS: TestClient_Load_Failure (0.00s)
|
||
=== RUN TestClient_GetConfig_Success
|
||
--- PASS: TestClient_GetConfig_Success (0.00s)
|
||
=== RUN TestClient_Ping_Success
|
||
--- PASS: TestClient_Ping_Success (0.00s)
|
||
=== RUN TestClient_Ping_Unreachable
|
||
--- PASS: TestClient_Ping_Unreachable (0.00s)
|
||
=== RUN TestClient_Load_CreateRequestFailure
|
||
--- PASS: TestClient_Load_CreateRequestFailure (0.00s)
|
||
=== RUN TestClient_Ping_CreateRequestFailure
|
||
--- PASS: TestClient_Ping_CreateRequestFailure (0.00s)
|
||
=== RUN TestClient_GetConfig_Failure
|
||
--- PASS: TestClient_GetConfig_Failure (0.00s)
|
||
=== RUN TestClient_GetConfig_InvalidJSON
|
||
--- PASS: TestClient_GetConfig_InvalidJSON (0.00s)
|
||
=== RUN TestClient_Ping_Failure
|
||
--- PASS: TestClient_Ping_Failure (0.00s)
|
||
=== RUN TestClient_RequestCreationErrors
|
||
--- PASS: TestClient_RequestCreationErrors (0.00s)
|
||
=== RUN TestClient_NetworkErrors
|
||
--- PASS: TestClient_NetworkErrors (0.00s)
|
||
=== RUN TestClient_Load_MarshalFailure
|
||
--- PASS: TestClient_Load_MarshalFailure (0.00s)
|
||
=== RUN TestClient_Ping_TransportError
|
||
--- PASS: TestClient_Ping_TransportError (0.00s)
|
||
=== RUN TestBuildACLHandler_GeoBlacklist
|
||
--- PASS: TestBuildACLHandler_GeoBlacklist (0.00s)
|
||
=== RUN TestBuildACLHandler_UnknownTypeReturnsNil
|
||
--- PASS: TestBuildACLHandler_UnknownTypeReturnsNil (0.00s)
|
||
=== RUN TestBuildACLHandler_GeoWhitelist
|
||
--- PASS: TestBuildACLHandler_GeoWhitelist (0.00s)
|
||
=== RUN TestBuildACLHandler_LocalNetwork
|
||
--- PASS: TestBuildACLHandler_LocalNetwork (0.00s)
|
||
=== RUN TestBuildACLHandler_IPRules
|
||
--- PASS: TestBuildACLHandler_IPRules (0.00s)
|
||
=== RUN TestBuildACLHandler_InvalidIPJSON
|
||
--- PASS: TestBuildACLHandler_InvalidIPJSON (0.00s)
|
||
=== RUN TestBuildACLHandler_NoIPRulesReturnsNil
|
||
--- PASS: TestBuildACLHandler_NoIPRulesReturnsNil (0.00s)
|
||
=== RUN TestBuildACLHandler_Whitelist
|
||
--- PASS: TestBuildACLHandler_Whitelist (0.00s)
|
||
=== RUN TestGenerateConfig_CatchAllFrontend
|
||
--- PASS: TestGenerateConfig_CatchAllFrontend (0.00s)
|
||
=== RUN TestGenerateConfig_AdvancedInvalidJSON
|
||
time="2025-12-03T13:15:19Z" level=warning msg="Failed to parse advanced_config for host" error="invalid character 'i' looking for beginning of object key string" host=adv1
|
||
--- PASS: TestGenerateConfig_AdvancedInvalidJSON (0.00s)
|
||
=== RUN TestGenerateConfig_AdvancedArrayHandler
|
||
--- PASS: TestGenerateConfig_AdvancedArrayHandler (0.00s)
|
||
=== RUN TestGenerateConfig_LowercaseDomains
|
||
--- PASS: TestGenerateConfig_LowercaseDomains (0.00s)
|
||
=== RUN TestGenerateConfig_AdvancedObjectHandler
|
||
--- PASS: TestGenerateConfig_AdvancedObjectHandler (0.00s)
|
||
=== RUN TestGenerateConfig_AdvancedHeadersStringToArray
|
||
--- PASS: TestGenerateConfig_AdvancedHeadersStringToArray (0.00s)
|
||
=== RUN TestGenerateConfig_ACLWhitelistIncluded
|
||
--- PASS: TestGenerateConfig_ACLWhitelistIncluded (0.00s)
|
||
=== RUN TestGenerateConfig_SkipsEmptyDomainEntries
|
||
--- PASS: TestGenerateConfig_SkipsEmptyDomainEntries (0.00s)
|
||
=== RUN TestGenerateConfig_AdvancedNoHandlerKey
|
||
time="2025-12-03T13:15:19Z" level=warning msg="advanced_config for host is not a handler object" host=adv3
|
||
--- PASS: TestGenerateConfig_AdvancedNoHandlerKey (0.00s)
|
||
=== RUN TestGenerateConfig_AdvancedUnexpectedJSONStructure
|
||
time="2025-12-03T13:15:19Z" level=warning msg="advanced_config for host has unexpected JSON structure" host=adv4
|
||
--- PASS: TestGenerateConfig_AdvancedUnexpectedJSONStructure (0.00s)
|
||
=== RUN TestBuildACLHandler_UnknownIPTypeReturnsNil
|
||
--- PASS: TestBuildACLHandler_UnknownIPTypeReturnsNil (0.00s)
|
||
=== RUN TestGenerateConfig_SecurityPipeline_Order
|
||
--- PASS: TestGenerateConfig_SecurityPipeline_Order (0.00s)
|
||
=== RUN TestGenerateConfig_SecurityPipeline_OmitWhenDisabled
|
||
--- PASS: TestGenerateConfig_SecurityPipeline_OmitWhenDisabled (0.00s)
|
||
=== RUN TestGenerateConfig_ZerosslAndBothProviders
|
||
--- PASS: TestGenerateConfig_ZerosslAndBothProviders (0.00s)
|
||
=== RUN TestGenerateConfig_SecurityPipeline_Order_Locations
|
||
--- PASS: TestGenerateConfig_SecurityPipeline_Order_Locations (0.00s)
|
||
=== RUN TestGenerateConfig_ACLLogWarning
|
||
--- PASS: TestGenerateConfig_ACLLogWarning (0.00s)
|
||
=== RUN TestGenerateConfig_ACLHandlerIncluded
|
||
--- PASS: TestGenerateConfig_ACLHandlerIncluded (0.00s)
|
||
=== RUN TestGenerateConfig_DecisionsBlockWithAdminExclusion
|
||
config_generate_additional_test.go:143: handles: [
|
||
{
|
||
"handler": "subroute",
|
||
"routes": [
|
||
{
|
||
"handle": [
|
||
{
|
||
"body": "Access denied: Blocked by security decision",
|
||
"handler": "static_response",
|
||
"status_code": 403
|
||
}
|
||
],
|
||
"match": [
|
||
{
|
||
"remote_ip": {
|
||
"ranges": [
|
||
"1.2.3.4"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"not": [
|
||
{
|
||
"remote_ip": {
|
||
"ranges": [
|
||
"10.0.0.1/32"
|
||
]
|
||
}
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"terminal": true
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"flush_interval": -1,
|
||
"handler": "reverse_proxy",
|
||
"upstreams": [
|
||
{
|
||
"dial": "app:8080"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
--- PASS: TestGenerateConfig_DecisionsBlockWithAdminExclusion (0.00s)
|
||
=== RUN TestGenerateConfig_WAFModeAndRulesetReference
|
||
--- PASS: TestGenerateConfig_WAFModeAndRulesetReference (0.00s)
|
||
=== RUN TestGenerateConfig_WAFModeDisabledSkipsHandler
|
||
--- PASS: TestGenerateConfig_WAFModeDisabledSkipsHandler (0.00s)
|
||
=== RUN TestGenerateConfig_WAFSelectedSetsContentAndMode
|
||
--- PASS: TestGenerateConfig_WAFSelectedSetsContentAndMode (0.00s)
|
||
=== RUN TestGenerateConfig_DecisionAdminPartsEmpty
|
||
--- PASS: TestGenerateConfig_DecisionAdminPartsEmpty (0.00s)
|
||
=== RUN TestNormalizeHeaderOps_PreserveStringArray
|
||
--- PASS: TestNormalizeHeaderOps_PreserveStringArray (0.00s)
|
||
=== RUN TestGenerateConfig_WAFUsesRuleSet
|
||
--- PASS: TestGenerateConfig_WAFUsesRuleSet (0.00s)
|
||
=== RUN TestGenerateConfig_WAFUsesRuleSetFromAdvancedConfig
|
||
--- PASS: TestGenerateConfig_WAFUsesRuleSetFromAdvancedConfig (0.00s)
|
||
=== RUN TestGenerateConfig_WAFUsesRuleSetFromAdvancedConfig_Array
|
||
--- PASS: TestGenerateConfig_WAFUsesRuleSetFromAdvancedConfig_Array (0.00s)
|
||
=== RUN TestGenerateConfig_WAFUsesRulesetFromSecCfgFallback
|
||
--- PASS: TestGenerateConfig_WAFUsesRulesetFromSecCfgFallback (0.00s)
|
||
=== RUN TestGenerateConfig_RateLimitFromSecCfg
|
||
--- PASS: TestGenerateConfig_RateLimitFromSecCfg (0.00s)
|
||
=== RUN TestGenerateConfig_CrowdSecHandlerFromSecCfg
|
||
--- PASS: TestGenerateConfig_CrowdSecHandlerFromSecCfg (0.00s)
|
||
=== RUN TestGenerateConfig_EmptyHostsAndNoFrontend
|
||
--- PASS: TestGenerateConfig_EmptyHostsAndNoFrontend (0.00s)
|
||
=== RUN TestGenerateConfig_SkipsInvalidCustomCert
|
||
--- PASS: TestGenerateConfig_SkipsInvalidCustomCert (0.00s)
|
||
=== RUN TestGenerateConfig_SkipsDuplicateDomains
|
||
--- PASS: TestGenerateConfig_SkipsDuplicateDomains (0.00s)
|
||
=== RUN TestGenerateConfig_LoadPEMSetsTLSWhenNoACME
|
||
--- PASS: TestGenerateConfig_LoadPEMSetsTLSWhenNoACME (0.00s)
|
||
=== RUN TestGenerateConfig_DefaultAcmeStaging
|
||
--- PASS: TestGenerateConfig_DefaultAcmeStaging (0.00s)
|
||
=== RUN TestGenerateConfig_ACLHandlerBuildError
|
||
--- PASS: TestGenerateConfig_ACLHandlerBuildError (0.00s)
|
||
=== RUN TestGenerateConfig_SkipHostDomainEmptyAndDisabled
|
||
--- PASS: TestGenerateConfig_SkipHostDomainEmptyAndDisabled (0.00s)
|
||
=== RUN TestGenerateConfig_CustomCertsAndTLS
|
||
--- PASS: TestGenerateConfig_CustomCertsAndTLS (0.00s)
|
||
=== RUN TestGenerateConfig_Empty
|
||
--- PASS: TestGenerateConfig_Empty (0.00s)
|
||
=== RUN TestGenerateConfig_SingleHost
|
||
--- PASS: TestGenerateConfig_SingleHost (0.00s)
|
||
=== RUN TestGenerateConfig_MultipleHosts
|
||
--- PASS: TestGenerateConfig_MultipleHosts (0.00s)
|
||
=== RUN TestGenerateConfig_WebSocketEnabled
|
||
--- PASS: TestGenerateConfig_WebSocketEnabled (0.00s)
|
||
=== RUN TestGenerateConfig_EmptyDomain
|
||
--- PASS: TestGenerateConfig_EmptyDomain (0.00s)
|
||
=== RUN TestGenerateConfig_Logging
|
||
--- PASS: TestGenerateConfig_Logging (0.00s)
|
||
=== RUN TestGenerateConfig_Advanced
|
||
--- PASS: TestGenerateConfig_Advanced (0.00s)
|
||
=== RUN TestGenerateConfig_ACMEStaging
|
||
--- PASS: TestGenerateConfig_ACMEStaging (0.00s)
|
||
=== RUN TestBuildACLHandler_WhitelistAndBlacklistAdminMerge
|
||
--- PASS: TestBuildACLHandler_WhitelistAndBlacklistAdminMerge (0.00s)
|
||
=== RUN TestBuildACLHandler_GeoAndLocalNetwork
|
||
--- PASS: TestBuildACLHandler_GeoAndLocalNetwork (0.00s)
|
||
=== RUN TestBuildACLHandler_AdminWhitelistParsing
|
||
--- PASS: TestBuildACLHandler_AdminWhitelistParsing (0.00s)
|
||
=== RUN TestImporter_ExtractHosts_DialWithoutPortDefaultsTo80
|
||
--- PASS: TestImporter_ExtractHosts_DialWithoutPortDefaultsTo80 (0.00s)
|
||
=== RUN TestImporter_ExtractHosts_DetectsWebsocketFromHeaders
|
||
--- PASS: TestImporter_ExtractHosts_DetectsWebsocketFromHeaders (0.00s)
|
||
=== RUN TestImporter_ImportFile_ParseOutputInvalidJSON
|
||
--- PASS: TestImporter_ImportFile_ParseOutputInvalidJSON (0.00s)
|
||
=== RUN TestImporter_ImportFile_ExecutorError
|
||
--- PASS: TestImporter_ImportFile_ExecutorError (0.00s)
|
||
=== RUN TestImporter_ExtractHosts_TLSConnectionPolicyAndDialWithoutPort
|
||
--- PASS: TestImporter_ExtractHosts_TLSConnectionPolicyAndDialWithoutPort (0.00s)
|
||
=== RUN TestExtractHandlers_Subroute_WithUnsupportedSubhandle
|
||
--- PASS: TestExtractHandlers_Subroute_WithUnsupportedSubhandle (0.00s)
|
||
=== RUN TestExtractHandlers_Subroute_WithNonMapRoutes
|
||
--- PASS: TestExtractHandlers_Subroute_WithNonMapRoutes (0.00s)
|
||
=== RUN TestImporter_ExtractHosts_UpstreamsNonMapAndWarnings
|
||
--- PASS: TestImporter_ExtractHosts_UpstreamsNonMapAndWarnings (0.00s)
|
||
=== RUN TestBackupCaddyfile_ReadFailure
|
||
--- PASS: TestBackupCaddyfile_ReadFailure (0.00s)
|
||
=== RUN TestExtractHandlers_Subroute_EmptyAndHandleNotArray
|
||
--- PASS: TestExtractHandlers_Subroute_EmptyAndHandleNotArray (0.00s)
|
||
=== RUN TestImporter_ExtractHosts_ReverseProxyNoUpstreams
|
||
--- PASS: TestImporter_ExtractHosts_ReverseProxyNoUpstreams (0.00s)
|
||
=== RUN TestBackupCaddyfile_Success
|
||
--- PASS: TestBackupCaddyfile_Success (0.00s)
|
||
=== RUN TestExtractHandlers_Subroute_WithHeadersUpstreams
|
||
--- PASS: TestExtractHandlers_Subroute_WithHeadersUpstreams (0.00s)
|
||
=== RUN TestImporter_ExtractHosts_DuplicateHost
|
||
--- PASS: TestImporter_ExtractHosts_DuplicateHost (0.00s)
|
||
=== RUN TestBackupCaddyfile_WriteFailure
|
||
--- PASS: TestBackupCaddyfile_WriteFailure (0.00s)
|
||
=== RUN TestImporter_ExtractHosts_SSLForcedByDomainScheme
|
||
--- PASS: TestImporter_ExtractHosts_SSLForcedByDomainScheme (0.00s)
|
||
=== RUN TestImporter_ExtractHosts_MultipleHostsInMatch
|
||
--- PASS: TestImporter_ExtractHosts_MultipleHostsInMatch (0.00s)
|
||
=== RUN TestImporter_ExtractHosts_UpgradeHeaderAsString
|
||
--- PASS: TestImporter_ExtractHosts_UpgradeHeaderAsString (0.00s)
|
||
=== RUN TestImporter_ExtractHosts_SscanfFailureOnPort
|
||
--- PASS: TestImporter_ExtractHosts_SscanfFailureOnPort (0.00s)
|
||
=== RUN TestImporter_ExtractHosts_PartsSscanfFail
|
||
--- PASS: TestImporter_ExtractHosts_PartsSscanfFail (0.00s)
|
||
=== RUN TestImporter_ExtractHosts_PartsEmptyPortField
|
||
--- PASS: TestImporter_ExtractHosts_PartsEmptyPortField (0.00s)
|
||
=== RUN TestImporter_ExtractHosts_ForceSplitFallback_PartsNumericPort
|
||
--- PASS: TestImporter_ExtractHosts_ForceSplitFallback_PartsNumericPort (0.00s)
|
||
=== RUN TestImporter_ExtractHosts_ForceSplitFallback_PartsSscanfFail
|
||
--- PASS: TestImporter_ExtractHosts_ForceSplitFallback_PartsSscanfFail (0.00s)
|
||
=== RUN TestBackupCaddyfile_WriteErrorDeterministic
|
||
--- PASS: TestBackupCaddyfile_WriteErrorDeterministic (0.00s)
|
||
=== RUN TestParseCaddyfile_InvalidPath
|
||
--- PASS: TestParseCaddyfile_InvalidPath (0.00s)
|
||
=== RUN TestBackupCaddyfile_InvalidOriginalPath
|
||
--- PASS: TestBackupCaddyfile_InvalidOriginalPath (0.00s)
|
||
=== RUN TestExtractHandlers_Subroute
|
||
--- PASS: TestExtractHandlers_Subroute (0.00s)
|
||
=== RUN TestNewImporter
|
||
--- PASS: TestNewImporter (0.00s)
|
||
=== RUN TestImporter_ParseCaddyfile_NotFound
|
||
--- PASS: TestImporter_ParseCaddyfile_NotFound (0.00s)
|
||
=== RUN TestImporter_ParseCaddyfile_Success
|
||
--- PASS: TestImporter_ParseCaddyfile_Success (0.00s)
|
||
=== RUN TestImporter_ParseCaddyfile_Failure
|
||
--- PASS: TestImporter_ParseCaddyfile_Failure (0.00s)
|
||
=== RUN TestImporter_ExtractHosts
|
||
--- PASS: TestImporter_ExtractHosts (0.00s)
|
||
=== RUN TestImporter_ImportFile
|
||
--- PASS: TestImporter_ImportFile (0.00s)
|
||
=== RUN TestConvertToProxyHosts
|
||
--- PASS: TestConvertToProxyHosts (0.00s)
|
||
=== RUN TestImporter_ValidateCaddyBinary
|
||
--- PASS: TestImporter_ValidateCaddyBinary (0.00s)
|
||
=== RUN TestBackupCaddyfile
|
||
--- PASS: TestBackupCaddyfile (0.00s)
|
||
=== RUN TestDefaultExecutor_Execute
|
||
--- PASS: TestDefaultExecutor_Execute (0.00s)
|
||
=== RUN TestManager_ListSnapshots_ReadDirError
|
||
--- PASS: TestManager_ListSnapshots_ReadDirError (0.00s)
|
||
=== RUN TestManager_RotateSnapshots_NoOp
|
||
--- PASS: TestManager_RotateSnapshots_NoOp (0.00s)
|
||
=== RUN TestManager_Rollback_NoSnapshots
|
||
--- PASS: TestManager_Rollback_NoSnapshots (0.00s)
|
||
=== RUN TestManager_Rollback_UnmarshalError
|
||
--- PASS: TestManager_Rollback_UnmarshalError (0.00s)
|
||
=== RUN TestManager_Rollback_LoadSnapshotFail
|
||
--- PASS: TestManager_Rollback_LoadSnapshotFail (0.01s)
|
||
=== RUN TestManager_SaveSnapshot_WriteError
|
||
--- PASS: TestManager_SaveSnapshot_WriteError (0.00s)
|
||
=== RUN TestBackupCaddyfile_MkdirAllFailure
|
||
--- PASS: TestBackupCaddyfile_MkdirAllFailure (0.00s)
|
||
=== RUN TestManager_SaveSnapshot_Success
|
||
--- PASS: TestManager_SaveSnapshot_Success (0.00s)
|
||
=== RUN TestManager_ApplyConfig_WithSettings
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.073ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.077ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[1.882ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[0.909ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[2.069ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_WithSettings (0.04s)
|
||
=== RUN TestManager_RotateSnapshots_ListDirError
|
||
--- PASS: TestManager_RotateSnapshots_ListDirError (0.00s)
|
||
=== RUN TestManager_RotateSnapshots_DeletesOld
|
||
--- PASS: TestManager_RotateSnapshots_DeletesOld (0.00s)
|
||
=== RUN TestManager_ApplyConfig_RotateSnapshotsWarning
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.132ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.051ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.080ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.066ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[3.270ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[1.650ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.020ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_RotateSnapshotsWarning (0.03s)
|
||
=== RUN TestManager_ApplyConfig_LoadFailsAndRollbackFails
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.082ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.116ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.111ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.107ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[2.357ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[1.451ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[2.105ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_LoadFailsAndRollbackFails (0.03s)
|
||
=== RUN TestManager_ApplyConfig_SaveSnapshotFails
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.072ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.074ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.066ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.088ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[1.033ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[1.814ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.167ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_SaveSnapshotFails (0.03s)
|
||
=== RUN TestManager_ApplyConfig_LoadFailsThenRollbackSucceeds
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.072ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.071ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.061ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.127ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[2.868ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[0.758ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.812ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_LoadFailsThenRollbackSucceeds (0.02s)
|
||
=== RUN TestManager_SaveSnapshot_MarshalError
|
||
--- PASS: TestManager_SaveSnapshot_MarshalError (0.00s)
|
||
=== RUN TestManager_RotateSnapshots_DeleteError
|
||
--- PASS: TestManager_RotateSnapshots_DeleteError (0.00s)
|
||
=== RUN TestManager_ApplyConfig_GenerateConfigFails
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.068ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.074ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.083ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.066ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[1.492ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[1.259ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.830ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_GenerateConfigFails (0.02s)
|
||
=== RUN TestManager_ApplyConfig_RejectsWhenCerberusEnabledWithoutAdminWhitelist
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.043ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.046ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.040ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.057ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
--- PASS: TestManager_ApplyConfig_RejectsWhenCerberusEnabledWithoutAdminWhitelist (0.01s)
|
||
=== RUN TestManager_ApplyConfig_ValidateFails
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.042ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.054ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.042ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.044ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[1.373ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[0.773ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.680ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_ValidateFails (0.01s)
|
||
=== RUN TestManager_Rollback_ReadFileError
|
||
--- PASS: TestManager_Rollback_ReadFileError (0.00s)
|
||
=== RUN TestManager_ApplyConfig_RotateSnapshotsWarning_Stderr
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.042ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.051ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.040ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.038ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[0.779ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[0.984ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.722ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_RotateSnapshotsWarning_Stderr (0.01s)
|
||
=== RUN TestManager_ApplyConfig_PassesAdminWhitelistToGenerateConfig
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.060ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.109ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.096ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.110ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[1.079ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.514ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_PassesAdminWhitelistToGenerateConfig (0.02s)
|
||
=== RUN TestManager_ApplyConfig_PassesRuleSetsToGenerateConfig
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.090ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.071ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.068ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.060ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.394ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_PassesRuleSetsToGenerateConfig (0.02s)
|
||
=== RUN TestManager_ApplyConfig_IncludesWAFHandlerWithRuleset
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.076ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.076ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.083ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.062ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.286ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
manager_additional_test.go:711: generated config: {"apps":{"http":{"servers":{"charon_server":{"listen":[":80",":443"],"routes":[{"match":[{"host":["ruleset.example.com"]}],"handle":[{"handler":"waf","include":["/tmp/TestManager_ApplyConfig_IncludesWAFHandlerWithRuleset3173188026/001/coraza/rulesets/owasp-crs.conf"]},{"handler":"vars"},{"flush_interval":-1,"handler":"reverse_proxy","upstreams":[{"dial":"127.0.0.1:8080"}]}],"terminal":true}],"automatic_https":{},"logs":{"default_logger_name":"access_log"}}}}},"logging":{"logs":{"access":{"writer":{"output":"file","filename":"/tmp/TestManager_ApplyConfig_IncludesWAFHandlerWithRuleset3173188026/logs/access.log","roll":true,"roll_size_mb":10,"roll_keep":5,"roll_keep_days":7},"encoder":{"format":"json"},"level":"INFO","include":["http.log.access.access_log"]}}},"storage":{"module":"file_system","root":"/tmp/TestManager_ApplyConfig_IncludesWAFHandlerWithRuleset3173188026/001/data"}}
|
||
--- PASS: TestManager_ApplyConfig_IncludesWAFHandlerWithRuleset (0.02s)
|
||
=== RUN TestManager_ApplyConfig_RulesetWriteFileFailure
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.069ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.099ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.069ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.375ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.446ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_RulesetWriteFileFailure (0.03s)
|
||
=== RUN TestManager_ApplyConfig_RulesetDirMkdirFailure
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.044ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.062ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.071ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.055ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.866ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_RulesetDirMkdirFailure (0.02s)
|
||
=== RUN TestManager_ApplyConfig_ReappliesOnFlagChange
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.044ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.047ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.039ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.037ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[0.875ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[0.753ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.868ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.045ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.047ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.041ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[0.036ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[0.033ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.050ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.061ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.048ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.401ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[0.042ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[0.026ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.042ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_ReappliesOnFlagChange (0.03s)
|
||
=== RUN TestManager_ApplyConfig_PrependsSecRuleEngineDirectives
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.077ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.108ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.069ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.064ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.924ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_PrependsSecRuleEngineDirectives (0.02s)
|
||
=== RUN TestManager_ApplyConfig_DoesNotPrependIfSecRuleEngineExists
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.069ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.064ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.065ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.066ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.087ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_DoesNotPrependIfSecRuleEngineExists (0.02s)
|
||
=== RUN TestManager_ApplyConfig_DebugMarshalFailure
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.056ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.056ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.051ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.051ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.070ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_DebugMarshalFailure (0.02s)
|
||
=== RUN TestManager_ApplyConfig_WAFModeMonitorUsesDetectionOnly
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.059ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.065ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.051ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.049ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.007ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_WAFModeMonitorUsesDetectionOnly (0.02s)
|
||
=== RUN TestManager_ApplyConfig_PerRulesetModeOverride
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.060ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.063ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.057ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.055ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.106ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_PerRulesetModeOverride (0.02s)
|
||
=== RUN TestManager_ApplyConfig_RulesetFileCleanup
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.047ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.085ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.064ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.067ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.102ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_RulesetFileCleanup (0.02s)
|
||
=== RUN TestManager_ApplyConfig_RulesetCleanupReadDirError
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.057ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.088ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.061ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.052ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.165ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_RulesetCleanupReadDirError (0.02s)
|
||
=== RUN TestManager_ApplyConfig_RulesetCleanupRemoveError
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.066ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.060ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.055ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.067ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.276ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_RulesetCleanupRemoveError (0.02s)
|
||
=== RUN TestManager_ApplyConfig_WAFModeBlockExplicit
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.057ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.061ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.053ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.066ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.132ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_WAFModeBlockExplicit (0.02s)
|
||
=== RUN TestManager_ApplyConfig
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.060ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.091ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.071ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.044ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[0.961ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[1.917ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.890ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig (0.02s)
|
||
=== RUN TestManager_ApplyConfig_Failure
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.054ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.087ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.075ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.070ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[1.042ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[1.468ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.235ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_Failure (0.02s)
|
||
=== RUN TestManager_Ping
|
||
--- PASS: TestManager_Ping (0.00s)
|
||
=== RUN TestManager_GetCurrentConfig
|
||
--- PASS: TestManager_GetCurrentConfig (0.00s)
|
||
=== RUN TestManager_RotateSnapshots
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.064ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.057ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.053ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.052ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[1.016ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[1.231ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.853ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_RotateSnapshots (0.02s)
|
||
=== RUN TestManager_Rollback_Success
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.043ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.046ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.041ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.081ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[1.023ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[1.685ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:19 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.256ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.082ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.053ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.046ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.040ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[0.039ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[0.026ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.039ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_Rollback_Success (1.12s)
|
||
=== RUN TestManager_ApplyConfig_DBError
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:61 [35;1msql: database is closed
|
||
[0m[33m[0.024ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
--- PASS: TestManager_ApplyConfig_DBError (0.01s)
|
||
=== RUN TestManager_ApplyConfig_ValidationError
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.095ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.071ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.080ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.079ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[1.022ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[1.252ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.926ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_ValidationError (0.02s)
|
||
=== RUN TestManager_Rollback_Failure
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.053ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.048ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.086ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.219ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[0.847ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[1.393ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.723ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_Rollback_Failure (0.02s)
|
||
=== RUN TestComputeEffectiveFlags_DefaultsNoDB
|
||
--- PASS: TestComputeEffectiveFlags_DefaultsNoDB (0.00s)
|
||
=== RUN TestComputeEffectiveFlags_DB_CerberusDisabled
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.086ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" AND `settings`.`id` = 1 ORDER BY `settings`.`id` LIMIT 1
|
||
--- PASS: TestComputeEffectiveFlags_DB_CerberusDisabled (0.00s)
|
||
=== RUN TestComputeEffectiveFlags_DB_CrowdSecExternal
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.066ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.059ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
--- PASS: TestComputeEffectiveFlags_DB_CrowdSecExternal (0.00s)
|
||
=== RUN TestComputeEffectiveFlags_DB_CrowdSecUnknown
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.094ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.095ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
--- PASS: TestComputeEffectiveFlags_DB_CrowdSecUnknown (0.00s)
|
||
=== RUN TestComputeEffectiveFlags_DB_CrowdSecLocal
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.075ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.058ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
--- PASS: TestComputeEffectiveFlags_DB_CrowdSecLocal (0.00s)
|
||
=== RUN TestComputeEffectiveFlags_DB_ACLTrueAndFalse
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.063ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:20 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.082ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
--- PASS: TestComputeEffectiveFlags_DB_ACLTrueAndFalse (0.00s)
|
||
=== RUN TestNormalizeAdvancedConfig_MapWithNestedHandles
|
||
--- PASS: TestNormalizeAdvancedConfig_MapWithNestedHandles (0.00s)
|
||
=== RUN TestNormalizeAdvancedConfig_ArrayTopLevel
|
||
--- PASS: TestNormalizeAdvancedConfig_ArrayTopLevel (0.00s)
|
||
=== RUN TestNormalizeAdvancedConfig_DefaultPrimitives
|
||
--- PASS: TestNormalizeAdvancedConfig_DefaultPrimitives (0.00s)
|
||
=== RUN TestNormalizeAdvancedConfig_CoerceNonStandardTypes
|
||
--- PASS: TestNormalizeAdvancedConfig_CoerceNonStandardTypes (0.00s)
|
||
=== RUN TestNormalizeAdvancedConfig_JSONRoundtrip
|
||
--- PASS: TestNormalizeAdvancedConfig_JSONRoundtrip (0.00s)
|
||
=== RUN TestNormalizeAdvancedConfig_TopLevelHeaders
|
||
--- PASS: TestNormalizeAdvancedConfig_TopLevelHeaders (0.00s)
|
||
=== RUN TestNormalizeAdvancedConfig_HeadersAlreadyArray
|
||
--- PASS: TestNormalizeAdvancedConfig_HeadersAlreadyArray (0.00s)
|
||
=== RUN TestNormalizeAdvancedConfig_MapWithTopLevelHandle
|
||
--- PASS: TestNormalizeAdvancedConfig_MapWithTopLevelHandle (0.00s)
|
||
=== RUN TestReverseProxyHandler_PlexAndOthers
|
||
--- PASS: TestReverseProxyHandler_PlexAndOthers (0.00s)
|
||
=== RUN TestHandlers
|
||
--- PASS: TestHandlers (0.00s)
|
||
=== RUN TestValidate_NilConfig
|
||
--- PASS: TestValidate_NilConfig (0.00s)
|
||
=== RUN TestValidateHandler_MissingHandlerField
|
||
--- PASS: TestValidateHandler_MissingHandlerField (0.00s)
|
||
=== RUN TestValidateHandler_UnknownHandlerAllowed
|
||
--- PASS: TestValidateHandler_UnknownHandlerAllowed (0.00s)
|
||
=== RUN TestValidateHandler_FileServerAndStaticResponseAllowed
|
||
--- PASS: TestValidateHandler_FileServerAndStaticResponseAllowed (0.00s)
|
||
=== RUN TestValidateRoute_InvalidHandler
|
||
--- PASS: TestValidateRoute_InvalidHandler (0.00s)
|
||
=== RUN TestValidateListenAddr_InvalidHostName
|
||
--- PASS: TestValidateListenAddr_InvalidHostName (0.00s)
|
||
=== RUN TestValidateListenAddr_InvalidPortNonNumeric
|
||
--- PASS: TestValidateListenAddr_InvalidPortNonNumeric (0.00s)
|
||
=== RUN TestValidate_MarshalError
|
||
--- PASS: TestValidate_MarshalError (0.00s)
|
||
=== RUN TestValidate_EmptyConfig
|
||
--- PASS: TestValidate_EmptyConfig (0.00s)
|
||
=== RUN TestValidate_ValidConfig
|
||
--- PASS: TestValidate_ValidConfig (0.00s)
|
||
=== RUN TestValidate_DuplicateHosts
|
||
--- PASS: TestValidate_DuplicateHosts (0.00s)
|
||
=== RUN TestValidate_NoListenAddresses
|
||
--- PASS: TestValidate_NoListenAddresses (0.00s)
|
||
=== RUN TestValidate_InvalidPort
|
||
--- PASS: TestValidate_InvalidPort (0.00s)
|
||
=== RUN TestValidate_NoHandlers
|
||
--- PASS: TestValidate_NoHandlers (0.00s)
|
||
=== RUN TestValidateListenAddr
|
||
=== RUN TestValidateListenAddr/Valid
|
||
=== RUN TestValidateListenAddr/ValidIP
|
||
=== RUN TestValidateListenAddr/ValidTCP
|
||
=== RUN TestValidateListenAddr/ValidUDP
|
||
=== RUN TestValidateListenAddr/InvalidFormat
|
||
=== RUN TestValidateListenAddr/InvalidPort
|
||
=== RUN TestValidateListenAddr/InvalidPortNegative
|
||
=== RUN TestValidateListenAddr/InvalidIP
|
||
--- PASS: TestValidateListenAddr (0.00s)
|
||
--- PASS: TestValidateListenAddr/Valid (0.00s)
|
||
--- PASS: TestValidateListenAddr/ValidIP (0.00s)
|
||
--- PASS: TestValidateListenAddr/ValidTCP (0.00s)
|
||
--- PASS: TestValidateListenAddr/ValidUDP (0.00s)
|
||
--- PASS: TestValidateListenAddr/InvalidFormat (0.00s)
|
||
--- PASS: TestValidateListenAddr/InvalidPort (0.00s)
|
||
--- PASS: TestValidateListenAddr/InvalidPortNegative (0.00s)
|
||
--- PASS: TestValidateListenAddr/InvalidIP (0.00s)
|
||
=== RUN TestValidateReverseProxy
|
||
=== RUN TestValidateReverseProxy/Valid
|
||
=== RUN TestValidateReverseProxy/MissingUpstreams
|
||
=== RUN TestValidateReverseProxy/EmptyUpstreams
|
||
=== RUN TestValidateReverseProxy/MissingDial
|
||
=== RUN TestValidateReverseProxy/InvalidDial
|
||
--- PASS: TestValidateReverseProxy (0.00s)
|
||
--- PASS: TestValidateReverseProxy/Valid (0.00s)
|
||
--- PASS: TestValidateReverseProxy/MissingUpstreams (0.00s)
|
||
--- PASS: TestValidateReverseProxy/EmptyUpstreams (0.00s)
|
||
--- PASS: TestValidateReverseProxy/MissingDial (0.00s)
|
||
--- PASS: TestValidateReverseProxy/InvalidDial (0.00s)
|
||
PASS
|
||
ok github.com/Wikid82/charon/backend/internal/caddy 2.876s
|
||
=== RUN TestIsEnabled_ConfigTrue
|
||
--- PASS: TestIsEnabled_ConfigTrue (0.00s)
|
||
=== RUN TestIsEnabled_WAFModeEnabled
|
||
--- PASS: TestIsEnabled_WAFModeEnabled (0.00s)
|
||
=== RUN TestIsEnabled_ACLModeEnabled
|
||
--- PASS: TestIsEnabled_ACLModeEnabled (0.00s)
|
||
=== RUN TestIsEnabled_RateLimitModeEnabled
|
||
--- PASS: TestIsEnabled_RateLimitModeEnabled (0.00s)
|
||
=== RUN TestIsEnabled_CrowdSecModeLocal
|
||
--- PASS: TestIsEnabled_CrowdSecModeLocal (0.00s)
|
||
=== RUN TestIsEnabled_DBSetting
|
||
--- PASS: TestIsEnabled_DBSetting (0.01s)
|
||
=== RUN TestIsEnabled_DBSettingCaseInsensitive
|
||
--- PASS: TestIsEnabled_DBSettingCaseInsensitive (0.01s)
|
||
=== RUN TestIsEnabled_DBSettingFalse
|
||
--- PASS: TestIsEnabled_DBSettingFalse (0.01s)
|
||
=== RUN TestIsEnabled_DefaultFalse
|
||
--- PASS: TestIsEnabled_DefaultFalse (0.00s)
|
||
=== RUN TestMiddleware_WAFBlocksPayload
|
||
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
|
||
- using env: export GIN_MODE=release
|
||
- using code: gin.SetMode(gin.ReleaseMode)
|
||
|
||
time="2025-12-03T13:15:22Z" level=warning msg="WAF blocked request" decision=block mode=block path=/ query="q=<script>" source=waf
|
||
--- PASS: TestMiddleware_WAFBlocksPayload (0.02s)
|
||
=== RUN TestMiddleware_ACLBlocksClientIP
|
||
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
|
||
- using env: export GIN_MODE=release
|
||
- using code: gin.SetMode(gin.ReleaseMode)
|
||
|
||
--- PASS: TestMiddleware_ACLBlocksClientIP (0.01s)
|
||
=== RUN TestMiddleware_ACLAllowsClientIP
|
||
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
|
||
- using env: export GIN_MODE=release
|
||
- using code: gin.SetMode(gin.ReleaseMode)
|
||
|
||
--- PASS: TestMiddleware_ACLAllowsClientIP (0.01s)
|
||
=== RUN TestMiddleware_NotEnabledSkips
|
||
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
|
||
- using env: export GIN_MODE=release
|
||
- using code: gin.SetMode(gin.ReleaseMode)
|
||
|
||
|
||
2025/12/03 13:15:22 [31;1m/projects/Charon/backend/internal/cerberus/cerberus.go:51 [35;1mrecord not found
|
||
[0m[33m[0.098ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
--- PASS: TestMiddleware_NotEnabledSkips (0.01s)
|
||
=== RUN TestMiddleware_WAFPassesWithNoPayload
|
||
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
|
||
- using env: export GIN_MODE=release
|
||
- using code: gin.SetMode(gin.ReleaseMode)
|
||
|
||
--- PASS: TestMiddleware_WAFPassesWithNoPayload (0.01s)
|
||
=== RUN TestMiddleware_WAFMonitorLogsButDoesNotBlock
|
||
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
|
||
- using env: export GIN_MODE=release
|
||
- using code: gin.SetMode(gin.ReleaseMode)
|
||
|
||
time="2025-12-03T13:15:22Z" level=info msg="WAF monitored request" decision=monitor mode=monitor path=/ query="q=<script>" source=waf
|
||
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
|
||
- using env: export GIN_MODE=release
|
||
- using code: gin.SetMode(gin.ReleaseMode)
|
||
|
||
--- PASS: TestMiddleware_WAFMonitorLogsButDoesNotBlock (0.01s)
|
||
=== RUN TestMiddleware_ACLDisabledDoesNotBlock
|
||
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
|
||
- using env: export GIN_MODE=release
|
||
- using code: gin.SetMode(gin.ReleaseMode)
|
||
|
||
--- PASS: TestMiddleware_ACLDisabledDoesNotBlock (0.01s)
|
||
=== RUN TestCerberus_IsEnabled_ConfigTrue
|
||
--- PASS: TestCerberus_IsEnabled_ConfigTrue (0.00s)
|
||
=== RUN TestCerberus_IsEnabled_DBSetting
|
||
--- PASS: TestCerberus_IsEnabled_DBSetting (0.01s)
|
||
=== RUN TestCerberus_IsEnabled_Disabled
|
||
cerberus_test.go:47: cfg: {CrowdSecMode: CrowdSecAPIURL: CrowdSecAPIKey: WAFMode: RateLimitMode: ACLMode: CerberusEnabled:false}
|
||
|
||
2025/12/03 13:15:22 [31;1m/projects/Charon/backend/internal/cerberus/cerberus.go:51 [35;1mrecord not found
|
||
[0m[33m[0.106ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
cerberus_test.go:48: IsEnabled() -> false
|
||
|
||
2025/12/03 13:15:22 [31;1m/projects/Charon/backend/internal/cerberus/cerberus.go:51 [35;1mrecord not found
|
||
[0m[33m[0.091ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
--- PASS: TestCerberus_IsEnabled_Disabled (0.00s)
|
||
PASS
|
||
ok github.com/Wikid82/charon/backend/internal/cerberus 1.180s
|
||
=== RUN TestLoad
|
||
--- PASS: TestLoad (0.00s)
|
||
=== RUN TestLoad_Defaults
|
||
--- PASS: TestLoad_Defaults (0.00s)
|
||
=== RUN TestLoad_CharonPrefersOverCPM
|
||
--- PASS: TestLoad_CharonPrefersOverCPM (0.00s)
|
||
=== RUN TestLoad_Error
|
||
--- PASS: TestLoad_Error (0.00s)
|
||
PASS
|
||
ok github.com/Wikid82/charon/backend/internal/config 1.024s
|
||
=== RUN TestConnect
|
||
--- PASS: TestConnect (0.00s)
|
||
=== RUN TestConnect_Error
|
||
--- PASS: TestConnect_Error (0.00s)
|
||
PASS
|
||
ok github.com/Wikid82/charon/backend/internal/database 1.030s
|
||
? github.com/Wikid82/charon/backend/internal/logger [no test files]
|
||
? github.com/Wikid82/charon/backend/internal/metrics [no test files]
|
||
=== RUN TestDomain_BeforeCreate
|
||
--- PASS: TestDomain_BeforeCreate (0.01s)
|
||
=== RUN TestNotificationTemplate_BeforeCreate
|
||
--- PASS: TestNotificationTemplate_BeforeCreate (0.01s)
|
||
=== RUN TestUptimeHost_BeforeCreate
|
||
--- PASS: TestUptimeHost_BeforeCreate (0.03s)
|
||
=== RUN TestUptimeNotificationEvent_BeforeCreate
|
||
--- PASS: TestUptimeNotificationEvent_BeforeCreate (0.02s)
|
||
=== RUN TestNotification_BeforeCreate
|
||
--- PASS: TestNotification_BeforeCreate (0.00s)
|
||
=== RUN TestUser_SetPassword
|
||
--- PASS: TestUser_SetPassword (0.89s)
|
||
=== RUN TestUser_CheckPassword
|
||
--- PASS: TestUser_CheckPassword (2.34s)
|
||
=== RUN TestNotificationProvider_BeforeCreate
|
||
--- PASS: TestNotificationProvider_BeforeCreate (0.00s)
|
||
=== RUN TestUptimeMonitor_BeforeCreate
|
||
--- PASS: TestUptimeMonitor_BeforeCreate (0.00s)
|
||
PASS
|
||
ok github.com/Wikid82/charon/backend/internal/models 4.345s
|
||
=== RUN TestNewRouter
|
||
[GIN] 2025/12/03 - 13:15:24 | 200 | 17.688089ms | | GET "/"
|
||
--- PASS: TestNewRouter (0.02s)
|
||
PASS
|
||
ok github.com/Wikid82/charon/backend/internal/server 1.051s
|
||
=== RUN TestAccessListService_Create
|
||
=== RUN TestAccessListService_Create/create_whitelist_with_valid_IP_rules
|
||
=== RUN TestAccessListService_Create/create_geo_whitelist_with_valid_country_codes
|
||
=== RUN TestAccessListService_Create/create_local_network_only_ACL
|
||
=== RUN TestAccessListService_Create/fail_with_empty_name
|
||
=== RUN TestAccessListService_Create/fail_with_invalid_type
|
||
=== RUN TestAccessListService_Create/fail_with_invalid_IP_address
|
||
=== RUN TestAccessListService_Create/fail_geo-blocking_without_country_codes
|
||
=== RUN TestAccessListService_Create/fail_with_invalid_country_code
|
||
--- PASS: TestAccessListService_Create (0.02s)
|
||
--- PASS: TestAccessListService_Create/create_whitelist_with_valid_IP_rules (0.00s)
|
||
--- PASS: TestAccessListService_Create/create_geo_whitelist_with_valid_country_codes (0.00s)
|
||
--- PASS: TestAccessListService_Create/create_local_network_only_ACL (0.00s)
|
||
--- PASS: TestAccessListService_Create/fail_with_empty_name (0.00s)
|
||
--- PASS: TestAccessListService_Create/fail_with_invalid_type (0.00s)
|
||
--- PASS: TestAccessListService_Create/fail_with_invalid_IP_address (0.00s)
|
||
--- PASS: TestAccessListService_Create/fail_geo-blocking_without_country_codes (0.00s)
|
||
--- PASS: TestAccessListService_Create/fail_with_invalid_country_code (0.00s)
|
||
=== RUN TestAccessListService_GetByID
|
||
=== RUN TestAccessListService_GetByID/get_existing_ACL
|
||
=== RUN TestAccessListService_GetByID/get_non-existent_ACL
|
||
|
||
2025/12/03 13:15:26 [31;1m/projects/Charon/backend/internal/services/access_list_service.go:91 [35;1mrecord not found
|
||
[0m[33m[0.113ms] [34;1m[rows:0][0m SELECT * FROM `access_lists` WHERE `access_lists`.`id` = 99999 ORDER BY `access_lists`.`id` LIMIT 1
|
||
--- PASS: TestAccessListService_GetByID (0.01s)
|
||
--- PASS: TestAccessListService_GetByID/get_existing_ACL (0.00s)
|
||
--- PASS: TestAccessListService_GetByID/get_non-existent_ACL (0.00s)
|
||
=== RUN TestAccessListService_GetByUUID
|
||
=== RUN TestAccessListService_GetByUUID/get_existing_ACL_by_UUID
|
||
=== RUN TestAccessListService_GetByUUID/get_non-existent_ACL_by_UUID
|
||
|
||
2025/12/03 13:15:26 [31;1m/projects/Charon/backend/internal/services/access_list_service.go:103 [35;1mrecord not found
|
||
[0m[33m[0.114ms] [34;1m[rows:0][0m SELECT * FROM `access_lists` WHERE uuid = "non-existent-uuid" ORDER BY `access_lists`.`id` LIMIT 1
|
||
--- PASS: TestAccessListService_GetByUUID (0.02s)
|
||
--- PASS: TestAccessListService_GetByUUID/get_existing_ACL_by_UUID (0.00s)
|
||
--- PASS: TestAccessListService_GetByUUID/get_non-existent_ACL_by_UUID (0.00s)
|
||
=== RUN TestAccessListService_List
|
||
=== RUN TestAccessListService_List/list_all_ACLs
|
||
--- PASS: TestAccessListService_List (0.02s)
|
||
--- PASS: TestAccessListService_List/list_all_ACLs (0.00s)
|
||
=== RUN TestAccessListService_Update
|
||
=== RUN TestAccessListService_Update/update_successfully
|
||
=== RUN TestAccessListService_Update/fail_update_on_non-existent_ACL
|
||
|
||
2025/12/03 13:15:26 [31;1m/projects/Charon/backend/internal/services/access_list_service.go:91 [35;1mrecord not found
|
||
[0m[33m[0.108ms] [34;1m[rows:0][0m SELECT * FROM `access_lists` WHERE `access_lists`.`id` = 99999 ORDER BY `access_lists`.`id` LIMIT 1
|
||
=== RUN TestAccessListService_Update/fail_update_with_invalid_data
|
||
--- PASS: TestAccessListService_Update (0.01s)
|
||
--- PASS: TestAccessListService_Update/update_successfully (0.00s)
|
||
--- PASS: TestAccessListService_Update/fail_update_on_non-existent_ACL (0.00s)
|
||
--- PASS: TestAccessListService_Update/fail_update_with_invalid_data (0.00s)
|
||
=== RUN TestAccessListService_Delete
|
||
=== RUN TestAccessListService_Delete/delete_successfully
|
||
|
||
2025/12/03 13:15:26 [31;1m/projects/Charon/backend/internal/services/access_list_service.go:91 [35;1mrecord not found
|
||
[0m[33m[0.075ms] [34;1m[rows:0][0m SELECT * FROM `access_lists` WHERE `access_lists`.`id` = 1 ORDER BY `access_lists`.`id` LIMIT 1
|
||
=== RUN TestAccessListService_Delete/fail_delete_non-existent_ACL
|
||
=== RUN TestAccessListService_Delete/fail_delete_ACL_in_use
|
||
--- PASS: TestAccessListService_Delete (0.02s)
|
||
--- PASS: TestAccessListService_Delete/delete_successfully (0.00s)
|
||
--- PASS: TestAccessListService_Delete/fail_delete_non-existent_ACL (0.00s)
|
||
--- PASS: TestAccessListService_Delete/fail_delete_ACL_in_use (0.00s)
|
||
=== RUN TestAccessListService_TestIP
|
||
=== RUN TestAccessListService_TestIP/whitelist_allows_matching_IP
|
||
=== RUN TestAccessListService_TestIP/whitelist_blocks_non-matching_IP
|
||
=== RUN TestAccessListService_TestIP/blacklist_blocks_matching_IP
|
||
=== RUN TestAccessListService_TestIP/blacklist_allows_non-matching_IP
|
||
=== RUN TestAccessListService_TestIP/local_network_only_allows_RFC1918
|
||
=== RUN TestAccessListService_TestIP/disabled_ACL_allows_all
|
||
=== RUN TestAccessListService_TestIP/fail_with_invalid_IP
|
||
--- PASS: TestAccessListService_TestIP (0.02s)
|
||
--- PASS: TestAccessListService_TestIP/whitelist_allows_matching_IP (0.00s)
|
||
--- PASS: TestAccessListService_TestIP/whitelist_blocks_non-matching_IP (0.00s)
|
||
--- PASS: TestAccessListService_TestIP/blacklist_blocks_matching_IP (0.00s)
|
||
--- PASS: TestAccessListService_TestIP/blacklist_allows_non-matching_IP (0.00s)
|
||
--- PASS: TestAccessListService_TestIP/local_network_only_allows_RFC1918 (0.00s)
|
||
--- PASS: TestAccessListService_TestIP/disabled_ACL_allows_all (0.00s)
|
||
--- PASS: TestAccessListService_TestIP/fail_with_invalid_IP (0.00s)
|
||
=== RUN TestAccessListService_GetTemplates
|
||
--- PASS: TestAccessListService_GetTemplates (0.01s)
|
||
=== RUN TestAccessListService_Validation
|
||
=== RUN TestAccessListService_Validation/validate_CIDR_formats
|
||
=== RUN TestAccessListService_Validation/validate_country_codes
|
||
=== RUN TestAccessListService_Validation/validate_types
|
||
--- PASS: TestAccessListService_Validation (0.01s)
|
||
--- PASS: TestAccessListService_Validation/validate_CIDR_formats (0.00s)
|
||
--- PASS: TestAccessListService_Validation/validate_country_codes (0.00s)
|
||
--- PASS: TestAccessListService_Validation/validate_types (0.00s)
|
||
=== RUN TestAuthService_Register
|
||
--- PASS: TestAuthService_Register (1.63s)
|
||
=== RUN TestAuthService_Login
|
||
--- PASS: TestAuthService_Login (5.45s)
|
||
=== RUN TestAuthService_ChangePassword
|
||
|
||
2025/12/03 13:15:37 [31;1m/projects/Charon/backend/internal/services/auth_service.go:113 [35;1mrecord not found
|
||
[0m[33m[0.254ms] [34;1m[rows:0][0m SELECT * FROM `users` WHERE `users`.`id` = 999 ORDER BY `users`.`id` LIMIT 1
|
||
--- PASS: TestAuthService_ChangePassword (4.47s)
|
||
=== RUN TestAuthService_ValidateToken
|
||
--- PASS: TestAuthService_ValidateToken (1.49s)
|
||
=== RUN TestAuthService_GetUserByID
|
||
|
||
2025/12/03 13:15:39 [31;1m/projects/Charon/backend/internal/services/auth_service.go:147 [35;1mrecord not found
|
||
[0m[33m[0.089ms] [34;1m[rows:0][0m SELECT * FROM `users` WHERE `users`.`id` = 999 ORDER BY `users`.`id` LIMIT 1
|
||
--- PASS: TestAuthService_GetUserByID (0.72s)
|
||
=== RUN TestBackupService_CreateAndList
|
||
--- PASS: TestBackupService_CreateAndList (0.00s)
|
||
=== RUN TestBackupService_Restore_ZipSlip
|
||
--- PASS: TestBackupService_Restore_ZipSlip (0.00s)
|
||
=== RUN TestBackupService_PathTraversal
|
||
--- PASS: TestBackupService_PathTraversal (0.00s)
|
||
=== RUN TestBackupService_RunScheduledBackup
|
||
time="2025-12-03T13:15:39Z" level=info msg="Starting scheduled backup"
|
||
time="2025-12-03T13:15:39Z" level=warning msg="Warning: could not backup caddy dir" error="lstat /tmp/TestBackupService_RunScheduledBackup2963269059/001/data/caddy: no such file or directory"
|
||
time="2025-12-03T13:15:39Z" level=info msg="Scheduled backup created" backup=backup_2025-12-03_13-15-39.zip
|
||
--- PASS: TestBackupService_RunScheduledBackup (0.00s)
|
||
=== RUN TestBackupService_CreateBackup_Errors
|
||
=== RUN TestBackupService_CreateBackup_Errors/missing_database_file
|
||
=== RUN TestBackupService_CreateBackup_Errors/cannot_create_backup_directory
|
||
--- PASS: TestBackupService_CreateBackup_Errors (0.00s)
|
||
--- PASS: TestBackupService_CreateBackup_Errors/missing_database_file (0.00s)
|
||
--- PASS: TestBackupService_CreateBackup_Errors/cannot_create_backup_directory (0.00s)
|
||
=== RUN TestBackupService_RestoreBackup_Errors
|
||
=== RUN TestBackupService_RestoreBackup_Errors/non-existent_backup
|
||
=== RUN TestBackupService_RestoreBackup_Errors/invalid_zip_file
|
||
--- PASS: TestBackupService_RestoreBackup_Errors (0.00s)
|
||
--- PASS: TestBackupService_RestoreBackup_Errors/non-existent_backup (0.00s)
|
||
--- PASS: TestBackupService_RestoreBackup_Errors/invalid_zip_file (0.00s)
|
||
=== RUN TestBackupService_ListBackups_EmptyDir
|
||
--- PASS: TestBackupService_ListBackups_EmptyDir (0.00s)
|
||
=== RUN TestBackupService_ListBackups_MissingDir
|
||
--- PASS: TestBackupService_ListBackups_MissingDir (0.00s)
|
||
=== RUN TestCertificateService_GetCertificateInfo
|
||
time="2025-12-03T13:15:39Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/cert-test721263006/certificates
|
||
|
||
2025/12/03 13:15:39 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:123 [35;1mrecord not found
|
||
[0m[33m[0.180ms] [34;1m[rows:0][0m SELECT * FROM `ssl_certificates` WHERE domains = "example.com" ORDER BY `ssl_certificates`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:39 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[3.263ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:15:39Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
time="2025-12-03T13:15:39Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/cert-test721263006/certificates
|
||
|
||
2025/12/03 13:15:39 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:123 [35;1mrecord not found
|
||
[0m[33m[0.084ms] [34;1m[rows:0][0m SELECT * FROM `ssl_certificates` WHERE domains = "expired.com" ORDER BY `ssl_certificates`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:39 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[0.040ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:15:39Z" level=info msg="CertificateService: disk sync complete" count=2
|
||
--- PASS: TestCertificateService_GetCertificateInfo (0.08s)
|
||
=== RUN TestCertificateService_UploadAndDelete
|
||
time="2025-12-03T13:15:40Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_UploadAndDelete2653241376/001/certificates
|
||
time="2025-12-03T13:15:40Z" level=info msg="CertificateService: cert directory does not exist" certRoot=/tmp/TestCertificateService_UploadAndDelete2653241376/001/certificates
|
||
time="2025-12-03T13:15:40Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
time="2025-12-03T13:15:40Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_UploadAndDelete2653241376/001/certificates
|
||
time="2025-12-03T13:15:40Z" level=info msg="CertificateService: cert directory does not exist" certRoot=/tmp/TestCertificateService_UploadAndDelete2653241376/001/certificates
|
||
time="2025-12-03T13:15:40Z" level=info msg="CertificateService: disk sync complete" count=0
|
||
--- PASS: TestCertificateService_UploadAndDelete (0.10s)
|
||
=== RUN TestCertificateService_Persistence
|
||
time="2025-12-03T13:15:40Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_Persistence857842639/001/certificates
|
||
|
||
2025/12/03 13:15:40 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:123 [35;1mrecord not found
|
||
[0m[33m[0.145ms] [34;1m[rows:0][0m SELECT * FROM `ssl_certificates` WHERE domains = "persist.example.com" ORDER BY `ssl_certificates`.`id` LIMIT 1
|
||
time="2025-12-03T13:15:40Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
time="2025-12-03T13:15:40Z" level=info msg="CertificateService: deleting ACME cert file" path=/tmp/TestCertificateService_Persistence857842639/001/certificates/acme-v02.api.letsencrypt.org-directory/persist.example.com/persist.example.com.crt
|
||
time="2025-12-03T13:15:40Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_Persistence857842639/001/certificates
|
||
time="2025-12-03T13:15:40Z" level=info msg="CertificateService: disk sync complete" count=0
|
||
|
||
2025/12/03 13:15:40 [31;1m/projects/Charon/backend/internal/services/certificate_service_test.go:267 [35;1mrecord not found
|
||
[0m[33m[0.128ms] [34;1m[rows:0][0m SELECT * FROM `ssl_certificates` WHERE (domains = "persist.example.com" AND provider = "letsencrypt") AND `ssl_certificates`.`id` = 1 ORDER BY `ssl_certificates`.`id` LIMIT 1
|
||
--- PASS: TestCertificateService_Persistence (0.03s)
|
||
=== RUN TestCertificateService_UploadCertificate_Errors
|
||
=== RUN TestCertificateService_UploadCertificate_Errors/invalid_PEM_format
|
||
=== RUN TestCertificateService_UploadCertificate_Errors/empty_certificate
|
||
=== RUN TestCertificateService_UploadCertificate_Errors/certificate_without_key_allowed
|
||
=== RUN TestCertificateService_UploadCertificate_Errors/valid_certificate_with_name
|
||
=== RUN TestCertificateService_UploadCertificate_Errors/expired_certificate_can_be_uploaded
|
||
--- PASS: TestCertificateService_UploadCertificate_Errors (0.37s)
|
||
--- PASS: TestCertificateService_UploadCertificate_Errors/invalid_PEM_format (0.00s)
|
||
--- PASS: TestCertificateService_UploadCertificate_Errors/empty_certificate (0.00s)
|
||
--- PASS: TestCertificateService_UploadCertificate_Errors/certificate_without_key_allowed (0.19s)
|
||
--- PASS: TestCertificateService_UploadCertificate_Errors/valid_certificate_with_name (0.06s)
|
||
--- PASS: TestCertificateService_UploadCertificate_Errors/expired_certificate_can_be_uploaded (0.11s)
|
||
=== RUN TestCertificateService_ListCertificates_EdgeCases
|
||
=== RUN TestCertificateService_ListCertificates_EdgeCases/empty_certificates_directory
|
||
time="2025-12-03T13:15:40Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_ListCertificates_EdgeCasesempty_certific2853712708/001/certificates
|
||
time="2025-12-03T13:15:40Z" level=info msg="CertificateService: cert directory does not exist" certRoot=/tmp/TestCertificateService_ListCertificates_EdgeCasesempty_certific2853712708/001/certificates
|
||
|
||
2025/12/03 13:15:40 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[3.244ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:15:40Z" level=info msg="CertificateService: disk sync complete" count=0
|
||
=== RUN TestCertificateService_ListCertificates_EdgeCases/certificates_directory_does_not_exist
|
||
time="2025-12-03T13:15:40Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_ListCertificates_EdgeCasescertificates_d1606804645/001/does-not-exist/certificates
|
||
time="2025-12-03T13:15:40Z" level=info msg="CertificateService: cert directory does not exist" certRoot=/tmp/TestCertificateService_ListCertificates_EdgeCasescertificates_d1606804645/001/does-not-exist/certificates
|
||
|
||
2025/12/03 13:15:40 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[2.932ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:15:40Z" level=info msg="CertificateService: disk sync complete" count=0
|
||
=== RUN TestCertificateService_ListCertificates_EdgeCases/invalid_certificate_files_are_skipped
|
||
time="2025-12-03T13:15:40Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_ListCertificates_EdgeCasesinvalid_certif3571228327/001/certificates
|
||
|
||
2025/12/03 13:15:40 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[4.289ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:15:40Z" level=info msg="CertificateService: disk sync complete" count=0
|
||
=== RUN TestCertificateService_ListCertificates_EdgeCases/multiple_certificates_from_different_providers
|
||
time="2025-12-03T13:15:40Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_ListCertificates_EdgeCasesmultiple_certi305444238/001/certificates
|
||
|
||
2025/12/03 13:15:40 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:123 [35;1mrecord not found
|
||
[0m[33m[0.149ms] [34;1m[rows:0][0m SELECT * FROM `ssl_certificates` WHERE domains = "le.example.com" ORDER BY `ssl_certificates`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:40 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[3.221ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:15:40Z" level=info msg="CertificateService: disk sync complete" count=2
|
||
--- PASS: TestCertificateService_ListCertificates_EdgeCases (0.31s)
|
||
--- PASS: TestCertificateService_ListCertificates_EdgeCases/empty_certificates_directory (0.01s)
|
||
--- PASS: TestCertificateService_ListCertificates_EdgeCases/certificates_directory_does_not_exist (0.01s)
|
||
--- PASS: TestCertificateService_ListCertificates_EdgeCases/invalid_certificate_files_are_skipped (0.01s)
|
||
--- PASS: TestCertificateService_ListCertificates_EdgeCases/multiple_certificates_from_different_providers (0.29s)
|
||
=== RUN TestCertificateService_DeleteCertificate_Errors
|
||
=== RUN TestCertificateService_DeleteCertificate_Errors/delete_non-existent_certificate
|
||
|
||
2025/12/03 13:15:40 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:410 [35;1mrecord not found
|
||
[0m[33m[0.059ms] [34;1m[rows:0][0m SELECT * FROM `ssl_certificates` WHERE `ssl_certificates`.`id` = 99999 ORDER BY `ssl_certificates`.`id` LIMIT 1
|
||
=== RUN TestCertificateService_DeleteCertificate_Errors/delete_certificate_when_file_already_removed
|
||
|
||
2025/12/03 13:15:40 [31;1m/projects/Charon/backend/internal/services/certificate_service_test.go:462 [35;1mrecord not found
|
||
[0m[33m[0.106ms] [34;1m[rows:0][0m SELECT * FROM `ssl_certificates` WHERE id = 1 ORDER BY `ssl_certificates`.`id` LIMIT 1
|
||
--- PASS: TestCertificateService_DeleteCertificate_Errors (0.14s)
|
||
--- PASS: TestCertificateService_DeleteCertificate_Errors/delete_non-existent_certificate (0.00s)
|
||
--- PASS: TestCertificateService_DeleteCertificate_Errors/delete_certificate_when_file_already_removed (0.13s)
|
||
=== RUN TestCertificateService_StagingCertificates
|
||
=== RUN TestCertificateService_StagingCertificates/staging_certificate_detected_by_path
|
||
time="2025-12-03T13:15:41Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_StagingCertificatesstaging_certificate_d1402286016/001/certificates
|
||
|
||
2025/12/03 13:15:41 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:123 [35;1mrecord not found
|
||
[0m[33m[0.192ms] [34;1m[rows:0][0m SELECT * FROM `ssl_certificates` WHERE domains = "staging.example.com" ORDER BY `ssl_certificates`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:41 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[2.967ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:15:41Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
=== RUN TestCertificateService_StagingCertificates/production_cert_preferred_over_staging
|
||
time="2025-12-03T13:15:41Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_StagingCertificatesproduction_cert_prefe1567936804/001/certificates
|
||
|
||
2025/12/03 13:15:41 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:123 [35;1mrecord not found
|
||
[0m[33m[0.173ms] [34;1m[rows:0][0m SELECT * FROM `ssl_certificates` WHERE domains = "both.example.com" ORDER BY `ssl_certificates`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:41 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[3.681ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:15:41Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
=== RUN TestCertificateService_StagingCertificates/upgrade_from_staging_to_production
|
||
time="2025-12-03T13:15:41Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_StagingCertificatesupgrade_from_staging_3104714088/001/certificates
|
||
|
||
2025/12/03 13:15:41 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:123 [35;1mrecord not found
|
||
[0m[33m[0.216ms] [34;1m[rows:0][0m SELECT * FROM `ssl_certificates` WHERE domains = "upgrade.example.com" ORDER BY `ssl_certificates`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:41 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[3.695ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:15:41Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
time="2025-12-03T13:15:41Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_StagingCertificatesupgrade_from_staging_3104714088/001/certificates
|
||
|
||
2025/12/03 13:15:41 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[0.030ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:15:41Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
--- PASS: TestCertificateService_StagingCertificates (0.34s)
|
||
--- PASS: TestCertificateService_StagingCertificates/staging_certificate_detected_by_path (0.11s)
|
||
--- PASS: TestCertificateService_StagingCertificates/production_cert_preferred_over_staging (0.09s)
|
||
--- PASS: TestCertificateService_StagingCertificates/upgrade_from_staging_to_production (0.14s)
|
||
=== RUN TestCertificateService_ExpiringStatus
|
||
=== RUN TestCertificateService_ExpiringStatus/certificate_expiring_within_30_days
|
||
time="2025-12-03T13:15:41Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_ExpiringStatuscertificate_expiring_withi1120025178/001/certificates
|
||
|
||
2025/12/03 13:15:41 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:123 [35;1mrecord not found
|
||
[0m[33m[0.170ms] [34;1m[rows:0][0m SELECT * FROM `ssl_certificates` WHERE domains = "expiring.example.com" ORDER BY `ssl_certificates`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:41 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[3.264ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:15:41Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
=== RUN TestCertificateService_ExpiringStatus/certificate_valid_for_more_than_30_days
|
||
time="2025-12-03T13:15:41Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_ExpiringStatuscertificate_valid_for_more3194654657/001/certificates
|
||
|
||
2025/12/03 13:15:41 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:123 [35;1mrecord not found
|
||
[0m[33m[0.169ms] [34;1m[rows:0][0m SELECT * FROM `ssl_certificates` WHERE domains = "valid-long.example.com" ORDER BY `ssl_certificates`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:41 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[2.702ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:15:41Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
=== RUN TestCertificateService_ExpiringStatus/staging_cert_always_untrusted_even_if_expiring
|
||
time="2025-12-03T13:15:41Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_ExpiringStatusstaging_cert_always_untrus15958542/001/certificates
|
||
|
||
2025/12/03 13:15:41 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:123 [35;1mrecord not found
|
||
[0m[33m[0.185ms] [34;1m[rows:0][0m SELECT * FROM `ssl_certificates` WHERE domains = "staging-expiring.example.com" ORDER BY `ssl_certificates`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:41 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[2.827ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:15:41Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
--- PASS: TestCertificateService_ExpiringStatus (0.34s)
|
||
--- PASS: TestCertificateService_ExpiringStatus/certificate_expiring_within_30_days (0.08s)
|
||
--- PASS: TestCertificateService_ExpiringStatus/certificate_valid_for_more_than_30_days (0.02s)
|
||
--- PASS: TestCertificateService_ExpiringStatus/staging_cert_always_untrusted_even_if_expiring (0.24s)
|
||
=== RUN TestCertificateService_StaleCertCleanup
|
||
=== RUN TestCertificateService_StaleCertCleanup/stale_DB_entries_removed_when_file_deleted
|
||
time="2025-12-03T13:15:41Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_StaleCertCleanupstale_DB_entries_removed1565458399/001/certificates
|
||
|
||
2025/12/03 13:15:41 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:123 [35;1mrecord not found
|
||
[0m[33m[0.175ms] [34;1m[rows:0][0m SELECT * FROM `ssl_certificates` WHERE domains = "stale.example.com" ORDER BY `ssl_certificates`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:41 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[3.080ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:15:41Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
time="2025-12-03T13:15:41Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_StaleCertCleanupstale_DB_entries_removed1565458399/001/certificates
|
||
time="2025-12-03T13:15:41Z" level=info msg="CertificateService: removed stale DB cert" domain=stale.example.com
|
||
|
||
2025/12/03 13:15:41 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[0.021ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:15:41Z" level=info msg="CertificateService: disk sync complete" count=0
|
||
--- PASS: TestCertificateService_StaleCertCleanup (0.10s)
|
||
--- PASS: TestCertificateService_StaleCertCleanup/stale_DB_entries_removed_when_file_deleted (0.10s)
|
||
=== RUN TestCertificateService_CertificateWithSANs
|
||
=== RUN TestCertificateService_CertificateWithSANs/certificate_with_SANs_uses_joined_domains
|
||
--- PASS: TestCertificateService_CertificateWithSANs (0.10s)
|
||
--- PASS: TestCertificateService_CertificateWithSANs/certificate_with_SANs_uses_joined_domains (0.10s)
|
||
=== RUN TestCertificateService_CacheBehavior
|
||
=== RUN TestCertificateService_CacheBehavior/cache_returns_consistent_results
|
||
time="2025-12-03T13:15:42Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_CacheBehaviorcache_returns_consistent_re3736672397/001/certificates
|
||
time="2025-12-03T13:15:42Z" level=info msg="CertificateService: cert directory does not exist" certRoot=/tmp/TestCertificateService_CacheBehaviorcache_returns_consistent_re3736672397/001/certificates
|
||
|
||
2025/12/03 13:15:42 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[3.500ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:15:42Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
=== RUN TestCertificateService_CacheBehavior/invalidate_cache_forces_resync
|
||
time="2025-12-03T13:15:42Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_CacheBehaviorinvalidate_cache_forces_res2268512558/001/certificates
|
||
time="2025-12-03T13:15:42Z" level=info msg="CertificateService: cert directory does not exist" certRoot=/tmp/TestCertificateService_CacheBehaviorinvalidate_cache_forces_res2268512558/001/certificates
|
||
|
||
2025/12/03 13:15:42 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[3.048ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:15:42Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
time="2025-12-03T13:15:42Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_CacheBehaviorinvalidate_cache_forces_res2268512558/001/certificates
|
||
time="2025-12-03T13:15:42Z" level=info msg="CertificateService: cert directory does not exist" certRoot=/tmp/TestCertificateService_CacheBehaviorinvalidate_cache_forces_res2268512558/001/certificates
|
||
|
||
2025/12/03 13:15:42 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[0.025ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:15:42Z" level=info msg="CertificateService: disk sync complete" count=2
|
||
=== RUN TestCertificateService_CacheBehavior/refreshCacheFromDB_used_when_directory_nonexistent
|
||
time="2025-12-03T13:15:42Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_CacheBehaviorrefreshCacheFromDB_used_whe3961768134/001/nonexistent/certificates
|
||
time="2025-12-03T13:15:42Z" level=info msg="CertificateService: cert directory does not exist" certRoot=/tmp/TestCertificateService_CacheBehaviorrefreshCacheFromDB_used_whe3961768134/001/nonexistent/certificates
|
||
|
||
2025/12/03 13:15:42 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[3.000ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:15:42Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
--- PASS: TestCertificateService_CacheBehavior (0.34s)
|
||
--- PASS: TestCertificateService_CacheBehavior/cache_returns_consistent_results (0.29s)
|
||
--- PASS: TestCertificateService_CacheBehavior/invalidate_cache_forces_resync (0.04s)
|
||
--- PASS: TestCertificateService_CacheBehavior/refreshCacheFromDB_used_when_directory_nonexistent (0.01s)
|
||
=== RUN TestDockerService_New
|
||
--- PASS: TestDockerService_New (0.00s)
|
||
=== RUN TestDockerService_ListContainers
|
||
--- PASS: TestDockerService_ListContainers (0.01s)
|
||
=== RUN TestLogService
|
||
--- PASS: TestLogService (0.00s)
|
||
=== RUN TestNotificationService_Create
|
||
--- PASS: TestNotificationService_Create (0.00s)
|
||
=== RUN TestNotificationService_List
|
||
--- PASS: TestNotificationService_List (0.00s)
|
||
=== RUN TestNotificationService_MarkAsRead
|
||
--- PASS: TestNotificationService_MarkAsRead (0.01s)
|
||
=== RUN TestNotificationService_MarkAllAsRead
|
||
--- PASS: TestNotificationService_MarkAllAsRead (0.01s)
|
||
=== RUN TestNotificationService_Providers
|
||
--- PASS: TestNotificationService_Providers (0.01s)
|
||
=== RUN TestNotificationService_TestProvider_Webhook
|
||
--- PASS: TestNotificationService_TestProvider_Webhook (0.01s)
|
||
=== RUN TestNotificationService_SendExternal
|
||
--- PASS: TestNotificationService_SendExternal (0.01s)
|
||
=== RUN TestNotificationService_SendExternal_MinimalVsDetailedTemplates
|
||
--- PASS: TestNotificationService_SendExternal_MinimalVsDetailedTemplates (0.01s)
|
||
=== RUN TestNotificationService_SendExternal_Filtered
|
||
--- PASS: TestNotificationService_SendExternal_Filtered (0.11s)
|
||
=== RUN TestNotificationService_SendExternal_Shoutrrr
|
||
--- PASS: TestNotificationService_SendExternal_Shoutrrr (0.11s)
|
||
=== RUN TestNormalizeURL
|
||
=== RUN TestNormalizeURL/Discord_HTTPS
|
||
=== RUN TestNormalizeURL/Discord_HTTPS_with_app
|
||
=== RUN TestNormalizeURL/Discord_Shoutrrr
|
||
=== RUN TestNormalizeURL/Other_Service
|
||
--- PASS: TestNormalizeURL (0.00s)
|
||
--- PASS: TestNormalizeURL/Discord_HTTPS (0.00s)
|
||
--- PASS: TestNormalizeURL/Discord_HTTPS_with_app (0.00s)
|
||
--- PASS: TestNormalizeURL/Discord_Shoutrrr (0.00s)
|
||
--- PASS: TestNormalizeURL/Other_Service (0.00s)
|
||
=== RUN TestNotificationService_SendCustomWebhook_Errors
|
||
=== RUN TestNotificationService_SendCustomWebhook_Errors/invalid_URL
|
||
=== RUN TestNotificationService_SendCustomWebhook_Errors/unreachable_host
|
||
=== RUN TestNotificationService_SendCustomWebhook_Errors/server_returns_error
|
||
=== RUN TestNotificationService_SendCustomWebhook_Errors/valid_custom_payload_template
|
||
=== RUN TestNotificationService_SendCustomWebhook_Errors/default_payload_without_template
|
||
--- PASS: TestNotificationService_SendCustomWebhook_Errors (0.01s)
|
||
--- PASS: TestNotificationService_SendCustomWebhook_Errors/invalid_URL (0.00s)
|
||
--- PASS: TestNotificationService_SendCustomWebhook_Errors/unreachable_host (0.00s)
|
||
--- PASS: TestNotificationService_SendCustomWebhook_Errors/server_returns_error (0.00s)
|
||
--- PASS: TestNotificationService_SendCustomWebhook_Errors/valid_custom_payload_template (0.00s)
|
||
--- PASS: TestNotificationService_SendCustomWebhook_Errors/default_payload_without_template (0.00s)
|
||
=== RUN TestNotificationService_SendCustomWebhook_PropagatesRequestID
|
||
--- PASS: TestNotificationService_SendCustomWebhook_PropagatesRequestID (0.01s)
|
||
=== RUN TestNotificationService_TestProvider_Errors
|
||
=== RUN TestNotificationService_TestProvider_Errors/unsupported_provider_type
|
||
=== RUN TestNotificationService_TestProvider_Errors/webhook_with_invalid_URL
|
||
=== RUN TestNotificationService_TestProvider_Errors/discord_with_invalid_URL_format
|
||
=== RUN TestNotificationService_TestProvider_Errors/slack_with_unreachable_webhook
|
||
=== RUN TestNotificationService_TestProvider_Errors/webhook_success
|
||
--- PASS: TestNotificationService_TestProvider_Errors (0.01s)
|
||
--- PASS: TestNotificationService_TestProvider_Errors/unsupported_provider_type (0.00s)
|
||
--- PASS: TestNotificationService_TestProvider_Errors/webhook_with_invalid_URL (0.00s)
|
||
--- PASS: TestNotificationService_TestProvider_Errors/discord_with_invalid_URL_format (0.00s)
|
||
--- PASS: TestNotificationService_TestProvider_Errors/slack_with_unreachable_webhook (0.00s)
|
||
--- PASS: TestNotificationService_TestProvider_Errors/webhook_success (0.00s)
|
||
=== RUN TestValidateWebhookURL_PrivateIP
|
||
--- PASS: TestValidateWebhookURL_PrivateIP (0.00s)
|
||
=== RUN TestNotificationService_SendExternal_EdgeCases
|
||
=== RUN TestNotificationService_SendExternal_EdgeCases/no_enabled_providers
|
||
=== RUN TestNotificationService_SendExternal_EdgeCases/provider_filtered_by_category
|
||
time="2025-12-03T13:15:42Z" level=error msg="Failed to send notification" error="failed to send discord notification: response status code 400 Bad Request" provider="Test Discord"
|
||
=== RUN TestNotificationService_SendExternal_EdgeCases/custom_data_passed_to_webhook
|
||
--- PASS: TestNotificationService_SendExternal_EdgeCases (0.22s)
|
||
--- PASS: TestNotificationService_SendExternal_EdgeCases/no_enabled_providers (0.05s)
|
||
--- PASS: TestNotificationService_SendExternal_EdgeCases/provider_filtered_by_category (0.06s)
|
||
--- PASS: TestNotificationService_SendExternal_EdgeCases/custom_data_passed_to_webhook (0.11s)
|
||
=== RUN TestNotificationService_RenderTemplate
|
||
--- PASS: TestNotificationService_RenderTemplate (0.00s)
|
||
=== RUN TestNotificationService_CreateProvider_Validation
|
||
=== RUN TestNotificationService_CreateProvider_Validation/creates_provider_with_defaults
|
||
=== RUN TestNotificationService_CreateProvider_Validation/updates_existing_provider
|
||
=== RUN TestNotificationService_CreateProvider_Validation/deletes_non-existent_provider
|
||
--- PASS: TestNotificationService_CreateProvider_Validation (0.01s)
|
||
--- PASS: TestNotificationService_CreateProvider_Validation/creates_provider_with_defaults (0.00s)
|
||
--- PASS: TestNotificationService_CreateProvider_Validation/updates_existing_provider (0.00s)
|
||
--- PASS: TestNotificationService_CreateProvider_Validation/deletes_non-existent_provider (0.00s)
|
||
=== RUN TestNotificationService_CreateProvider_InvalidCustomTemplate
|
||
=== RUN TestNotificationService_CreateProvider_InvalidCustomTemplate/invalid_custom_template_on_create
|
||
=== RUN TestNotificationService_CreateProvider_InvalidCustomTemplate/invalid_custom_template_on_update
|
||
--- PASS: TestNotificationService_CreateProvider_InvalidCustomTemplate (0.00s)
|
||
--- PASS: TestNotificationService_CreateProvider_InvalidCustomTemplate/invalid_custom_template_on_create (0.00s)
|
||
--- PASS: TestNotificationService_CreateProvider_InvalidCustomTemplate/invalid_custom_template_on_update (0.00s)
|
||
=== RUN TestProxyHostService_ValidateUniqueDomain
|
||
=== RUN TestProxyHostService_ValidateUniqueDomain/New_unique_domain
|
||
=== RUN TestProxyHostService_ValidateUniqueDomain/Duplicate_domain
|
||
=== RUN TestProxyHostService_ValidateUniqueDomain/Same_domain_but_excluded_ID_(update_self)
|
||
--- PASS: TestProxyHostService_ValidateUniqueDomain (0.01s)
|
||
--- PASS: TestProxyHostService_ValidateUniqueDomain/New_unique_domain (0.00s)
|
||
--- PASS: TestProxyHostService_ValidateUniqueDomain/Duplicate_domain (0.00s)
|
||
--- PASS: TestProxyHostService_ValidateUniqueDomain/Same_domain_but_excluded_ID_(update_self) (0.00s)
|
||
=== RUN TestProxyHostService_CRUD
|
||
|
||
2025/12/03 13:15:42 [31;1m/projects/Charon/backend/internal/services/proxyhost_service.go:102 [35;1mrecord not found
|
||
[0m[33m[0.070ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts` WHERE `proxy_hosts`.`id` = 1 ORDER BY `proxy_hosts`.`id` LIMIT 1
|
||
--- PASS: TestProxyHostService_CRUD (0.01s)
|
||
=== RUN TestProxyHostService_TestConnection
|
||
--- PASS: TestProxyHostService_TestConnection (0.01s)
|
||
=== RUN TestRemoteServerService_ValidateUniqueServer
|
||
--- PASS: TestRemoteServerService_ValidateUniqueServer (0.00s)
|
||
=== RUN TestRemoteServerService_CRUD
|
||
|
||
2025/12/03 13:15:42 [31;1m/projects/Charon/backend/internal/services/remoteserver_service.go:68 [35;1mrecord not found
|
||
[0m[33m[0.066ms] [34;1m[rows:0][0m SELECT * FROM `remote_servers` WHERE `remote_servers`.`id` = 2 ORDER BY `remote_servers`.`id` LIMIT 1
|
||
--- PASS: TestRemoteServerService_CRUD (0.01s)
|
||
=== RUN TestSecurityService_Upsert_ValidateAdminWhitelist
|
||
|
||
2025/12/03 13:15:42 [31;1m/projects/Charon/backend/internal/services/security_service.go:73 [35;1mrecord not found
|
||
[0m[33m[0.078ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
--- PASS: TestSecurityService_Upsert_ValidateAdminWhitelist (0.01s)
|
||
=== RUN TestSecurityService_BreakGlassTokenLifecycle
|
||
|
||
2025/12/03 13:15:42 [31;1m/projects/Charon/backend/internal/services/security_service.go:73 [35;1mrecord not found
|
||
[0m[33m[0.108ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
--- PASS: TestSecurityService_BreakGlassTokenLifecycle (2.30s)
|
||
=== RUN TestSecurityService_LogDecisionAndList
|
||
--- PASS: TestSecurityService_LogDecisionAndList (0.01s)
|
||
=== RUN TestSecurityService_UpsertRuleSet
|
||
|
||
2025/12/03 13:15:45 [31;1m/projects/Charon/backend/internal/services/security_service.go:204 [35;1mrecord not found
|
||
[0m[33m[0.092ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets` WHERE name = "owasp-crs" ORDER BY `security_rule_sets`.`id` LIMIT 1
|
||
--- PASS: TestSecurityService_UpsertRuleSet (0.01s)
|
||
=== RUN TestSecurityService_UpsertRuleSet_ContentTooLarge
|
||
--- PASS: TestSecurityService_UpsertRuleSet_ContentTooLarge (0.02s)
|
||
=== RUN TestSecurityService_DeleteRuleSet
|
||
|
||
2025/12/03 13:15:45 [31;1m/projects/Charon/backend/internal/services/security_service.go:204 [35;1mrecord not found
|
||
[0m[33m[0.088ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets` WHERE name = "owasp-crs" ORDER BY `security_rule_sets`.`id` LIMIT 1
|
||
--- PASS: TestSecurityService_DeleteRuleSet (0.01s)
|
||
=== RUN TestSecurityService_Upsert_RejectExternalMode
|
||
|
||
2025/12/03 13:15:45 [31;1m/projects/Charon/backend/internal/services/security_service.go:73 [35;1mrecord not found
|
||
[0m[33m[0.154ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
--- PASS: TestSecurityService_Upsert_RejectExternalMode (0.01s)
|
||
=== RUN TestSecurityService_GenerateBreakGlassToken_NewConfig
|
||
|
||
2025/12/03 13:15:45 [31;1m/projects/Charon/backend/internal/services/security_service.go:113 [35;1mrecord not found
|
||
[0m[33m[0.318ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "newconfig" ORDER BY `security_configs`.`id` LIMIT 1
|
||
--- PASS: TestSecurityService_GenerateBreakGlassToken_NewConfig (1.53s)
|
||
=== RUN TestSecurityService_GenerateBreakGlassToken_UpdateExisting
|
||
|
||
2025/12/03 13:15:46 [31;1m/projects/Charon/backend/internal/services/security_service.go:73 [35;1mrecord not found
|
||
[0m[33m[0.070ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
--- PASS: TestSecurityService_GenerateBreakGlassToken_UpdateExisting (3.01s)
|
||
=== RUN TestSecurityService_VerifyBreakGlassToken_NoConfig
|
||
|
||
2025/12/03 13:15:49 [31;1m/projects/Charon/backend/internal/services/security_service.go:134 [35;1mrecord not found
|
||
[0m[33m[0.095ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "nonexistent" ORDER BY `security_configs`.`id` LIMIT 1
|
||
--- PASS: TestSecurityService_VerifyBreakGlassToken_NoConfig (0.01s)
|
||
=== RUN TestSecurityService_VerifyBreakGlassToken_NoHash
|
||
|
||
2025/12/03 13:15:49 [31;1m/projects/Charon/backend/internal/services/security_service.go:73 [35;1mrecord not found
|
||
[0m[33m[0.121ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
--- PASS: TestSecurityService_VerifyBreakGlassToken_NoHash (0.01s)
|
||
=== RUN TestSecurityService_VerifyBreakGlassToken_WrongToken
|
||
|
||
2025/12/03 13:15:50 [31;1m/projects/Charon/backend/internal/services/security_service.go:113 [35;1mrecord not found
|
||
[0m[33m[0.272ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
--- PASS: TestSecurityService_VerifyBreakGlassToken_WrongToken (4.43s)
|
||
=== RUN TestSecurityService_Get_NotFound
|
||
|
||
2025/12/03 13:15:54 [31;1m/projects/Charon/backend/internal/services/security_service.go:37 [35;1mrecord not found
|
||
[0m[33m[0.087ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` ORDER BY `security_configs`.`id` LIMIT 1
|
||
--- PASS: TestSecurityService_Get_NotFound (0.01s)
|
||
=== RUN TestSecurityService_Upsert_PreserveBreakGlassHash
|
||
|
||
2025/12/03 13:15:54 [31;1m/projects/Charon/backend/internal/services/security_service.go:113 [35;1mrecord not found
|
||
[0m[33m[0.236ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
--- PASS: TestSecurityService_Upsert_PreserveBreakGlassHash (1.48s)
|
||
=== RUN TestUpdateService_CheckForUpdates
|
||
--- PASS: TestUpdateService_CheckForUpdates (0.00s)
|
||
=== RUN TestUptimeService_CheckAll
|
||
|
||
2025/12/03 13:15:55 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.134ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE proxy_host_id = 1 ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:55 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.121ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "127.0.0.1" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:15:55Z" level=info msg="Created UptimeHost" host=127.0.0.1 host_id=a160bfc1-6c03-4c8b-9b8f-aaeed686c8a0
|
||
|
||
2025/12/03 13:15:55 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.118ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE proxy_host_id = 2 ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
time="2025-12-03T13:15:56Z" level=info msg="Host status changed" host_ip=127.0.0.1 host_name="127.0.0.1:42955" message="dial tcp 127.0.0.1:40935: connect: connection refused" new=down old=up
|
||
time="2025-12-03T13:15:56Z" level=info msg="Sent consolidated DOWN notification" host_name="127.0.0.1:42955" service_count=1
|
||
--- PASS: TestUptimeService_CheckAll (1.77s)
|
||
=== RUN TestUptimeService_ListMonitors
|
||
--- PASS: TestUptimeService_ListMonitors (0.03s)
|
||
=== RUN TestUptimeService_GetMonitorByID
|
||
=== RUN TestUptimeService_GetMonitorByID/get_existing_monitor
|
||
=== RUN TestUptimeService_GetMonitorByID/get_non-existent_monitor
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:819 [35;1mrecord not found
|
||
[0m[33m[0.102ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE id = "non-existent" ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
--- PASS: TestUptimeService_GetMonitorByID (0.03s)
|
||
--- PASS: TestUptimeService_GetMonitorByID/get_existing_monitor (0.00s)
|
||
--- PASS: TestUptimeService_GetMonitorByID/get_non-existent_monitor (0.00s)
|
||
=== RUN TestUptimeService_GetMonitorHistory
|
||
--- PASS: TestUptimeService_GetMonitorHistory (0.03s)
|
||
=== RUN TestUptimeService_SyncMonitors_Errors
|
||
=== RUN TestUptimeService_SyncMonitors_Errors/database_error_during_proxy_host_fetch
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:104 [35;1msql: database is closed
|
||
[0m[33m[0.062ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
=== RUN TestUptimeService_SyncMonitors_Errors/creates_monitors_for_new_hosts
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.120ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE proxy_host_id = 1 ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.075ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:15:57Z" level=info msg="Created UptimeHost" host= host_id=8a017bc4-eccf-45f9-b15d-235a3f0c76ff
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.110ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE proxy_host_id = 2 ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
=== RUN TestUptimeService_SyncMonitors_Errors/orphaned_monitors_persist_after_host_deletion
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.144ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE proxy_host_id = 1 ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.105ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:15:57Z" level=info msg="Created UptimeHost" host= host_id=ac552046-dc91-4946-a6e4-b29b9748a783
|
||
--- PASS: TestUptimeService_SyncMonitors_Errors (0.09s)
|
||
--- PASS: TestUptimeService_SyncMonitors_Errors/database_error_during_proxy_host_fetch (0.03s)
|
||
--- PASS: TestUptimeService_SyncMonitors_Errors/creates_monitors_for_new_hosts (0.03s)
|
||
--- PASS: TestUptimeService_SyncMonitors_Errors/orphaned_monitors_persist_after_host_deletion (0.03s)
|
||
=== RUN TestUptimeService_SyncMonitors_NameSync
|
||
=== RUN TestUptimeService_SyncMonitors_NameSync/syncs_name_from_proxy_host_when_changed
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.112ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE proxy_host_id = 1 ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.090ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:15:57Z" level=info msg="Created UptimeHost" host= host_id=9cb6519c-0096-4745-9288-6cb4b0c654b7
|
||
=== RUN TestUptimeService_SyncMonitors_NameSync/uses_domain_name_when_proxy_host_name_is_empty
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.627ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE proxy_host_id = 1 ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.154ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:15:57Z" level=info msg="Created UptimeHost" host= host_id=6a384795-db72-4ad8-ade5-d7d385157abd
|
||
=== RUN TestUptimeService_SyncMonitors_NameSync/updates_monitor_name_when_host_name_becomes_empty
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.116ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE proxy_host_id = 1 ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.090ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:15:57Z" level=info msg="Created UptimeHost" host= host_id=97e60d79-33ee-4bda-9e95-b4f3763970c8
|
||
--- PASS: TestUptimeService_SyncMonitors_NameSync (0.09s)
|
||
--- PASS: TestUptimeService_SyncMonitors_NameSync/syncs_name_from_proxy_host_when_changed (0.03s)
|
||
--- PASS: TestUptimeService_SyncMonitors_NameSync/uses_domain_name_when_proxy_host_name_is_empty (0.03s)
|
||
--- PASS: TestUptimeService_SyncMonitors_NameSync/updates_monitor_name_when_host_name_becomes_empty (0.03s)
|
||
=== RUN TestUptimeService_SyncMonitors_TCPMigration
|
||
=== RUN TestUptimeService_SyncMonitors_TCPMigration/migrates_TCP_monitor_to_HTTP_for_public_URL
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.082ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "backend.local" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:15:57Z" level=info msg="Created UptimeHost" host=backend.local host_id=6c0c2e33-c51c-4e02-98d6-9775aaf15685
|
||
time="2025-12-03T13:15:57Z" level=info msg="Migrated monitor for host 1 to check public URL: http://public.com" host_id=1
|
||
=== RUN TestUptimeService_SyncMonitors_TCPMigration/does_not_migrate_TCP_monitor_with_custom_URL
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.083ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "backend.local" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:15:57Z" level=info msg="Created UptimeHost" host=backend.local host_id=4cfe1fec-cfbf-461a-adcf-01bce34ba109
|
||
--- PASS: TestUptimeService_SyncMonitors_TCPMigration (0.06s)
|
||
--- PASS: TestUptimeService_SyncMonitors_TCPMigration/migrates_TCP_monitor_to_HTTP_for_public_URL (0.03s)
|
||
--- PASS: TestUptimeService_SyncMonitors_TCPMigration/does_not_migrate_TCP_monitor_with_custom_URL (0.03s)
|
||
=== RUN TestUptimeService_SyncMonitors_HTTPSUpgrade
|
||
=== RUN TestUptimeService_SyncMonitors_HTTPSUpgrade/upgrades_HTTP_to_HTTPS_when_SSL_forced
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.058ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:15:57Z" level=info msg="Created UptimeHost" host= host_id=a3a30cde-9ee1-4b86-8726-299e63e4393d
|
||
time="2025-12-03T13:15:57Z" level=info msg="Upgraded monitor for host 1 to HTTPS: https://secure.com" host_id=1
|
||
=== RUN TestUptimeService_SyncMonitors_HTTPSUpgrade/does_not_downgrade_HTTPS_when_SSL_not_forced
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.074ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:15:57Z" level=info msg="Created UptimeHost" host= host_id=eb441693-8619-46b3-8e68-ea79dec1ad9f
|
||
--- PASS: TestUptimeService_SyncMonitors_HTTPSUpgrade (0.05s)
|
||
--- PASS: TestUptimeService_SyncMonitors_HTTPSUpgrade/upgrades_HTTP_to_HTTPS_when_SSL_forced (0.03s)
|
||
--- PASS: TestUptimeService_SyncMonitors_HTTPSUpgrade/does_not_downgrade_HTTPS_when_SSL_not_forced (0.02s)
|
||
=== RUN TestUptimeService_SyncMonitors_RemoteServers
|
||
=== RUN TestUptimeService_SyncMonitors_RemoteServers/creates_monitor_for_new_remote_server
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:209 [35;1mrecord not found
|
||
[0m[33m[0.152ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE remote_server_id = 1 ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.161ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "backend.local" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:15:57Z" level=info msg="Created UptimeHost" host=backend.local host_id=8e0370bd-5a7c-4ed3-8494-5dd55d22d1c9
|
||
=== RUN TestUptimeService_SyncMonitors_RemoteServers/creates_TCP_monitor_for_remote_server_without_scheme
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:209 [35;1mrecord not found
|
||
[0m[33m[0.107ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE remote_server_id = 1 ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.093ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "tcp.backend" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:15:57Z" level=info msg="Created UptimeHost" host=tcp.backend host_id=3b4b983f-25d6-477a-8412-a27349892c36
|
||
=== RUN TestUptimeService_SyncMonitors_RemoteServers/syncs_remote_server_name_changes
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:209 [35;1mrecord not found
|
||
[0m[33m[0.084ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE remote_server_id = 1 ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.069ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "server.local" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:15:57Z" level=info msg="Created UptimeHost" host=server.local host_id=899f3d37-0ae4-448e-89a1-fadc2ed26d00
|
||
=== RUN TestUptimeService_SyncMonitors_RemoteServers/syncs_remote_server_URL_changes
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:209 [35;1mrecord not found
|
||
[0m[33m[0.099ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE remote_server_id = 1 ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.080ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "old.host" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:15:57Z" level=info msg="Created UptimeHost" host=old.host host_id=cd49a58e-36f4-4a39-9771-381b2f1f29c1
|
||
=== RUN TestUptimeService_SyncMonitors_RemoteServers/syncs_remote_server_enabled_status
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:209 [35;1mrecord not found
|
||
[0m[33m[0.151ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE remote_server_id = 1 ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.237ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "server.local" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:15:57Z" level=info msg="Created UptimeHost" host=server.local host_id=90804f11-8b03-48a0-bbed-3ef99d960c05
|
||
=== RUN TestUptimeService_SyncMonitors_RemoteServers/syncs_scheme_change_from_TCP_to_HTTPS
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:209 [35;1mrecord not found
|
||
[0m[33m[0.162ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE remote_server_id = 1 ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:57 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.114ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "server.local" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:15:57Z" level=info msg="Created UptimeHost" host=server.local host_id=fa55d333-055c-43cf-9ac2-f74d0ce5e4c0
|
||
--- PASS: TestUptimeService_SyncMonitors_RemoteServers (0.19s)
|
||
--- PASS: TestUptimeService_SyncMonitors_RemoteServers/creates_monitor_for_new_remote_server (0.03s)
|
||
--- PASS: TestUptimeService_SyncMonitors_RemoteServers/creates_TCP_monitor_for_remote_server_without_scheme (0.03s)
|
||
--- PASS: TestUptimeService_SyncMonitors_RemoteServers/syncs_remote_server_name_changes (0.04s)
|
||
--- PASS: TestUptimeService_SyncMonitors_RemoteServers/syncs_remote_server_URL_changes (0.03s)
|
||
--- PASS: TestUptimeService_SyncMonitors_RemoteServers/syncs_remote_server_enabled_status (0.03s)
|
||
--- PASS: TestUptimeService_SyncMonitors_RemoteServers/syncs_scheme_change_from_TCP_to_HTTPS (0.03s)
|
||
=== RUN TestUptimeService_CheckAll_Errors
|
||
=== RUN TestUptimeService_CheckAll_Errors/handles_empty_monitor_list
|
||
=== RUN TestUptimeService_CheckAll_Errors/orphan_monitors_don't_prevent_check_execution
|
||
=== RUN TestUptimeService_CheckAll_Errors/handles_timeout_for_slow_hosts
|
||
|
||
2025/12/03 13:15:58 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.131ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE proxy_host_id = 1 ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:15:58 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.135ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "192.0.2.1" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:15:58Z" level=info msg="Created UptimeHost" host=192.0.2.1 host_id=88494454-b651-40c1-aa8e-e88b604c2db8
|
||
--- PASS: TestUptimeService_CheckAll_Errors (7.24s)
|
||
--- PASS: TestUptimeService_CheckAll_Errors/handles_empty_monitor_list (0.08s)
|
||
--- PASS: TestUptimeService_CheckAll_Errors/orphan_monitors_don't_prevent_check_execution (0.13s)
|
||
--- PASS: TestUptimeService_CheckAll_Errors/handles_timeout_for_slow_hosts (7.04s)
|
||
=== RUN TestUptimeService_CheckMonitor_EdgeCases
|
||
=== RUN TestUptimeService_CheckMonitor_EdgeCases/invalid_URL_format
|
||
=== RUN TestUptimeService_CheckMonitor_EdgeCases/http_404_response_treated_as_down
|
||
|
||
2025/12/03 13:16:05 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.135ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE proxy_host_id = 1 ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:16:05 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.116ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "127.0.0.1" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:16:05Z" level=info msg="Created UptimeHost" host=127.0.0.1 host_id=73eed1ae-408d-4346-a217-944671813dff
|
||
=== RUN TestUptimeService_CheckMonitor_EdgeCases/https_URL_without_valid_certificate
|
||
--- PASS: TestUptimeService_CheckMonitor_EdgeCases (3.95s)
|
||
--- PASS: TestUptimeService_CheckMonitor_EdgeCases/invalid_URL_format (0.53s)
|
||
--- PASS: TestUptimeService_CheckMonitor_EdgeCases/http_404_response_treated_as_down (0.39s)
|
||
--- PASS: TestUptimeService_CheckMonitor_EdgeCases/https_URL_without_valid_certificate (3.03s)
|
||
=== RUN TestUptimeService_GetMonitorHistory_EdgeCases
|
||
=== RUN TestUptimeService_GetMonitorHistory_EdgeCases/non-existent_monitor
|
||
=== RUN TestUptimeService_GetMonitorHistory_EdgeCases/limit_parameter_respected
|
||
--- PASS: TestUptimeService_GetMonitorHistory_EdgeCases (0.06s)
|
||
--- PASS: TestUptimeService_GetMonitorHistory_EdgeCases/non-existent_monitor (0.03s)
|
||
--- PASS: TestUptimeService_GetMonitorHistory_EdgeCases/limit_parameter_respected (0.03s)
|
||
=== RUN TestUptimeService_ListMonitors_EdgeCases
|
||
=== RUN TestUptimeService_ListMonitors_EdgeCases/empty_database
|
||
=== RUN TestUptimeService_ListMonitors_EdgeCases/monitors_with_associated_proxy_hosts
|
||
--- PASS: TestUptimeService_ListMonitors_EdgeCases (0.05s)
|
||
--- PASS: TestUptimeService_ListMonitors_EdgeCases/empty_database (0.03s)
|
||
--- PASS: TestUptimeService_ListMonitors_EdgeCases/monitors_with_associated_proxy_hosts (0.02s)
|
||
=== RUN TestUptimeService_UpdateMonitor
|
||
=== RUN TestUptimeService_UpdateMonitor/update_max_retries
|
||
=== RUN TestUptimeService_UpdateMonitor/update_interval
|
||
=== RUN TestUptimeService_UpdateMonitor/update_non-existent_monitor
|
||
|
||
2025/12/03 13:16:09 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:833 [35;1mrecord not found
|
||
[0m[33m[0.104ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE id = "non-existent" ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
=== RUN TestUptimeService_UpdateMonitor/update_multiple_fields
|
||
--- PASS: TestUptimeService_UpdateMonitor (0.10s)
|
||
--- PASS: TestUptimeService_UpdateMonitor/update_max_retries (0.03s)
|
||
--- PASS: TestUptimeService_UpdateMonitor/update_interval (0.03s)
|
||
--- PASS: TestUptimeService_UpdateMonitor/update_non-existent_monitor (0.02s)
|
||
--- PASS: TestUptimeService_UpdateMonitor/update_multiple_fields (0.03s)
|
||
=== RUN TestUptimeService_NotificationBatching
|
||
=== RUN TestUptimeService_NotificationBatching/batches_multiple_service_failures_on_same_host
|
||
time="2025-12-03T13:16:09Z" level=info msg="Created pending notification batch" host="Test Server" monitor="Service A"
|
||
time="2025-12-03T13:16:09Z" level=info msg="Added to pending notification batch" count=2 host="Test Server" monitor="Service B"
|
||
time="2025-12-03T13:16:09Z" level=info msg="Added to pending notification batch" count=3 host="Test Server" monitor="Service C"
|
||
time="2025-12-03T13:16:09Z" level=info msg="Sent batched DOWN notification" count=3 host="Test Server"
|
||
=== RUN TestUptimeService_NotificationBatching/single_service_down_gets_individual_notification
|
||
time="2025-12-03T13:16:09Z" level=info msg="Created pending notification batch" host="Single Service Host" monitor="Lonely Service"
|
||
time="2025-12-03T13:16:09Z" level=info msg="Sent batched DOWN notification" count=1 host="Single Service Host"
|
||
--- PASS: TestUptimeService_NotificationBatching (0.05s)
|
||
--- PASS: TestUptimeService_NotificationBatching/batches_multiple_service_failures_on_same_host (0.02s)
|
||
--- PASS: TestUptimeService_NotificationBatching/single_service_down_gets_individual_notification (0.03s)
|
||
=== RUN TestUptimeService_HostLevelCheck
|
||
=== RUN TestUptimeService_HostLevelCheck/creates_uptime_host_during_sync
|
||
|
||
2025/12/03 13:16:09 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.086ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE proxy_host_id = 1 ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:16:09 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.076ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "10.0.0.50" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:16:09Z" level=info msg="Created UptimeHost" host=10.0.0.50 host_id=0c93e307-4ea2-4446-9d70-5158eff560fb
|
||
=== RUN TestUptimeService_HostLevelCheck/groups_multiple_services_on_same_host
|
||
|
||
2025/12/03 13:16:09 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.134ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE proxy_host_id = 1 ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:16:09 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.075ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "10.0.0.100" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:16:09Z" level=info msg="Created UptimeHost" host=10.0.0.100 host_id=e3a15bc3-8b27-4687-9bcb-af34e59d5980
|
||
|
||
2025/12/03 13:16:09 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.136ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE proxy_host_id = 2 ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:16:09 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.076ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE proxy_host_id = 3 ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
--- PASS: TestUptimeService_HostLevelCheck (0.06s)
|
||
--- PASS: TestUptimeService_HostLevelCheck/creates_uptime_host_during_sync (0.02s)
|
||
--- PASS: TestUptimeService_HostLevelCheck/groups_multiple_services_on_same_host (0.03s)
|
||
=== RUN TestFormatDuration
|
||
--- PASS: TestFormatDuration (0.00s)
|
||
=== RUN TestUpdateMonitorEnabled_Unit
|
||
--- PASS: TestUpdateMonitorEnabled_Unit (0.01s)
|
||
=== RUN TestDeleteMonitorDeletesHeartbeats_Unit
|
||
|
||
2025/12/03 13:16:09 [31;1m/projects/Charon/backend/internal/services/uptime_service_unit_test.go:52 [35;1mrecord not found
|
||
[0m[33m[0.068ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE id = "5a040da8-4515-4166-9b20-e87f8b1825e9" ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
--- PASS: TestDeleteMonitorDeletesHeartbeats_Unit (0.01s)
|
||
PASS
|
||
ok github.com/Wikid82/charon/backend/internal/services 44.470s
|
||
? github.com/Wikid82/charon/backend/internal/trace [no test files]
|
||
? github.com/Wikid82/charon/backend/internal/util [no test files]
|
||
=== RUN TestFull
|
||
--- PASS: TestFull (0.00s)
|
||
PASS
|
||
ok github.com/Wikid82/charon/backend/internal/version 1.028s
|