2894 lines
201 KiB
Plaintext
2894 lines
201 KiB
Plaintext
# github.com/Wikid82/charon/backend/cmd/seed
|
||
go: no such tool "covdata"
|
||
# github.com/Wikid82/charon/backend/cmd/api
|
||
go: no such tool "covdata"
|
||
# github.com/Wikid82/charon/backend/internal/logger
|
||
go: no such tool "covdata"
|
||
# github.com/Wikid82/charon/backend/internal/metrics
|
||
go: no such tool "covdata"
|
||
# github.com/Wikid82/charon/backend/internal/util
|
||
go: no such tool "covdata"
|
||
=== 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:11:12 [31;1m/projects/Charon/backend/internal/services/access_list_service.go:91 [35;1mrecord not found
|
||
[0m[33m[0.141ms] [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:11:12 [31;1m/projects/Charon/backend/internal/services/access_list_service.go:91 [35;1mrecord not found
|
||
[0m[33m[0.092ms] [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.02s)
|
||
--- 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.02s)
|
||
--- 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:11:12 [31;1m/projects/Charon/backend/internal/services/access_list_service.go:91 [35;1mrecord not found
|
||
[0m[33m[0.066ms] [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.02s)
|
||
--- 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.58s)
|
||
=== RUN TestAuthHandler_Login_Errors
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/services/auth_service.go:64 [35;1mrecord not found
|
||
[0m[33m[0.115ms] [34;1m[rows:0][0m SELECT * FROM `users` WHERE email = "nonexistent@example.com" ORDER BY `users`.`id` LIMIT 1
|
||
--- PASS: TestAuthHandler_Login_Errors (0.00s)
|
||
=== RUN TestAuthHandler_Register
|
||
--- PASS: TestAuthHandler_Register (0.73s)
|
||
=== RUN TestAuthHandler_Register_Duplicate
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/services/auth_service.go:54 [35;1mUNIQUE constraint failed: users.email
|
||
[0m[33m[0.461ms] [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 ("27721601-d22b-41ba-ac32-c75bd4e19167","dup@example.com","35bc31ae-2a31-41dd-a77c-d0438d9123ac","$2a$10$rUH.kxnabdTR3J4AxZDGtuwN6V7WJS1ULEJv1XhrGdTphQWv.sTHy","Dup User","user",true,0,NULL,NULL,"2025-12-03 13:11:14.837","2025-12-03 13:11:14.837") RETURNING `id`
|
||
--- PASS: TestAuthHandler_Register_Duplicate (0.75s)
|
||
=== RUN TestAuthHandler_Logout
|
||
--- PASS: TestAuthHandler_Logout (0.01s)
|
||
=== RUN TestAuthHandler_Me
|
||
--- PASS: TestAuthHandler_Me (0.00s)
|
||
=== RUN TestAuthHandler_Me_NotFound
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/services/auth_service.go:147 [35;1mrecord not found
|
||
[0m[33m[0.246ms] [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.16s)
|
||
=== RUN TestAuthHandler_ChangePassword_WrongOld
|
||
--- PASS: TestAuthHandler_ChangePassword_WrongOld (1.65s)
|
||
=== RUN TestAuthHandler_ChangePassword_Errors
|
||
--- PASS: TestAuthHandler_ChangePassword_Errors (0.00s)
|
||
=== RUN TestBackupHandlerSanitizesFilename
|
||
--- PASS: TestBackupHandlerSanitizesFilename (0.00s)
|
||
=== RUN TestBackupLifecycle
|
||
--- PASS: TestBackupLifecycle (0.02s)
|
||
=== 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:11:20 [31;1m/projects/Charon/backend/internal/api/handlers/certificate_handler_test.go:123 [35;1mrecord not found
|
||
[0m[33m[0.056ms] [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.02s)
|
||
=== 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.24s)
|
||
=== 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.01s)
|
||
=== RUN TestListAndReadFile
|
||
--- PASS: TestListAndReadFile (0.00s)
|
||
=== RUN TestWriteFileCreatesBackup
|
||
--- PASS: TestWriteFileCreatesBackup (0.00s)
|
||
=== RUN TestDockerHandler_ListContainers
|
||
--- PASS: TestDockerHandler_ListContainers (0.02s)
|
||
=== RUN TestDockerHandler_ListContainers_NonExistentServerID
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/services/remoteserver_service.go:77 [35;1mrecord not found
|
||
[0m[33m[0.073ms] [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.01s)
|
||
=== 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:11:21 [31;1m/projects/Charon/backend/internal/api/handlers/domain_handler.go:73 [35;1mrecord not found
|
||
[0m[33m[0.119ms] [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:11:21 [31;1m/projects/Charon/backend/internal/api/handlers/domain_handler.go:49 [35;1mUNIQUE constraint failed: domains.name
|
||
[0m[33m[0.236ms] [34;1m[rows:0][0m INSERT INTO `domains` (`uuid`,`name`,`created_at`,`updated_at`,`deleted_at`) VALUES ("b22b6427-d89f-4dda-966f-4cd0b0431515","duplicate.com","2025-12-03 13:11:21.1","2025-12-03 13:11:21.1",NULL) RETURNING `id`
|
||
--- PASS: TestDomainCreate_Duplicate (0.01s)
|
||
=== RUN TestDomainList_Empty
|
||
--- PASS: TestDomainList_Empty (0.00s)
|
||
=== RUN TestDomainCreate_LongName
|
||
--- PASS: TestDomainCreate_LongName (0.01s)
|
||
=== RUN TestFeatureFlags_GetAndUpdate
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/api/handlers/feature_flags_handler.go:41 [35;1mrecord not found
|
||
[0m[33m[0.072ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "feature.global.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/api/handlers/feature_flags_handler.go:41 [35;1mrecord not found
|
||
[0m[33m[0.101ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "feature.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/api/handlers/feature_flags_handler.go:41 [35;1mrecord not found
|
||
[0m[33m[0.084ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "feature.uptime.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/api/handlers/feature_flags_handler.go:41 [35;1mrecord not found
|
||
[0m[33m[0.075ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "feature.notifications.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/api/handlers/feature_flags_handler.go:41 [35;1mrecord not found
|
||
[0m[33m[0.105ms] [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:11:21 [31;1m/projects/Charon/backend/internal/api/handlers/feature_flags_handler.go:41 [35;1mno such table: settings
|
||
[0m[33m[1.312ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "feature.global.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/api/handlers/feature_flags_handler.go:41 [35;1mno such table: settings
|
||
[0m[33m[0.059ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "feature.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/api/handlers/feature_flags_handler.go:41 [35;1mno such table: settings
|
||
[0m[33m[0.058ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "feature.uptime.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/api/handlers/feature_flags_handler.go:41 [35;1mno such table: settings
|
||
[0m[33m[0.055ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "feature.notifications.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/api/handlers/feature_flags_handler.go:41 [35;1mno such table: settings
|
||
[0m[33m[0.050ms] [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.00s)
|
||
=== RUN TestNotificationTemplateHandler_Preview_InvalidJSON
|
||
--- PASS: TestNotificationTemplateHandler_Preview_InvalidJSON (0.00s)
|
||
=== RUN TestProxyHostLifecycle
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/services/proxyhost_service.go:111 [35;1mrecord not found
|
||
[0m[33m[0.061ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts` WHERE uuid = "234adb38-e057-4603-ac03-8c550280e89d" ORDER BY `proxy_hosts`.`id` LIMIT 1
|
||
--- PASS: TestProxyHostLifecycle (0.01s)
|
||
=== RUN TestProxyHostDelete_WithUptimeCleanup
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/services/notification_service.go:81 [35;1mno such table: notification_providers
|
||
[0m[33m[2.280ms] [34;1m[rows:0][0m SELECT * FROM `notification_providers` WHERE enabled = true
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/api/handlers/proxy_host_handler_test.go:141 [35;1mrecord not found
|
||
[0m[33m[0.110ms] [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:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.097ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.050ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [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:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.078ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[2.832ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[1.187ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.223ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/services/proxyhost_service.go:111 [35;1mrecord not found
|
||
[0m[33m[0.137ms] [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:11:21 [31;1m/projects/Charon/backend/internal/services/proxyhost_service.go:111 [35;1mrecord not found
|
||
[0m[33m[0.095ms] [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:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.109ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.083ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.078ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.078ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[0.057ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[0.044ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.046ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/services/proxyhost_service.go:111 [35;1mrecord not found
|
||
[0m[33m[0.092ms] [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:11:21 [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:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.069ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [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:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.091ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [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:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[0.032ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.041ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestProxyHostErrors (0.04s)
|
||
=== RUN TestProxyHostValidation
|
||
--- PASS: TestProxyHostValidation (0.01s)
|
||
=== RUN TestProxyHostCreate_AdvancedConfig_InvalidJSON
|
||
--- PASS: TestProxyHostCreate_AdvancedConfig_InvalidJSON (0.01s)
|
||
=== RUN TestProxyHostCreate_AdvancedConfig_Normalization
|
||
--- PASS: TestProxyHostCreate_AdvancedConfig_Normalization (0.02s)
|
||
=== RUN TestProxyHostUpdate_CertificateID_Null
|
||
--- PASS: TestProxyHostUpdate_CertificateID_Null (0.01s)
|
||
=== RUN TestProxyHostConnection
|
||
--- PASS: TestProxyHostConnection (0.01s)
|
||
=== RUN TestProxyHostHandler_List_Error
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/services/proxyhost_service.go:120 [35;1msql: database is closed
|
||
[0m[33m[0.023ms] [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:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.091ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.082ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [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:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.074ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[1.034ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[0.914ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[2.777ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/services/notification_service.go:81 [35;1mno such table: notification_providers
|
||
[0m[33m[1.321ms] [34;1m[rows:0][0m SELECT * FROM `notification_providers` WHERE enabled = true
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.065ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.070ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [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:11:21 [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:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[0.060ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [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:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.031ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.070ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [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:11:21 [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:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.080ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [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:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[0.020ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.021ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/services/notification_service.go:81 [35;1mno such table: notification_providers
|
||
[0m[33m[0.045ms] [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.01s)
|
||
=== RUN TestProxyHostHandler_BulkUpdateACL_RemoveACL
|
||
--- PASS: TestProxyHostHandler_BulkUpdateACL_RemoveACL (0.01s)
|
||
=== RUN TestProxyHostHandler_BulkUpdateACL_PartialFailure
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/services/proxyhost_service.go:111 [35;1mrecord not found
|
||
[0m[33m[0.081ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts` WHERE uuid = "9f316f2c-7793-4805-bb02-66dd5c5a647b" ORDER BY `proxy_hosts`.`id` LIMIT 1
|
||
--- PASS: TestProxyHostHandler_BulkUpdateACL_PartialFailure (0.01s)
|
||
=== RUN TestProxyHostHandler_BulkUpdateACL_EmptyUUIDs
|
||
--- PASS: TestProxyHostHandler_BulkUpdateACL_EmptyUUIDs (0.01s)
|
||
=== 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.01s)
|
||
=== RUN TestProxyHostUpdate_SetCertificateID
|
||
--- PASS: TestProxyHostUpdate_SetCertificateID (0.01s)
|
||
=== 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.01s)
|
||
=== RUN TestProxyHostUpdate_SetBooleansAndApplication
|
||
--- PASS: TestProxyHostUpdate_SetBooleansAndApplication (0.01s)
|
||
=== RUN TestProxyHostUpdate_Locations_Replace
|
||
--- PASS: TestProxyHostUpdate_Locations_Replace (0.01s)
|
||
=== RUN TestProxyHostCreate_WithCertificateAndLocations
|
||
--- PASS: TestProxyHostCreate_WithCertificateAndLocations (0.01s)
|
||
=== RUN TestSanitizeForLog
|
||
--- PASS: TestSanitizeForLog (0.00s)
|
||
=== RUN TestSecurityHandler_GetConfigAndUpdateConfig
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/services/security_service.go:37 [35;1mrecord not found
|
||
[0m[33m[0.081ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:21 [31;1m/projects/Charon/backend/internal/services/security_service.go:73 [35;1mrecord not found
|
||
[0m[33m[0.098ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
--- PASS: TestSecurityHandler_GetConfigAndUpdateConfig (0.01s)
|
||
=== RUN TestSecurityHandler_GetStatus_Clean
|
||
--- PASS: TestSecurityHandler_GetStatus_Clean (0.00s)
|
||
=== RUN TestSecurityHandler_Cerberus_DBOverride
|
||
--- PASS: TestSecurityHandler_Cerberus_DBOverride (0.00s)
|
||
=== RUN TestSecurityHandler_ACL_DBOverride
|
||
--- PASS: TestSecurityHandler_ACL_DBOverride (0.00s)
|
||
=== RUN TestSecurityHandler_GenerateBreakGlass_ReturnsToken
|
||
|
||
2025/12/03 13:11:22 [31;1m/projects/Charon/backend/internal/services/security_service.go:113 [35;1mrecord not found
|
||
[0m[33m[0.213ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
--- PASS: TestSecurityHandler_GenerateBreakGlass_ReturnsToken (0.73s)
|
||
=== RUN TestSecurityHandler_ACL_DisabledWhenCerberusOff
|
||
--- PASS: TestSecurityHandler_ACL_DisabledWhenCerberusOff (0.01s)
|
||
=== RUN TestSecurityHandler_CrowdSec_Mode_DBOverride
|
||
--- PASS: TestSecurityHandler_CrowdSec_Mode_DBOverride (0.00s)
|
||
=== RUN TestSecurityHandler_CrowdSec_ExternalMappedToDisabled_DBOverride
|
||
--- PASS: TestSecurityHandler_CrowdSec_ExternalMappedToDisabled_DBOverride (0.01s)
|
||
=== RUN TestSecurityHandler_ExternalModeMappedToDisabled
|
||
--- PASS: TestSecurityHandler_ExternalModeMappedToDisabled (0.00s)
|
||
=== RUN TestSecurityHandler_Enable_Disable_WithAdminWhitelistAndToken
|
||
--- PASS: TestSecurityHandler_Enable_Disable_WithAdminWhitelistAndToken (1.54s)
|
||
=== RUN TestSecurityHandler_CreateAndListDecisionAndRulesets
|
||
|
||
2025/12/03 13:11:23 [31;1m/projects/Charon/backend/internal/services/security_service.go:204 [35;1mrecord not found
|
||
[0m[33m[0.154ms] [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.12s)
|
||
=== RUN TestSecurityHandler_UpsertDeleteTriggersApplyConfig
|
||
|
||
2025/12/03 13:11:23 [31;1m/projects/Charon/backend/internal/services/security_service.go:204 [35;1mrecord not found
|
||
[0m[33m[0.127ms] [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:11:23 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.527ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:23 [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:11:23 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.100ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:23 [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:11:23 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.074ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:23 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.226ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:23 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.197ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:23 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.111ms] [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.01s)
|
||
=== RUN TestUserHandler_Setup
|
||
--- PASS: TestUserHandler_Setup (0.75s)
|
||
=== 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.00s)
|
||
=== RUN TestUserHandler_RegisterRoutes
|
||
--- PASS: TestUserHandler_RegisterRoutes (0.00s)
|
||
=== RUN TestUserHandler_Errors
|
||
|
||
2025/12/03 13:11:24 [31;1m/projects/Charon/backend/internal/api/handlers/user_handler.go:147 [35;1mrecord not found
|
||
[0m[33m[0.091ms] [34;1m[rows:0][0m SELECT * FROM `users` WHERE `users`.`id` = 99999 ORDER BY `users`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:24 [31;1m/projects/Charon/backend/internal/api/handlers/user_handler.go:130 [35;1mno such table: users
|
||
[0m[33m[0.186ms] [34;1m[rows:0][0m UPDATE `users` SET `api_key`="65b8b12e-6395-444a-af17-649186b1ac83",`updated_at`="2025-12-03 13:11:24.714" 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.37s)
|
||
--- PASS: TestUserHandler_UpdateProfile/Success_Name_Only (0.00s)
|
||
--- PASS: TestUserHandler_UpdateProfile/Success_Email_Change (0.77s)
|
||
--- PASS: TestUserHandler_UpdateProfile/Fail_Email_Change_No_Password (0.00s)
|
||
--- PASS: TestUserHandler_UpdateProfile/Fail_Email_Change_Wrong_Password (0.84s)
|
||
--- PASS: TestUserHandler_UpdateProfile/Fail_Email_In_Use (0.00s)
|
||
=== RUN TestUserHandler_UpdateProfile_Errors
|
||
|
||
2025/12/03 13:11:27 [31;1m/projects/Charon/backend/internal/api/handlers/user_handler.go:183 [35;1mrecord not found
|
||
[0m[33m[0.102ms] [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.56s)
|
||
=== RUN TestRemoteServerHandler_List
|
||
--- PASS: TestRemoteServerHandler_List (0.02s)
|
||
=== RUN TestRemoteServerHandler_Create
|
||
--- PASS: TestRemoteServerHandler_Create (0.02s)
|
||
=== RUN TestRemoteServerHandler_TestConnection
|
||
--- PASS: TestRemoteServerHandler_TestConnection (0.02s)
|
||
=== RUN TestRemoteServerHandler_Get
|
||
--- PASS: TestRemoteServerHandler_Get (0.02s)
|
||
=== RUN TestRemoteServerHandler_Update
|
||
--- PASS: TestRemoteServerHandler_Update (0.02s)
|
||
=== RUN TestRemoteServerHandler_Delete
|
||
|
||
2025/12/03 13:11:30 [31;1m/projects/Charon/backend/internal/services/remoteserver_service.go:77 [35;1mrecord not found
|
||
[0m[33m[0.088ms] [34;1m[rows:0][0m SELECT * FROM `remote_servers` WHERE uuid = "71f10185-8109-4781-9724-420affba4fc0" ORDER BY `remote_servers`.`id` LIMIT 1
|
||
--- PASS: TestRemoteServerHandler_Delete (0.02s)
|
||
=== 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.01s)
|
||
=== RUN TestHealthHandler
|
||
--- PASS: TestHealthHandler (0.00s)
|
||
=== RUN TestRemoteServerHandler_Errors
|
||
|
||
2025/12/03 13:11:30 [31;1m/projects/Charon/backend/internal/services/remoteserver_service.go:77 [35;1mrecord not found
|
||
[0m[33m[0.114ms] [34;1m[rows:0][0m SELECT * FROM `remote_servers` WHERE uuid = "non-existent" ORDER BY `remote_servers`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:30 [31;1m/projects/Charon/backend/internal/services/remoteserver_service.go:77 [35;1mrecord not found
|
||
[0m[33m[0.100ms] [34;1m[rows:0][0m SELECT * FROM `remote_servers` WHERE uuid = "non-existent" ORDER BY `remote_servers`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:30 [31;1m/projects/Charon/backend/internal/services/remoteserver_service.go:77 [35;1mrecord not found
|
||
[0m[33m[0.089ms] [34;1m[rows:0][0m SELECT * FROM `remote_servers` WHERE uuid = "non-existent" ORDER BY `remote_servers`.`id` LIMIT 1
|
||
--- PASS: TestRemoteServerHandler_Errors (0.02s)
|
||
=== RUN TestImportHandler_GetStatus
|
||
|
||
2025/12/03 13:11:30 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:60 [35;1mrecord not found
|
||
[0m[33m[0.221ms] [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:11:30 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:60 [35;1mrecord not found
|
||
[0m[33m[0.119ms] [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:11:30 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:70 [35;1mrecord not found
|
||
[0m[33m[0.131ms] [34;1m[rows:0][0m SELECT * FROM `import_sessions` WHERE source_file = "/tmp/TestImportHandler_GetStatus223029045/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:11:30 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:122 [35;1mrecord not found
|
||
[0m[33m[0.203ms] [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:11:30 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:583 [35;1mrecord not found
|
||
[0m[33m[0.086ms] [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:11:30 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:734 [35;1mrecord not found
|
||
[0m[33m[0.113ms] [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:11:30 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:60 [35;1mrecord not found
|
||
[0m[33m[0.199ms] [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:11:30 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:122 [35;1mrecord not found
|
||
[0m[33m[0.681ms] [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:11:30 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:167 [35;1mrecord not found
|
||
[0m[33m[0.115ms] [34;1m[rows:0][0m SELECT * FROM `import_sessions` WHERE source_file = "/tmp/TestImportHandler_GetPreview_TransientMount2275059922/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:11:31 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:583 [35;1mrecord not found
|
||
[0m[33m[0.166ms] [34;1m[rows:0][0m SELECT * FROM `import_sessions` WHERE uuid = "f097ac93-08cd-485d-a620-b4511aef9ad4" AND status = "reviewing" ORDER BY `import_sessions`.`id` LIMIT 1
|
||
--- PASS: TestImportHandler_Commit_TransientUpload (0.03s)
|
||
=== RUN TestImportHandler_Commit_TransientMount
|
||
|
||
2025/12/03 13:11:31 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:583 [35;1mrecord not found
|
||
[0m[33m[0.125ms] [34;1m[rows:0][0m SELECT * FROM `import_sessions` WHERE uuid = "01639183-afad-4cc5-b2cf-358a177609f4" AND status = "reviewing" ORDER BY `import_sessions`.`id` LIMIT 1
|
||
--- PASS: TestImportHandler_Commit_TransientMount (0.02s)
|
||
=== RUN TestImportHandler_Cancel_TransientUpload
|
||
|
||
2025/12/03 13:11:31 [31;1m/projects/Charon/backend/internal/api/handlers/import_handler.go:734 [35;1mrecord not found
|
||
[0m[33m[0.095ms] [34;1m[rows:0][0m SELECT * FROM `import_sessions` WHERE uuid = "aad4278f-1dbe-4db0-8949-b83b94481003" ORDER BY `import_sessions`.`id` LIMIT 1
|
||
--- PASS: TestImportHandler_Cancel_TransientUpload (0.02s)
|
||
=== RUN TestImportHandler_Errors
|
||
|
||
2025/12/03 13:11:31 [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
|
||
|
||
2025/12/03 13:11:31 [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 = "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:11:31 | 201 | 414.902µs | | POST "/api/v1/notifications/providers"
|
||
[GIN] 2025/12/03 - 13:11:31 | 200 | 229.861µs | | GET "/api/v1/notifications/providers"
|
||
[GIN] 2025/12/03 - 13:11:31 | 200 | 384.911µs | | PUT "/api/v1/notifications/providers/978cd427-fd22-431e-93ae-e67b2e392313"
|
||
[GIN] 2025/12/03 - 13:11:31 | 200 | 213.951µs | | DELETE "/api/v1/notifications/providers/978cd427-fd22-431e-93ae-e67b2e392313"
|
||
--- PASS: TestNotificationProviderHandler_CRUD (0.01s)
|
||
=== RUN TestNotificationProviderHandler_Templates
|
||
[GIN] 2025/12/03 - 13:11:31 | 200 | 75.851µs | | GET "/api/v1/notifications/templates"
|
||
--- PASS: TestNotificationProviderHandler_Templates (0.00s)
|
||
=== RUN TestNotificationProviderHandler_Test
|
||
[GIN] 2025/12/03 - 13:11:31 | 400 | 257.281µs | | POST "/api/v1/notifications/providers/test"
|
||
--- PASS: TestNotificationProviderHandler_Test (0.01s)
|
||
=== RUN TestNotificationProviderHandler_Errors
|
||
[GIN] 2025/12/03 - 13:11:31 | 400 | 28.15µs | | POST "/api/v1/notifications/providers"
|
||
[GIN] 2025/12/03 - 13:11:31 | 400 | 16.339µs | | PUT "/api/v1/notifications/providers/123"
|
||
[GIN] 2025/12/03 - 13:11:31 | 400 | 14.72µs | | POST "/api/v1/notifications/providers/test"
|
||
--- PASS: TestNotificationProviderHandler_Errors (0.00s)
|
||
=== RUN TestNotificationProviderHandler_InvalidCustomTemplate_Rejects
|
||
[GIN] 2025/12/03 - 13:11:31 | 400 | 275.86µs | | POST "/api/v1/notifications/providers"
|
||
[GIN] 2025/12/03 - 13:11:31 | 201 | 510.481µs | | POST "/api/v1/notifications/providers"
|
||
[GIN] 2025/12/03 - 13:11:31 | 400 | 242.201µs | | PUT "/api/v1/notifications/providers/5a2df675-03c2-41ff-9778-991f7a650a79"
|
||
--- PASS: TestNotificationProviderHandler_InvalidCustomTemplate_Rejects (0.01s)
|
||
=== RUN TestNotificationProviderHandler_Preview
|
||
[GIN] 2025/12/03 - 13:11:31 | 200 | 519.073µs | | POST "/api/v1/notifications/providers/preview"
|
||
[GIN] 2025/12/03 - 13:11:31 | 400 | 283.401µs | | POST "/api/v1/notifications/providers/preview"
|
||
--- PASS: TestNotificationProviderHandler_Preview (0.01s)
|
||
=== RUN TestRemoteServerHandler_TestConnectionCustom
|
||
[GIN] 2025/12/03 - 13:11:31 | 200 | 593.793µs | | POST "/api/v1/remote-servers/test"
|
||
--- PASS: TestRemoteServerHandler_TestConnectionCustom (0.02s)
|
||
=== RUN TestRemoteServerHandler_FullCRUD
|
||
[GIN] 2025/12/03 - 13:11:31 | 201 | 979.364µs | | POST "/api/v1/remote-servers"
|
||
[GIN] 2025/12/03 - 13:11:31 | 200 | 322.731µs | | GET "/api/v1/remote-servers"
|
||
[GIN] 2025/12/03 - 13:11:31 | 200 | 255.851µs | | GET "/api/v1/remote-servers/957d8d6f-f4c6-4085-b565-9213e34f6c28"
|
||
[GIN] 2025/12/03 - 13:11:31 | 200 | 709.242µs | | PUT "/api/v1/remote-servers/957d8d6f-f4c6-4085-b565-9213e34f6c28"
|
||
[GIN] 2025/12/03 - 13:11:31 | 204 | 484.491µs | | DELETE "/api/v1/remote-servers/957d8d6f-f4c6-4085-b565-9213e34f6c28"
|
||
[GIN] 2025/12/03 - 13:11:31 | 400 | 32.161µs | | POST "/api/v1/remote-servers"
|
||
|
||
2025/12/03 13:11:31 [31;1m/projects/Charon/backend/internal/services/remoteserver_service.go:77 [35;1mrecord not found
|
||
[0m[33m[0.102ms] [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:11:31 | 404 | 627.072µs | | PUT "/api/v1/remote-servers/non-existent-uuid"
|
||
|
||
2025/12/03 13:11:31 [31;1m/projects/Charon/backend/internal/services/remoteserver_service.go:77 [35;1mrecord not found
|
||
[0m[33m[0.505ms] [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:11:31 | 404 | 616.742µ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:11:31 | 200 | 420.652µs | | GET "/api/v1/uptime"
|
||
--- PASS: TestUptimeHandler_List (0.02s)
|
||
=== RUN TestUptimeHandler_GetHistory
|
||
[GIN] 2025/12/03 - 13:11:31 | 200 | 296.642µs | | GET "/api/v1/uptime/monitor-1/history"
|
||
--- PASS: TestUptimeHandler_GetHistory (0.02s)
|
||
=== RUN TestUptimeHandler_CheckMonitor
|
||
[GIN] 2025/12/03 - 13:11:31 | 200 | 339.442µs | | POST "/api/v1/uptime/check-mon-1/check"
|
||
--- PASS: TestUptimeHandler_CheckMonitor (0.02s)
|
||
=== RUN TestUptimeHandler_CheckMonitor_NotFound
|
||
|
||
2025/12/03 13:11:31 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:819 [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:11:31 | 404 | 233.831µ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:11:31 | 200 | 789.673µs | | PUT "/api/v1/uptime/monitor-update"
|
||
=== RUN TestUptimeHandler_Update/invalid_json
|
||
[GIN] 2025/12/03 - 13:11:31 | 400 | 48.03µs | | PUT "/api/v1/uptime/monitor-1"
|
||
=== RUN TestUptimeHandler_Update/not_found
|
||
|
||
2025/12/03 13:11:31 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:833 [35;1mrecord not found
|
||
[0m[33m[0.114ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE id = "nonexistent" ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
[GIN] 2025/12/03 - 13:11:31 | 500 | 263.372µs | | PUT "/api/v1/uptime/nonexistent"
|
||
--- PASS: TestUptimeHandler_Update (0.05s)
|
||
--- PASS: TestUptimeHandler_Update/success (0.02s)
|
||
--- PASS: TestUptimeHandler_Update/invalid_json (0.01s)
|
||
--- PASS: TestUptimeHandler_Update/not_found (0.02s)
|
||
=== RUN TestUptimeHandler_DeleteAndSync
|
||
=== RUN TestUptimeHandler_DeleteAndSync/delete_monitor
|
||
[GIN] 2025/12/03 - 13:11:31 | 200 | 2.158179ms | | DELETE "/api/v1/uptime/mon-delete"
|
||
|
||
2025/12/03 13:11:31 [31;1m/projects/Charon/backend/internal/api/handlers/uptime_handler_test.go:202 [35;1mrecord not found
|
||
[0m[33m[0.088ms] [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:11:31 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.164ms] [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:11:31 [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 = "127.0.0.1" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
[GIN] 2025/12/03 - 13:11:31 | 200 | 1.618067ms | | POST "/api/v1/uptime/sync"
|
||
=== RUN TestUptimeHandler_DeleteAndSync/update_enabled_via_PUT
|
||
[GIN] 2025/12/03 - 13:11:31 | 200 | 544.972µs | | PUT "/api/v1/uptime/mon-enable"
|
||
--- PASS: TestUptimeHandler_DeleteAndSync (0.07s)
|
||
--- PASS: TestUptimeHandler_DeleteAndSync/delete_monitor (0.02s)
|
||
--- 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:11:31 | 200 | 215.661µs | | POST "/api/v1/uptime/sync"
|
||
--- PASS: TestUptimeHandler_Sync_Success (0.02s)
|
||
=== RUN TestUptimeHandler_Delete_Error
|
||
|
||
2025/12/03 13:11:31 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:861 [35;1mno such table: uptime_monitors
|
||
[0m[33m[0.061ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE id = "nonexistent" ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
[GIN] 2025/12/03 - 13:11:31 | 500 | 523.692µs | | DELETE "/api/v1/uptime/nonexistent"
|
||
--- PASS: TestUptimeHandler_Delete_Error (0.02s)
|
||
=== RUN TestUptimeHandler_List_Error
|
||
|
||
2025/12/03 13:11:31 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:813 [35;1mno such table: uptime_monitors
|
||
[0m[33m[0.038ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` ORDER BY name ASC
|
||
[GIN] 2025/12/03 - 13:11:31 | 500 | 226.291µs | | GET "/api/v1/uptime"
|
||
--- PASS: TestUptimeHandler_List_Error (0.02s)
|
||
=== RUN TestUptimeHandler_GetHistory_Error
|
||
|
||
2025/12/03 13:11:31 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:827 [35;1mno such table: uptime_heartbeats
|
||
[0m[33m[0.129ms] [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:11:31 | 500 | 325.741µs | | GET "/api/v1/uptime/monitor-1/history"
|
||
--- PASS: TestUptimeHandler_GetHistory_Error (0.01s)
|
||
PASS
|
||
coverage: 74.1% of statements
|
||
ok github.com/Wikid82/charon/backend/internal/api/handlers 20.180s coverage: 74.1% of statements
|
||
=== 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.84s)
|
||
=== RUN TestAuthMiddleware_ValidToken
|
||
--- PASS: TestAuthMiddleware_ValidToken (0.86s)
|
||
=== RUN TestAuthMiddleware_InvalidToken
|
||
--- PASS: TestAuthMiddleware_InvalidToken (0.01s)
|
||
=== 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
|
||
coverage: 86.4% of statements
|
||
ok github.com/Wikid82/charon/backend/internal/api/middleware 2.772s coverage: 86.4% of statements
|
||
=== RUN TestRegister
|
||
time="2025-12-03T13:11:12Z" level=info msg="Cleaning up invalid Let's Encrypt certificate associations..."
|
||
time="2025-12-03T13:11:12Z" level=info msg="Using Caddy data directory for certificates scan" caddy_data_dir=/data
|
||
--- PASS: TestRegister (0.08s)
|
||
=== RUN TestRegisterImportHandler
|
||
time="2025-12-03T13:11:12Z" level=info msg="CertificateService: scanning cert directory" certRoot=/data/certificates
|
||
time="2025-12-03T13:11:12Z" level=info msg="CertificateService: cert directory does not exist" certRoot=/data/certificates
|
||
time="2025-12-03T13:11:12Z" level=info msg="CertificateService: disk sync complete" count=0
|
||
--- PASS: TestRegisterImportHandler (0.02s)
|
||
PASS
|
||
coverage: 86.7% of statements
|
||
ok github.com/Wikid82/charon/backend/internal/api/routes 1.151s coverage: 86.7% of statements
|
||
=== RUN TestIntegration_WAF_BlockAndMonitor
|
||
time="2025-12-03T13:11:12Z" level=info msg="Cleaning up invalid Let's Encrypt certificate associations..."
|
||
time="2025-12-03T13:11:12Z" level=info msg="Using Caddy data directory for certificates scan" caddy_data_dir=data/caddy/data
|
||
time="2025-12-03T13:11:12Z" level=warning msg="WAF blocked request" decision=block mode=block path=/api/v1/remote-servers query="test=<script>" source=waf
|
||
time="2025-12-03T13:11:12Z" level=info msg="CertificateService: scanning cert directory" certRoot=data/caddy/data/certificates
|
||
time="2025-12-03T13:11:12Z" level=info msg="CertificateService: cert directory does not exist" certRoot=data/caddy/data/certificates
|
||
time="2025-12-03T13:11:12Z" level=info msg="CertificateService: disk sync complete" count=0
|
||
time="2025-12-03T13:11:12Z" level=info msg="Cleaning up invalid Let's Encrypt certificate associations..."
|
||
time="2025-12-03T13:11:12Z" level=info msg="Using Caddy data directory for certificates scan" caddy_data_dir=data/caddy/data
|
||
time="2025-12-03T13:11:12Z" level=info msg="WAF monitored request" decision=monitor mode=monitor path=/api/v1/remote-servers query="test=<script>" source=waf
|
||
--- PASS: TestIntegration_WAF_BlockAndMonitor (0.19s)
|
||
PASS
|
||
coverage: [no statements]
|
||
time="2025-12-03T13:11:12Z" level=info msg="CertificateService: scanning cert directory" certRoot=data/caddy/data/certificates
|
||
time="2025-12-03T13:11:12Z" level=info msg="CertificateService: cert directory does not exist" certRoot=data/caddy/data/certificates
|
||
time="2025-12-03T13:11:12Z" level=info msg="CertificateService: disk sync complete" count=0
|
||
ok github.com/Wikid82/charon/backend/internal/api/tests 1.250s coverage: [no statements]
|
||
=== RUN TestClient_Load_Success
|
||
--- PASS: TestClient_Load_Success (0.00s)
|
||
=== 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:11:14Z" 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:11:14Z" 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:11:14Z" 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.00s)
|
||
=== 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:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.090ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[1.224ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[3.801ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_WithSettings (0.03s)
|
||
=== 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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.083ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.086ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.071ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[2.023ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[2.001ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.887ms] [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.110ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.084ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [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:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[1.800ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[1.022ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.967ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_LoadFailsAndRollbackFails (0.02s)
|
||
=== RUN TestManager_ApplyConfig_SaveSnapshotFails
|
||
|
||
2025/12/03 13:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.070ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.043ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[1.259ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[0.877ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[3.096ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_SaveSnapshotFails (0.02s)
|
||
=== RUN TestManager_ApplyConfig_LoadFailsThenRollbackSucceeds
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.070ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [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:11:14 [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:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[2.952ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[0.768ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.781ms] [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:11:14 [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:11:14 [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:11:14 [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:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[0.840ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[2.333ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.755ms] [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:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.072ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [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:11:14 [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
|
||
--- PASS: TestManager_ApplyConfig_RejectsWhenCerberusEnabledWithoutAdminWhitelist (0.01s)
|
||
=== RUN TestManager_ApplyConfig_ValidateFails
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.052ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [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:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.039ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[0.960ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[0.808ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.848ms] [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:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.044ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.036ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[1.420ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[1.442ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:11:14 [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_ApplyConfig_RotateSnapshotsWarning_Stderr (0.02s)
|
||
=== RUN TestManager_ApplyConfig_PassesAdminWhitelistToGenerateConfig
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.106ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.168ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.267ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.174ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[2.114ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.997ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_PassesAdminWhitelistToGenerateConfig (0.03s)
|
||
=== RUN TestManager_ApplyConfig_PassesRuleSetsToGenerateConfig
|
||
|
||
2025/12/03 13:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.045ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.220ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.878ms] [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.070ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.072ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.076ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.136ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.214ms] [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_IncludesWAFHandlerWithRuleset1789396734/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_IncludesWAFHandlerWithRuleset1789396734/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_IncludesWAFHandlerWithRuleset1789396734/001/data"}}
|
||
--- PASS: TestManager_ApplyConfig_IncludesWAFHandlerWithRuleset (0.02s)
|
||
=== RUN TestManager_ApplyConfig_RulesetWriteFileFailure
|
||
|
||
2025/12/03 13:11:14 [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:11:14 [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:11:14 [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:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.821ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_RulesetWriteFileFailure (0.02s)
|
||
=== RUN TestManager_ApplyConfig_RulesetDirMkdirFailure
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.117ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.068ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [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:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.738ms] [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:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.105ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [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
|
||
|
||
2025/12/03 13:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[1.900ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[0.677ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.716ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.041ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.044ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [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:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[0.028ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:11:14 [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
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.074ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.097ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[0.040ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[0.031ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.035ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_ReappliesOnFlagChange (0.02s)
|
||
=== RUN TestManager_ApplyConfig_PrependsSecRuleEngineDirectives
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.079ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.167ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.077ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [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
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.897ms] [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.046ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.081ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.582ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.071ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.115ms] [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:11:14 [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:11:14 [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:11:14 [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:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.767ms] [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:11:14 [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:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.058ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.094ms] [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:11:14 [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:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.089ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.073ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.847ms] [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:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.055ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.080ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.715ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_RulesetFileCleanup (0.03s)
|
||
=== RUN TestManager_ApplyConfig_RulesetCleanupReadDirError
|
||
|
||
2025/12/03 13:11:14 [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:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.058ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.060ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:14 [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
|
||
|
||
2025/12/03 13:11:14 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.006ms] [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:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.049ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:15 [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:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.058ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.082ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.918ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_RulesetCleanupRemoveError (0.03s)
|
||
=== RUN TestManager_ApplyConfig_WAFModeBlockExplicit
|
||
|
||
2025/12/03 13:11:15 [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:11:15 [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:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.074ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.073ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[2.915ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_WAFModeBlockExplicit (0.03s)
|
||
=== RUN TestManager_ApplyConfig
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.046ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.083ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.139ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:15 [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:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[2.659ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[1.458ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.059ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig (0.03s)
|
||
=== RUN TestManager_ApplyConfig_Failure
|
||
|
||
2025/12/03 13:11:15 [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:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.045ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.043ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.039ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[0.829ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[2.151ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[7.645ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_ApplyConfig_Failure (0.03s)
|
||
=== RUN TestManager_Ping
|
||
--- PASS: TestManager_Ping (0.00s)
|
||
=== RUN TestManager_GetCurrentConfig
|
||
--- PASS: TestManager_GetCurrentConfig (0.00s)
|
||
=== RUN TestManager_RotateSnapshots
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.062ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.068ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:15 [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:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.045ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[4.836ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[1.322ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[1.434ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_RotateSnapshots (0.03s)
|
||
=== RUN TestManager_Rollback_Success
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.050ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.315ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.077ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:15 [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:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[0.892ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[1.782ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.664ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
|
||
2025/12/03 13:11:16 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.058ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:16 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.058ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:16 [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:11:16 [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
|
||
|
||
2025/12/03 13:11:16 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[0.033ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:16 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[0.019ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:11:16 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.032ms] [34;1m[rows:0][0m SELECT * FROM `security_decisions` ORDER BY created_at desc
|
||
--- PASS: TestManager_Rollback_Success (1.13s)
|
||
=== RUN TestManager_ApplyConfig_DBError
|
||
|
||
2025/12/03 13:11:16 [31;1m/projects/Charon/backend/internal/caddy/manager.go:61 [35;1msql: database is closed
|
||
[0m[33m[0.039ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
--- PASS: TestManager_ApplyConfig_DBError (0.02s)
|
||
=== RUN TestManager_ApplyConfig_ValidationError
|
||
|
||
2025/12/03 13:11:16 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.083ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:16 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.186ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:16 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.127ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:16 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.112ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.acl.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:16 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[1.353ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:16 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[1.655ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:11:16 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.771ms] [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:11:16 [31;1m/projects/Charon/backend/internal/caddy/manager.go:68 [35;1mrecord not found
|
||
[0m[33m[0.070ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.acme_email" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:16 [31;1m/projects/Charon/backend/internal/caddy/manager.go:75 [35;1mrecord not found
|
||
[0m[33m[0.050ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "caddy.ssl_provider" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:16 [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:11:16 [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:11:16 [31;1m/projects/Charon/backend/internal/caddy/manager.go:85 [35;1mno such table: security_configs
|
||
[0m[33m[1.034ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:16 [31;1m/projects/Charon/backend/internal/caddy/manager.go:93 [35;1mno such table: security_rule_sets
|
||
[0m[33m[3.607ms] [34;1m[rows:0][0m SELECT * FROM `security_rule_sets`
|
||
|
||
2025/12/03 13:11:16 [31;1m/projects/Charon/backend/internal/caddy/manager.go:100 [35;1mno such table: security_decisions
|
||
[0m[33m[0.951ms] [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:11:16 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.078ms] [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:11:16 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.215ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:16 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.087ms] [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:11:16 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.097ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:16 [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
|
||
--- PASS: TestComputeEffectiveFlags_DB_CrowdSecUnknown (0.00s)
|
||
=== RUN TestComputeEffectiveFlags_DB_CrowdSecLocal
|
||
|
||
2025/12/03 13:11:16 [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:11:16 [31;1m/projects/Charon/backend/internal/caddy/manager.go:371 [35;1mrecord not found
|
||
[0m[33m[0.109ms] [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:11:16 [31;1m/projects/Charon/backend/internal/caddy/manager.go:366 [35;1mrecord not found
|
||
[0m[33m[0.093ms] [34;1m[rows:0][0m SELECT * FROM `settings` WHERE key = "security.cerberus.enabled" ORDER BY `settings`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:16 [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
|
||
--- 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
|
||
coverage: 100.0% of statements
|
||
ok github.com/Wikid82/charon/backend/internal/caddy 2.923s coverage: 100.0% of statements
|
||
=== 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.00s)
|
||
=== RUN TestIsEnabled_DBSettingFalse
|
||
--- PASS: TestIsEnabled_DBSettingFalse (0.00s)
|
||
=== 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:11:15Z" level=warning msg="WAF blocked request" decision=block mode=block path=/ query="q=<script>" source=waf
|
||
--- PASS: TestMiddleware_WAFBlocksPayload (0.01s)
|
||
=== 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:11:15 [31;1m/projects/Charon/backend/internal/cerberus/cerberus.go:51 [35;1mrecord not found
|
||
[0m[33m[0.097ms] [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:11:15Z" 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.00s)
|
||
=== RUN TestCerberus_IsEnabled_ConfigTrue
|
||
--- PASS: TestCerberus_IsEnabled_ConfigTrue (0.00s)
|
||
=== RUN TestCerberus_IsEnabled_DBSetting
|
||
--- PASS: TestCerberus_IsEnabled_DBSetting (0.00s)
|
||
=== RUN TestCerberus_IsEnabled_Disabled
|
||
cerberus_test.go:47: cfg: {CrowdSecMode: CrowdSecAPIURL: CrowdSecAPIKey: WAFMode: RateLimitMode: ACLMode: CerberusEnabled:false}
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/cerberus/cerberus.go:51 [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
|
||
cerberus_test.go:48: IsEnabled() -> false
|
||
|
||
2025/12/03 13:11:15 [31;1m/projects/Charon/backend/internal/cerberus/cerberus.go:51 [35;1mrecord not found
|
||
[0m[33m[0.072ms] [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
|
||
coverage: 100.0% of statements
|
||
ok github.com/Wikid82/charon/backend/internal/cerberus 1.113s coverage: 100.0% of statements
|
||
=== 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
|
||
coverage: 91.7% of statements
|
||
ok github.com/Wikid82/charon/backend/internal/config 1.024s coverage: 91.7% of statements
|
||
=== RUN TestConnect
|
||
--- PASS: TestConnect (0.00s)
|
||
=== RUN TestConnect_Error
|
||
--- PASS: TestConnect_Error (0.00s)
|
||
PASS
|
||
coverage: 100.0% of statements
|
||
ok github.com/Wikid82/charon/backend/internal/database 1.039s coverage: 100.0% of statements
|
||
=== 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.80s)
|
||
=== RUN TestUser_CheckPassword
|
||
--- PASS: TestUser_CheckPassword (2.32s)
|
||
=== RUN TestNotificationProvider_BeforeCreate
|
||
--- PASS: TestNotificationProvider_BeforeCreate (0.00s)
|
||
=== RUN TestUptimeMonitor_BeforeCreate
|
||
--- PASS: TestUptimeMonitor_BeforeCreate (0.00s)
|
||
PASS
|
||
coverage: 97.2% of statements
|
||
ok github.com/Wikid82/charon/backend/internal/models 4.248s coverage: 97.2% of statements
|
||
=== RUN TestNewRouter
|
||
[GIN] 2025/12/03 - 13:11:18 | 200 | 15.280782ms | | GET "/"
|
||
--- PASS: TestNewRouter (0.02s)
|
||
PASS
|
||
coverage: 90.9% of statements
|
||
ok github.com/Wikid82/charon/backend/internal/server 1.046s coverage: 90.9% of statements
|
||
=== 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:11:20 [31;1m/projects/Charon/backend/internal/services/access_list_service.go:91 [35;1mrecord not found
|
||
[0m[33m[0.136ms] [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:11:20 [31;1m/projects/Charon/backend/internal/services/access_list_service.go:103 [35;1mrecord not found
|
||
[0m[33m[0.094ms] [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.01s)
|
||
--- 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.01s)
|
||
--- 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:11:20 [31;1m/projects/Charon/backend/internal/services/access_list_service.go:91 [35;1mrecord not found
|
||
[0m[33m[0.110ms] [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:11:20 [31;1m/projects/Charon/backend/internal/services/access_list_service.go:91 [35;1mrecord not found
|
||
[0m[33m[0.071ms] [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.01s)
|
||
--- 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.01s)
|
||
--- 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.52s)
|
||
=== RUN TestAuthService_Login
|
||
--- PASS: TestAuthService_Login (5.31s)
|
||
=== RUN TestAuthService_ChangePassword
|
||
|
||
2025/12/03 13:11:31 [31;1m/projects/Charon/backend/internal/services/auth_service.go:113 [35;1mrecord not found
|
||
[0m[33m[0.207ms] [34;1m[rows:0][0m SELECT * FROM `users` WHERE `users`.`id` = 999 ORDER BY `users`.`id` LIMIT 1
|
||
--- PASS: TestAuthService_ChangePassword (4.37s)
|
||
=== RUN TestAuthService_ValidateToken
|
||
--- PASS: TestAuthService_ValidateToken (1.53s)
|
||
=== RUN TestAuthService_GetUserByID
|
||
|
||
2025/12/03 13:11:33 [31;1m/projects/Charon/backend/internal/services/auth_service.go:147 [35;1mrecord not found
|
||
[0m[33m[0.084ms] [34;1m[rows:0][0m SELECT * FROM `users` WHERE `users`.`id` = 999 ORDER BY `users`.`id` LIMIT 1
|
||
--- PASS: TestAuthService_GetUserByID (0.74s)
|
||
=== RUN TestBackupService_CreateAndList
|
||
--- PASS: TestBackupService_CreateAndList (0.01s)
|
||
=== 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:11:33Z" level=info msg="Starting scheduled backup"
|
||
time="2025-12-03T13:11:33Z" level=warning msg="Warning: could not backup caddy dir" error="lstat /tmp/TestBackupService_RunScheduledBackup1679362788/001/data/caddy: no such file or directory"
|
||
time="2025-12-03T13:11:33Z" level=info msg="Scheduled backup created" backup=backup_2025-12-03_13-11-33.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:11:33Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/cert-test1819787141/certificates
|
||
|
||
2025/12/03 13:11:33 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:123 [35;1mrecord not found
|
||
[0m[33m[0.224ms] [34;1m[rows:0][0m SELECT * FROM `ssl_certificates` WHERE domains = "example.com" ORDER BY `ssl_certificates`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:33 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[4.394ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:11:33Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
time="2025-12-03T13:11:33Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/cert-test1819787141/certificates
|
||
|
||
2025/12/03 13:11:33 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:123 [35;1mrecord not found
|
||
[0m[33m[0.102ms] [34;1m[rows:0][0m SELECT * FROM `ssl_certificates` WHERE domains = "expired.com" ORDER BY `ssl_certificates`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:33 [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:11:33Z" level=info msg="CertificateService: disk sync complete" count=2
|
||
--- PASS: TestCertificateService_GetCertificateInfo (0.15s)
|
||
=== RUN TestCertificateService_UploadAndDelete
|
||
time="2025-12-03T13:11:34Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_UploadAndDelete577779087/001/certificates
|
||
time="2025-12-03T13:11:34Z" level=info msg="CertificateService: cert directory does not exist" certRoot=/tmp/TestCertificateService_UploadAndDelete577779087/001/certificates
|
||
time="2025-12-03T13:11:34Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
time="2025-12-03T13:11:34Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_UploadAndDelete577779087/001/certificates
|
||
time="2025-12-03T13:11:34Z" level=info msg="CertificateService: cert directory does not exist" certRoot=/tmp/TestCertificateService_UploadAndDelete577779087/001/certificates
|
||
time="2025-12-03T13:11:34Z" level=info msg="CertificateService: disk sync complete" count=0
|
||
--- PASS: TestCertificateService_UploadAndDelete (0.17s)
|
||
=== RUN TestCertificateService_Persistence
|
||
time="2025-12-03T13:11:34Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_Persistence4135381056/001/certificates
|
||
|
||
2025/12/03 13:11:34 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:123 [35;1mrecord not found
|
||
[0m[33m[0.203ms] [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:11:34Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
time="2025-12-03T13:11:34Z" level=info msg="CertificateService: deleting ACME cert file" path=/tmp/TestCertificateService_Persistence4135381056/001/certificates/acme-v02.api.letsencrypt.org-directory/persist.example.com/persist.example.com.crt
|
||
time="2025-12-03T13:11:34Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_Persistence4135381056/001/certificates
|
||
time="2025-12-03T13:11:34Z" level=info msg="CertificateService: disk sync complete" count=0
|
||
|
||
2025/12/03 13:11:34 [31;1m/projects/Charon/backend/internal/services/certificate_service_test.go:267 [35;1mrecord not found
|
||
[0m[33m[0.107ms] [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.11s)
|
||
=== 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.40s)
|
||
--- 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.09s)
|
||
--- PASS: TestCertificateService_UploadCertificate_Errors/valid_certificate_with_name (0.15s)
|
||
--- PASS: TestCertificateService_UploadCertificate_Errors/expired_certificate_can_be_uploaded (0.16s)
|
||
=== RUN TestCertificateService_ListCertificates_EdgeCases
|
||
=== RUN TestCertificateService_ListCertificates_EdgeCases/empty_certificates_directory
|
||
time="2025-12-03T13:11:34Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_ListCertificates_EdgeCasesempty_certific3506643386/001/certificates
|
||
time="2025-12-03T13:11:34Z" level=info msg="CertificateService: cert directory does not exist" certRoot=/tmp/TestCertificateService_ListCertificates_EdgeCasesempty_certific3506643386/001/certificates
|
||
|
||
2025/12/03 13:11:34 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[2.665ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:11:34Z" level=info msg="CertificateService: disk sync complete" count=0
|
||
=== RUN TestCertificateService_ListCertificates_EdgeCases/certificates_directory_does_not_exist
|
||
time="2025-12-03T13:11:34Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_ListCertificates_EdgeCasescertificates_d2048929609/001/does-not-exist/certificates
|
||
time="2025-12-03T13:11:34Z" level=info msg="CertificateService: cert directory does not exist" certRoot=/tmp/TestCertificateService_ListCertificates_EdgeCasescertificates_d2048929609/001/does-not-exist/certificates
|
||
|
||
2025/12/03 13:11:34 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[3.792ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:11:34Z" level=info msg="CertificateService: disk sync complete" count=0
|
||
=== RUN TestCertificateService_ListCertificates_EdgeCases/invalid_certificate_files_are_skipped
|
||
time="2025-12-03T13:11:34Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_ListCertificates_EdgeCasesinvalid_certif2881955154/001/certificates
|
||
|
||
2025/12/03 13:11:34 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[2.256ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:11:34Z" level=info msg="CertificateService: disk sync complete" count=0
|
||
=== RUN TestCertificateService_ListCertificates_EdgeCases/multiple_certificates_from_different_providers
|
||
time="2025-12-03T13:11:34Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_ListCertificates_EdgeCasesmultiple_certi106121119/001/certificates
|
||
|
||
2025/12/03 13:11:34 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:123 [35;1mrecord not found
|
||
[0m[33m[0.126ms] [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:11:34 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[3.223ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:11:34Z" level=info msg="CertificateService: disk sync complete" count=2
|
||
--- PASS: TestCertificateService_ListCertificates_EdgeCases (0.15s)
|
||
--- 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.13s)
|
||
=== RUN TestCertificateService_DeleteCertificate_Errors
|
||
=== RUN TestCertificateService_DeleteCertificate_Errors/delete_non-existent_certificate
|
||
|
||
2025/12/03 13:11:34 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:410 [35;1mrecord not found
|
||
[0m[33m[0.085ms] [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:11:34 [31;1m/projects/Charon/backend/internal/services/certificate_service_test.go:462 [35;1mrecord not found
|
||
[0m[33m[0.099ms] [34;1m[rows:0][0m SELECT * FROM `ssl_certificates` WHERE id = 1 ORDER BY `ssl_certificates`.`id` LIMIT 1
|
||
--- PASS: TestCertificateService_DeleteCertificate_Errors (0.07s)
|
||
--- PASS: TestCertificateService_DeleteCertificate_Errors/delete_non-existent_certificate (0.00s)
|
||
--- PASS: TestCertificateService_DeleteCertificate_Errors/delete_certificate_when_file_already_removed (0.06s)
|
||
=== RUN TestCertificateService_StagingCertificates
|
||
=== RUN TestCertificateService_StagingCertificates/staging_certificate_detected_by_path
|
||
time="2025-12-03T13:11:34Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_StagingCertificatesstaging_certificate_d726373456/001/certificates
|
||
|
||
2025/12/03 13:11:34 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:123 [35;1mrecord not found
|
||
[0m[33m[0.221ms] [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:11:34 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[3.138ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:11:34Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
=== RUN TestCertificateService_StagingCertificates/production_cert_preferred_over_staging
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_StagingCertificatesproduction_cert_prefe3854489670/001/certificates
|
||
|
||
2025/12/03 13:11:35 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:123 [35;1mrecord not found
|
||
[0m[33m[0.172ms] [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:11:35 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[3.100ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
=== RUN TestCertificateService_StagingCertificates/upgrade_from_staging_to_production
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_StagingCertificatesupgrade_from_staging_342927476/001/certificates
|
||
|
||
2025/12/03 13:11:35 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:123 [35;1mrecord not found
|
||
[0m[33m[0.214ms] [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:11:35 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[4.785ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_StagingCertificatesupgrade_from_staging_342927476/001/certificates
|
||
|
||
2025/12/03 13:11:35 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[0.027ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
--- PASS: TestCertificateService_StagingCertificates (0.39s)
|
||
--- PASS: TestCertificateService_StagingCertificates/staging_certificate_detected_by_path (0.08s)
|
||
--- PASS: TestCertificateService_StagingCertificates/production_cert_preferred_over_staging (0.28s)
|
||
--- PASS: TestCertificateService_StagingCertificates/upgrade_from_staging_to_production (0.03s)
|
||
=== RUN TestCertificateService_ExpiringStatus
|
||
=== RUN TestCertificateService_ExpiringStatus/certificate_expiring_within_30_days
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_ExpiringStatuscertificate_expiring_withi1207211675/001/certificates
|
||
|
||
2025/12/03 13:11:35 [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 = "expiring.example.com" ORDER BY `ssl_certificates`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:35 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[3.218ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
=== RUN TestCertificateService_ExpiringStatus/certificate_valid_for_more_than_30_days
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_ExpiringStatuscertificate_valid_for_more1055223402/001/certificates
|
||
|
||
2025/12/03 13:11:35 [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 = "valid-long.example.com" ORDER BY `ssl_certificates`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:35 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[2.845ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
=== RUN TestCertificateService_ExpiringStatus/staging_cert_always_untrusted_even_if_expiring
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_ExpiringStatusstaging_cert_always_untrus1183873335/001/certificates
|
||
|
||
2025/12/03 13:11:35 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:123 [35;1mrecord not found
|
||
[0m[33m[0.190ms] [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:11:35 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[3.834ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
--- PASS: TestCertificateService_ExpiringStatus (0.29s)
|
||
--- PASS: TestCertificateService_ExpiringStatus/certificate_expiring_within_30_days (0.16s)
|
||
--- PASS: TestCertificateService_ExpiringStatus/certificate_valid_for_more_than_30_days (0.08s)
|
||
--- PASS: TestCertificateService_ExpiringStatus/staging_cert_always_untrusted_even_if_expiring (0.05s)
|
||
=== RUN TestCertificateService_StaleCertCleanup
|
||
=== RUN TestCertificateService_StaleCertCleanup/stale_DB_entries_removed_when_file_deleted
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_StaleCertCleanupstale_DB_entries_removed2284661980/001/certificates
|
||
|
||
2025/12/03 13:11:35 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:123 [35;1mrecord not found
|
||
[0m[33m[0.200ms] [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:11:35 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[3.035ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_StaleCertCleanupstale_DB_entries_removed2284661980/001/certificates
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: removed stale DB cert" domain=stale.example.com
|
||
|
||
2025/12/03 13:11:35 [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:11:35Z" level=info msg="CertificateService: disk sync complete" count=0
|
||
--- PASS: TestCertificateService_StaleCertCleanup (0.04s)
|
||
--- PASS: TestCertificateService_StaleCertCleanup/stale_DB_entries_removed_when_file_deleted (0.04s)
|
||
=== RUN TestCertificateService_CertificateWithSANs
|
||
=== RUN TestCertificateService_CertificateWithSANs/certificate_with_SANs_uses_joined_domains
|
||
--- PASS: TestCertificateService_CertificateWithSANs (0.24s)
|
||
--- PASS: TestCertificateService_CertificateWithSANs/certificate_with_SANs_uses_joined_domains (0.24s)
|
||
=== RUN TestCertificateService_CacheBehavior
|
||
=== RUN TestCertificateService_CacheBehavior/cache_returns_consistent_results
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_CacheBehaviorcache_returns_consistent_re1671282508/001/certificates
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: cert directory does not exist" certRoot=/tmp/TestCertificateService_CacheBehaviorcache_returns_consistent_re1671282508/001/certificates
|
||
|
||
2025/12/03 13:11:35 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[4.300ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
=== RUN TestCertificateService_CacheBehavior/invalidate_cache_forces_resync
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_CacheBehaviorinvalidate_cache_forces_res3113149211/001/certificates
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: cert directory does not exist" certRoot=/tmp/TestCertificateService_CacheBehaviorinvalidate_cache_forces_res3113149211/001/certificates
|
||
|
||
2025/12/03 13:11:35 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[3.079ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_CacheBehaviorinvalidate_cache_forces_res3113149211/001/certificates
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: cert directory does not exist" certRoot=/tmp/TestCertificateService_CacheBehaviorinvalidate_cache_forces_res3113149211/001/certificates
|
||
|
||
2025/12/03 13:11:35 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[0.036ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: disk sync complete" count=2
|
||
=== RUN TestCertificateService_CacheBehavior/refreshCacheFromDB_used_when_directory_nonexistent
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: scanning cert directory" certRoot=/tmp/TestCertificateService_CacheBehaviorrefreshCacheFromDB_used_whe187893614/001/nonexistent/certificates
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: cert directory does not exist" certRoot=/tmp/TestCertificateService_CacheBehaviorrefreshCacheFromDB_used_whe187893614/001/nonexistent/certificates
|
||
|
||
2025/12/03 13:11:35 [31;1m/projects/Charon/backend/internal/services/certificate_service.go:232 [35;1mno such table: proxy_hosts
|
||
[0m[33m[3.226ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
time="2025-12-03T13:11:35Z" level=info msg="CertificateService: disk sync complete" count=1
|
||
--- PASS: TestCertificateService_CacheBehavior (0.18s)
|
||
--- PASS: TestCertificateService_CacheBehavior/cache_returns_consistent_results (0.12s)
|
||
--- PASS: TestCertificateService_CacheBehavior/invalidate_cache_forces_resync (0.05s)
|
||
--- 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.01s)
|
||
=== RUN TestNotificationService_MarkAsRead
|
||
--- PASS: TestNotificationService_MarkAsRead (0.00s)
|
||
=== RUN TestNotificationService_MarkAllAsRead
|
||
--- PASS: TestNotificationService_MarkAllAsRead (0.01s)
|
||
=== RUN TestNotificationService_Providers
|
||
--- PASS: TestNotificationService_Providers (0.00s)
|
||
=== 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.10s)
|
||
=== 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:11:36Z" 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.23s)
|
||
--- PASS: TestNotificationService_SendExternal_EdgeCases/no_enabled_providers (0.06s)
|
||
--- 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.00s)
|
||
--- 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:11:36 [31;1m/projects/Charon/backend/internal/services/proxyhost_service.go:102 [35;1mrecord not found
|
||
[0m[33m[0.058ms] [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:11:36 [31;1m/projects/Charon/backend/internal/services/remoteserver_service.go:68 [35;1mrecord not found
|
||
[0m[33m[0.070ms] [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:11:36 [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: TestSecurityService_Upsert_ValidateAdminWhitelist (0.01s)
|
||
=== RUN TestSecurityService_BreakGlassTokenLifecycle
|
||
|
||
2025/12/03 13:11:36 [31;1m/projects/Charon/backend/internal/services/security_service.go:73 [35;1mrecord not found
|
||
[0m[33m[0.100ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
--- PASS: TestSecurityService_BreakGlassTokenLifecycle (2.28s)
|
||
=== RUN TestSecurityService_LogDecisionAndList
|
||
--- PASS: TestSecurityService_LogDecisionAndList (0.01s)
|
||
=== RUN TestSecurityService_UpsertRuleSet
|
||
|
||
2025/12/03 13:11:38 [31;1m/projects/Charon/backend/internal/services/security_service.go:204 [35;1mrecord not found
|
||
[0m[33m[0.073ms] [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.01s)
|
||
=== RUN TestSecurityService_DeleteRuleSet
|
||
|
||
2025/12/03 13:11:38 [31;1m/projects/Charon/backend/internal/services/security_service.go:204 [35;1mrecord not found
|
||
[0m[33m[0.063ms] [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:11:38 [31;1m/projects/Charon/backend/internal/services/security_service.go:73 [35;1mrecord not found
|
||
[0m[33m[0.104ms] [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:11:39 [31;1m/projects/Charon/backend/internal/services/security_service.go:113 [35;1mrecord not found
|
||
[0m[33m[0.252ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "newconfig" ORDER BY `security_configs`.`id` LIMIT 1
|
||
--- PASS: TestSecurityService_GenerateBreakGlassToken_NewConfig (1.48s)
|
||
=== RUN TestSecurityService_GenerateBreakGlassToken_UpdateExisting
|
||
|
||
2025/12/03 13:11:40 [31;1m/projects/Charon/backend/internal/services/security_service.go:73 [35;1mrecord not found
|
||
[0m[33m[0.075ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
--- PASS: TestSecurityService_GenerateBreakGlassToken_UpdateExisting (3.03s)
|
||
=== RUN TestSecurityService_VerifyBreakGlassToken_NoConfig
|
||
|
||
2025/12/03 13:11:43 [31;1m/projects/Charon/backend/internal/services/security_service.go:134 [35;1mrecord not found
|
||
[0m[33m[0.104ms] [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:11:43 [31;1m/projects/Charon/backend/internal/services/security_service.go:73 [35;1mrecord not found
|
||
[0m[33m[0.069ms] [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:11:44 [31;1m/projects/Charon/backend/internal/services/security_service.go:113 [35;1mrecord not found
|
||
[0m[33m[0.301ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
--- PASS: TestSecurityService_VerifyBreakGlassToken_WrongToken (4.51s)
|
||
=== RUN TestSecurityService_Get_NotFound
|
||
|
||
2025/12/03 13:11:47 [31;1m/projects/Charon/backend/internal/services/security_service.go:37 [35;1mrecord not found
|
||
[0m[33m[0.089ms] [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:11:48 [31;1m/projects/Charon/backend/internal/services/security_service.go:113 [35;1mrecord not found
|
||
[0m[33m[0.263ms] [34;1m[rows:0][0m SELECT * FROM `security_configs` WHERE name = "default" ORDER BY `security_configs`.`id` LIMIT 1
|
||
--- PASS: TestSecurityService_Upsert_PreserveBreakGlassHash (1.45s)
|
||
=== RUN TestUpdateService_CheckForUpdates
|
||
--- PASS: TestUpdateService_CheckForUpdates (0.00s)
|
||
=== RUN TestUptimeService_CheckAll
|
||
|
||
2025/12/03 13:11:49 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.092ms] [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:11:49 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.067ms] [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:11:49Z" level=info msg="Created UptimeHost" host=127.0.0.1 host_id=b47523ad-3736-4c67-af64-2ff24542c990
|
||
|
||
2025/12/03 13:11:49 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.094ms] [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:11:50Z" level=info msg="Host status changed" host_ip=127.0.0.1 host_name="127.0.0.1:38665" message="dial tcp 127.0.0.1:35887: connect: connection refused" new=down old=up
|
||
time="2025-12-03T13:11:50Z" level=info msg="Sent consolidated DOWN notification" host_name="127.0.0.1:38665" service_count=1
|
||
--- PASS: TestUptimeService_CheckAll (1.76s)
|
||
=== 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:11:51 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:819 [35;1mrecord not found
|
||
[0m[33m[0.113ms] [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:11:51 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:104 [35;1msql: database is closed
|
||
[0m[33m[0.044ms] [34;1m[rows:0][0m SELECT * FROM `proxy_hosts`
|
||
=== RUN TestUptimeService_SyncMonitors_Errors/creates_monitors_for_new_hosts
|
||
|
||
2025/12/03 13:11:51 [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 = 1 ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:11:51 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.081ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:11:51Z" level=info msg="Created UptimeHost" host= host_id=6a8a576a-1d4f-4fd5-9822-e456b8c97928
|
||
|
||
2025/12/03 13:11:51 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.082ms] [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:11:51 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.105ms] [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:11:51 [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 = "" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:11:51Z" level=info msg="Created UptimeHost" host= host_id=d222e11c-5c90-4628-a513-4960160b47bf
|
||
--- 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:11:51 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.098ms] [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:11:51 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.088ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:11:51Z" level=info msg="Created UptimeHost" host= host_id=e4fa9292-1b78-4797-a58b-73f8e8ffce2c
|
||
=== RUN TestUptimeService_SyncMonitors_NameSync/uses_domain_name_when_proxy_host_name_is_empty
|
||
|
||
2025/12/03 13:11:51 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.185ms] [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:11:51 [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 = "" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:11:51Z" level=info msg="Created UptimeHost" host= host_id=8d71ddc2-cbd2-4baf-a9d3-3f21031bb1e9
|
||
=== RUN TestUptimeService_SyncMonitors_NameSync/updates_monitor_name_when_host_name_becomes_empty
|
||
|
||
2025/12/03 13:11:51 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.109ms] [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:11:51 [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 = "" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:11:51Z" level=info msg="Created UptimeHost" host= host_id=3f2cbd62-8566-4a28-a9dd-acb629e6a5ff
|
||
--- 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:11:51 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.084ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "backend.local" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:11:51Z" level=info msg="Created UptimeHost" host=backend.local host_id=4a61273f-cc56-49c3-9a94-8e5368d47ee2
|
||
time="2025-12-03T13:11:51Z" 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:11:51 [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 = "backend.local" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:11:51Z" level=info msg="Created UptimeHost" host=backend.local host_id=b707300c-90ce-43ca-b624-f52f3fdf5b66
|
||
--- PASS: TestUptimeService_SyncMonitors_TCPMigration (0.05s)
|
||
--- PASS: TestUptimeService_SyncMonitors_TCPMigration/migrates_TCP_monitor_to_HTTP_for_public_URL (0.02s)
|
||
--- 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:11:51 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.125ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:11:51Z" level=info msg="Created UptimeHost" host= host_id=8d9823f2-1ed9-46c6-a2f1-bf320d77da7e
|
||
time="2025-12-03T13:11:51Z" 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:11:51 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.145ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:11:51Z" level=info msg="Created UptimeHost" host= host_id=955e0e1f-ef88-4b37-94af-c2e9447d755f
|
||
--- PASS: TestUptimeService_SyncMonitors_HTTPSUpgrade (0.06s)
|
||
--- 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.03s)
|
||
=== RUN TestUptimeService_SyncMonitors_RemoteServers
|
||
=== RUN TestUptimeService_SyncMonitors_RemoteServers/creates_monitor_for_new_remote_server
|
||
|
||
2025/12/03 13:11:51 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:209 [35;1mrecord not found
|
||
[0m[33m[0.126ms] [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:11:51 [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 = "backend.local" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:11:51Z" level=info msg="Created UptimeHost" host=backend.local host_id=3950db08-12c4-4abc-842b-03f67757ac4f
|
||
=== RUN TestUptimeService_SyncMonitors_RemoteServers/creates_TCP_monitor_for_remote_server_without_scheme
|
||
|
||
2025/12/03 13:11:51 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:209 [35;1mrecord not found
|
||
[0m[33m[0.098ms] [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:11:51 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.088ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "tcp.backend" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:11:51Z" level=info msg="Created UptimeHost" host=tcp.backend host_id=46fc9394-3cf2-42ef-a9e0-06d7ab6c417e
|
||
=== RUN TestUptimeService_SyncMonitors_RemoteServers/syncs_remote_server_name_changes
|
||
|
||
2025/12/03 13:11:51 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:209 [35;1mrecord not found
|
||
[0m[33m[0.091ms] [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:11:51 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.097ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "server.local" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:11:51Z" level=info msg="Created UptimeHost" host=server.local host_id=d497f41a-452f-45f9-83f9-c8a5ce0f1464
|
||
=== RUN TestUptimeService_SyncMonitors_RemoteServers/syncs_remote_server_URL_changes
|
||
|
||
2025/12/03 13:11:51 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:209 [35;1mrecord not found
|
||
[0m[33m[0.120ms] [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:11:51 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.088ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "old.host" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:11:51Z" level=info msg="Created UptimeHost" host=old.host host_id=6d6c3e5e-b6ed-47b1-b783-adc842de1245
|
||
=== RUN TestUptimeService_SyncMonitors_RemoteServers/syncs_remote_server_enabled_status
|
||
|
||
2025/12/03 13:11:51 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:209 [35;1mrecord not found
|
||
[0m[33m[0.141ms] [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:11:51 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.085ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "server.local" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:11:51Z" level=info msg="Created UptimeHost" host=server.local host_id=96d81828-357e-49a9-a0a4-5c86a6216cbd
|
||
=== RUN TestUptimeService_SyncMonitors_RemoteServers/syncs_scheme_change_from_TCP_to_HTTPS
|
||
|
||
2025/12/03 13:11:51 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:209 [35;1mrecord not found
|
||
[0m[33m[0.101ms] [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:11:51 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.094ms] [34;1m[rows:0][0m SELECT * FROM `uptime_hosts` WHERE host = "server.local" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:11:51Z" level=info msg="Created UptimeHost" host=server.local host_id=3f5d66db-72d9-4f97-8713-2dec93284202
|
||
--- PASS: TestUptimeService_SyncMonitors_RemoteServers (0.18s)
|
||
--- 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.03s)
|
||
--- 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:11:51 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.084ms] [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:11:51 [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 = "192.0.2.1" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:11:51Z" level=info msg="Created UptimeHost" host=192.0.2.1 host_id=d78b31df-a04a-472a-a02e-f4e180ffa71a
|
||
--- PASS: TestUptimeService_CheckAll_Errors (7.23s)
|
||
--- PASS: TestUptimeService_CheckAll_Errors/handles_empty_monitor_list (0.07s)
|
||
--- PASS: TestUptimeService_CheckAll_Errors/orphan_monitors_don't_prevent_check_execution (0.13s)
|
||
--- PASS: TestUptimeService_CheckAll_Errors/handles_timeout_for_slow_hosts (7.03s)
|
||
=== 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:11:59 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.106ms] [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:11:59 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.081ms] [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:11:59Z" level=info msg="Created UptimeHost" host=127.0.0.1 host_id=b6f20121-9b36-4a27-8156-69701d6be994
|
||
=== RUN TestUptimeService_CheckMonitor_EdgeCases/https_URL_without_valid_certificate
|
||
--- PASS: TestUptimeService_CheckMonitor_EdgeCases (3.95s)
|
||
--- PASS: TestUptimeService_CheckMonitor_EdgeCases/invalid_URL_format (0.54s)
|
||
--- 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.08s)
|
||
--- PASS: TestUptimeService_GetMonitorHistory_EdgeCases/non-existent_monitor (0.03s)
|
||
--- PASS: TestUptimeService_GetMonitorHistory_EdgeCases/limit_parameter_respected (0.05s)
|
||
=== RUN TestUptimeService_ListMonitors_EdgeCases
|
||
=== RUN TestUptimeService_ListMonitors_EdgeCases/empty_database
|
||
=== RUN TestUptimeService_ListMonitors_EdgeCases/monitors_with_associated_proxy_hosts
|
||
--- PASS: TestUptimeService_ListMonitors_EdgeCases (0.09s)
|
||
--- PASS: TestUptimeService_ListMonitors_EdgeCases/empty_database (0.04s)
|
||
--- PASS: TestUptimeService_ListMonitors_EdgeCases/monitors_with_associated_proxy_hosts (0.04s)
|
||
=== 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:12:03 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:833 [35;1mrecord not found
|
||
[0m[33m[0.319ms] [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.16s)
|
||
--- PASS: TestUptimeService_UpdateMonitor/update_max_retries (0.04s)
|
||
--- PASS: TestUptimeService_UpdateMonitor/update_interval (0.03s)
|
||
--- PASS: TestUptimeService_UpdateMonitor/update_non-existent_monitor (0.05s)
|
||
--- PASS: TestUptimeService_UpdateMonitor/update_multiple_fields (0.04s)
|
||
=== RUN TestUptimeService_NotificationBatching
|
||
=== RUN TestUptimeService_NotificationBatching/batches_multiple_service_failures_on_same_host
|
||
time="2025-12-03T13:12:03Z" level=info msg="Created pending notification batch" host="Test Server" monitor="Service A"
|
||
time="2025-12-03T13:12:03Z" level=info msg="Added to pending notification batch" count=2 host="Test Server" monitor="Service B"
|
||
time="2025-12-03T13:12:03Z" level=info msg="Added to pending notification batch" count=3 host="Test Server" monitor="Service C"
|
||
time="2025-12-03T13:12:03Z" 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:12:03Z" level=info msg="Created pending notification batch" host="Single Service Host" monitor="Lonely Service"
|
||
time="2025-12-03T13:12:03Z" level=info msg="Sent batched DOWN notification" count=1 host="Single Service Host"
|
||
--- PASS: TestUptimeService_NotificationBatching (0.08s)
|
||
--- PASS: TestUptimeService_NotificationBatching/batches_multiple_service_failures_on_same_host (0.04s)
|
||
--- PASS: TestUptimeService_NotificationBatching/single_service_down_gets_individual_notification (0.04s)
|
||
=== RUN TestUptimeService_HostLevelCheck
|
||
=== RUN TestUptimeService_HostLevelCheck/creates_uptime_host_during_sync
|
||
|
||
2025/12/03 13:12:03 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.192ms] [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:12:03 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:284 [35;1mrecord not found
|
||
[0m[33m[0.134ms] [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:12:03Z" level=info msg="Created UptimeHost" host=10.0.0.50 host_id=9da3b524-3df6-4ed8-9094-cee6ee4c3432
|
||
=== RUN TestUptimeService_HostLevelCheck/groups_multiple_services_on_same_host
|
||
|
||
2025/12/03 13:12:03 [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:12:03 [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 = "10.0.0.100" ORDER BY `uptime_hosts`.`id` LIMIT 1
|
||
time="2025-12-03T13:12:03Z" level=info msg="Created UptimeHost" host=10.0.0.100 host_id=42f967ec-1f0d-43bb-b251-b0de76a08ff5
|
||
|
||
2025/12/03 13:12:03 [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 = 2 ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
|
||
2025/12/03 13:12:03 [31;1m/projects/Charon/backend/internal/services/uptime_service.go:110 [35;1mrecord not found
|
||
[0m[33m[0.115ms] [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.09s)
|
||
--- PASS: TestUptimeService_HostLevelCheck/creates_uptime_host_during_sync (0.04s)
|
||
--- PASS: TestUptimeService_HostLevelCheck/groups_multiple_services_on_same_host (0.05s)
|
||
=== RUN TestFormatDuration
|
||
--- PASS: TestFormatDuration (0.00s)
|
||
=== RUN TestUpdateMonitorEnabled_Unit
|
||
--- PASS: TestUpdateMonitorEnabled_Unit (0.01s)
|
||
=== RUN TestDeleteMonitorDeletesHeartbeats_Unit
|
||
|
||
2025/12/03 13:12:03 [31;1m/projects/Charon/backend/internal/services/uptime_service_unit_test.go:52 [35;1mrecord not found
|
||
[0m[33m[0.105ms] [34;1m[rows:0][0m SELECT * FROM `uptime_monitors` WHERE id = "992d32f7-13ee-45ad-afa2-5eae99660191" ORDER BY `uptime_monitors`.`id` LIMIT 1
|
||
--- PASS: TestDeleteMonitorDeletesHeartbeats_Unit (0.02s)
|
||
PASS
|
||
coverage: 80.7% of statements
|
||
ok github.com/Wikid82/charon/backend/internal/services 44.295s coverage: 80.7% of statements
|
||
? github.com/Wikid82/charon/backend/internal/trace [no test files]
|
||
=== RUN TestFull
|
||
--- PASS: TestFull (0.00s)
|
||
PASS
|
||
coverage: 100.0% of statements
|
||
ok github.com/Wikid82/charon/backend/internal/version 1.022s coverage: 100.0% of statements
|