| Test | Status | Time |
|---|---|---|
| TestSessionMiddleware_ValidCookie | PASS | 0.000s |
| TestSessionMiddleware_NoCookie | PASS | 0.000s |
| TestSessionMiddleware_InvalidCookie | PASS | 0.000s |
| TestSessionMiddleware_IdleExpired | PASS | 0.000s |
| TestCSRFMiddleware_AllowsGETWithoutOrigin | PASS | 0.000s |
| TestCSRFMiddleware_AllowsPOSTWithCorrectOrigin | PASS | 0.000s |
| TestCSRFMiddleware_BlocksPOSTWithWrongOrigin | PASS | 0.000s |
| TestCSRFMiddleware_AllowsPOSTWithoutOrigin | PASS | 0.000s |
| TestCSRFMiddleware_AllowsPUTWithCorrectOrigin | PASS | 0.000s |
| TestCSRFMiddleware_BlocksDELETEWithWrongOrigin | PASS | 0.000s |
| TestCSRFMiddleware_AllowsGETWithWrongOrigin | PASS | 0.000s |
| TestCSRFMiddleware_EmptyOriginAllowsAll | PASS | 0.030s |
| TestAuthMiddlewareValidToken | PASS | 0.000s |
| TestAuthMiddlewareInvalidToken | PASS | 0.000s |
| TestAuthMiddlewareMissingHeader | PASS | 0.000s |
| Test | Status | Time |
|---|---|---|
| TestMemoryStore_CreateAndGet | PASS | 0.000s |
| TestMemoryStore_GetNotFound | PASS | 0.000s |
| TestMemoryStore_Delete | PASS | 0.000s |
| TestMemoryStore_TTLExpiry | PASS | 0.020s |
| TestMemoryStore_SetStateAndGetAndDeleteState | PASS | 0.000s |
| TestMemoryStore_SetRevokedJTIAndIsJTIRevoked | PASS | 0.000s |
| TestMemoryStore_StateExpiry | PASS | 0.020s |
| Test | Status | Time |
|---|---|---|
| TestEncryptDecrypt_RoundTrip | PASS | 0.000s |
| TestDecrypt_InvalidCiphertext | PASS | 0.000s |
| TestDecrypt_LazyMigration_PlaintextPassthrough | PASS | 0.000s |
| TestEncrypt_Deterministic_Nope | PASS | 0.000s |
| TestHMACSHA256_KnownVector | PASS | 0.000s |
| TestHMACSHA256_EmptyMessage | PASS | 0.000s |
| TestVerifyHMAC_Valid | PASS | 0.000s |
| TestVerifyHMAC_Invalid | PASS | 0.000s |
| TestVerifyHMAC_WrongSecret | PASS | 0.000s |
| Test | Status | Time |
|---|---|---|
| TestMigrateUpDown | PASS | 2.750s |
| Test | Status | Time |
|---|---|---|
| TestCheckHealth_Connected | SKIP | 0.000s |
| TestCheckHealth_Disconnected | SKIP | 0.000s |
| TestClone_PublicRepo | SKIP | 0.000s |
| TestClone_NonExistentRepo | SKIP | 0.000s |
| TestClone_WithToken | SKIP | 0.000s |
| TestClone_CustomDirectory | SKIP | 0.000s |
| TestCreateBranch_Success | SKIP | 0.000s |
| TestCheckHealth_Timeout | PASS | 2.000s |
| TestCheckHealth_WithToken | PASS | 0.000s |
| TestBuildAuthURL_EmptyToken | PASS | 0.000s |
| TestBuildAuthURL_ExistingCredentialsNotOverridden | PASS | 0.000s |
| TestCreateBranch_EmptyString | PASS | 0.000s |
| TestCreateBranch_MainProtected | PASS | 0.000s |
| TestCreateBranch_MasterProtected | PASS | 0.000s |
| TestCreateBranch_GuardMessage | PASS | 0.000s |
| Test | Status | Time |
|---|---|---|
| TestAuthHandler_Init | PASS | 0.000s |
| TestAuthHandler_Init_NoReturnURL | PASS | 0.000s |
| TestAuthHandler_Init_AbsoluteReturnURL | PASS | 0.000s |
| TestAuthHandler_Session_NoCookie | PASS | 0.000s |
| TestAuthHandler_Session_WithSession | PASS | 0.000s |
| TestAuthHandler_Logout | PASS | 0.000s |
| TestAuthHandler_Logout_Idempotent | PASS | 0.000s |
| TestAuthHandler_Logout_WithIDToken | PASS | 0.000s |
| TestUpsertUser_InsertNewUser | PASS | 4.670s |
| TestUpsertUser_UpdateExisting | PASS | 1.060s |
| TestUpsertUser_NullImage | PASS | 1.030s |
| TestCreateBotAccount_Success | PASS | 1.790s |
| TestCreateBotAccount_TokenEncryptedInDB | PASS | 9.660s |
| TestCreateBotAccount_MissingName | PASS | 9.060s |
| TestCreateBotAccount_NameTooShort | PASS | 0.770s |
| TestCreateBotAccount_MissingToken | PASS | 0.740s |
| TestGetBotAccount_Success | PASS | 0.640s |
| TestGetBotAccount_NotFound | PASS | 0.630s |
| TestListBotAccounts | PASS | 0.630s |
| TestUpdateBotAccount_Success | PASS | 0.620s |
| TestUpdateBotAccount_NewToken | PASS | 0.730s |
| TestUpdateBotAccount_EmptyTokenDoesNotOverwrite | PASS | 0.940s |
| TestDeleteBotAccount_NotInUse | PASS | 0.680s |
| TestDeleteBotAccount_InUse | PASS | 0.790s |
| TestBotAccountEndpoints_NoSession | PASS | 0.710s |
| TestListBotAccounts_EmptyList | PASS | 7.080s |
| TestCreateBotAccount_DescriptionMax | PASS | 5.680s |
| TestHealth | PASS | 6.250s |
| TestReady_Success | PASS | 13.570s |
| TestReady_DBDown | PASS | 0.230s |
| TestCheck_Success | PASS | 5.440s |
| TestCheck_DBDown | PASS | 0.080s |
| TestReady_ContextTimeout | PASS | 1.130s |
| TestCheck_NilRequest | PASS | 0.600s |
| TestUserHealth_NoAuth | PASS | 0.650s |
| TestUserHealth_ApiKey | PASS | 0.600s |
| TestUserHealth_SessionCookie | PASS | 0.630s |
| TestUserHealth_ExpiredSession | PASS | 0.610s |
| TestUserHealth_InvalidApiKey | PASS | 0.750s |
| TestCreateLlmConfig_Success | PASS | 0.730s |
| TestCreateLlmConfig_ApiKeyEncryptedInDB | PASS | 0.580s |
| TestCreateLlmConfig_MissingName | PASS | 0.570s |
| TestCreateLlmConfig_NameTooShort | PASS | 0.560s |
| TestCreateLlmConfig_MissingApiKey | PASS | 0.590s |
| TestCreateLlmConfig_DuplicateName | PASS | 0.560s |
| TestGetLlmConfig_Success | PASS | 0.980s |
| TestGetLlmConfig_NotFound | PASS | 0.630s |
| TestListLlmConfigs | PASS | 0.590s |
| TestListLlmConfigs_EmptyList | PASS | 0.600s |
| TestUpdateLlmConfig_Success | PASS | 0.610s |
| TestUpdateLlmConfig_NewApiKey | PASS | 0.610s |
| TestUpdateLlmConfig_EmptyApiKeyDoesNotOverwrite | PASS | 0.590s |
| TestUpdateLlmConfig_MissingApiKeyDoesNotOverwrite | PASS | 0.610s |
| TestUpdateLlmConfig_DuplicateName | PASS | 1.040s |
| TestUpdateLlmConfig_NotFound | PASS | 7.850s |
| TestDeleteLlmConfig_Success | PASS | 5.940s |
| TestDeleteLlmConfig_NotFound | PASS | 9.120s |
| TestLlmConfigEndpoints_NoSession | PASS | 4.580s |
| TestCreatePipeline_Success | PASS | 0.980s |
| TestCreatePipeline_WithBaseBranch | PASS | 0.820s |
| TestCreatePipeline_DefaultBaseBranch | PASS | 0.570s |
| TestUpdatePipeline_BaseBranch | PASS | 0.600s |
| TestCreatePipeline_MissingName | PASS | 0.560s |
| TestCreatePipeline_InvalidProjectId | PASS | 0.680s |
| TestGetPipeline_Success | PASS | 0.550s |
| TestGetPipeline_NotFound | PASS | 0.540s |
| TestListPipelinesByProject | PASS | 0.640s |
| TestListPipelinesByProject_NotFound | PASS | 0.520s |
| TestListPipelines_FilterEnabled | PASS | 0.540s |
| TestUpdatePipeline_Success | PASS | 0.570s |
| TestUpdatePipeline_NotFound | PASS | 0.530s |
| TestDeletePipeline_Success | PASS | 0.620s |
| TestDeletePipeline_NotFound | PASS | 0.660s |
| TestGetProjectDetail_IncludesPipelines | PASS | 0.700s |
| TestCreatePipeline_WithoutOutputBranch | PASS | 1.660s |
| TestCreatePipeline_WithEmptyOutputBranch | PASS | 0.760s |
| TestCreatePipeline_WithOutputBranch | PASS | 0.850s |
| TestCreatePipeline_WithConfig | PASS | 0.780s |
| TestCreatePipeline_ConfigValidation/array_rejected | PASS | 0.770s |
| TestCreatePipeline_ConfigValidation/string_rejected | PASS | 4.490s |
| TestCreatePipeline_ConfigValidation/null_accepted | PASS | 0.750s |
| TestCreatePipeline_ConfigValidation/object_accepted | PASS | 0.750s |
| TestCreatePipeline_ConfigValidation | PASS | 6.760s |
| TestUpdatePipeline_NullifyOutputBranch | PASS | 0.780s |
| TestUpdatePipeline_Config | PASS | 0.770s |
| TestCreateProject_Success | PASS | 0.790s |
| TestCreateProject_MissingName | PASS | 0.760s |
| TestCreateProject_TooShortName | PASS | 0.770s |
| TestGetProject_Success | PASS | 0.700s |
| TestGetProject_NotFound | PASS | 0.630s |
| TestListProjects_DefaultPagination | PASS | 0.580s |
| TestListProjects_SortByNameAsc | PASS | 0.560s |
| TestListProjects_InvalidSortField | PASS | 0.620s |
| TestUpdateProject_Success | PASS | 0.660s |
| TestUpdateProject_NotFound | PASS | 0.800s |
| TestDeleteProject_Success | PASS | 0.910s |
| TestDeleteProject_NotFound | PASS | 0.690s |
| TestProjectEndpoints_NoSession | PASS | 0.710s |
| TestProjectHandler_Create_WithConfig | PASS | 0.740s |
| TestProjectHandler_Create_WithSecrets | PASS | 0.770s |
| TestProjectHandler_Create_ConfigValidation/empty_object | PASS | 0.000s |
| TestProjectHandler_Create_ConfigValidation/array_rejected | PASS | 0.000s |
| TestProjectHandler_Create_ConfigValidation/string_rejected | PASS | 0.000s |
| TestProjectHandler_Create_ConfigValidation/number_rejected | PASS | 0.000s |
| TestProjectHandler_Create_ConfigValidation/null_accepted | PASS | 0.000s |
| TestProjectHandler_Create_ConfigValidation | PASS | 0.750s |
| TestProjectHandler_Update_Config | PASS | 1.020s |
| TestProjectHandler_GetDecryptedSecrets | PASS | 5.040s |
| TestProjectHandler_Get_StripsSecretsEncrypted | PASS | 7.590s |
| TestGetDecryptedSecrets_NoSecrets | PASS | 6.380s |
| TestProjectHandler_Update_Secrets | PASS | 5.070s |
| TestCreateRepository_Success | PASS | 4.650s |
| TestCreateRepository_MissingBotAccountID | PASS | 0.960s |
| TestCreateRepository_BotAccountNotFound | PASS | 4.160s |
| TestCreateRepository_InvalidName | PASS | 1.230s |
| TestCreateRepository_MissingName | PASS | 0.830s |
| TestGetRepository_Success | PASS | 0.780s |
| TestGetRepository_NotFound | PASS | 2.070s |
| TestListRepositories | PASS | 0.870s |
| TestGetRepository_HasBotAccountID | PASS | 2.520s |
| TestListRepository_HasBotAccountID | PASS | 3.090s |
| TestUpdateRepository_Success | PASS | 0.920s |
| TestUpdateRepository_ChangeBotAccountID | PASS | 0.730s |
| TestUpdateRepository_NotFound | PASS | 0.830s |
| TestDeleteRepository_Success | PASS | 1.130s |
| TestDeleteRepository_NotFound | PASS | 1.140s |
| TestCheckRepositoryHealth_Connected | PASS | 2.100s |
| TestCheckRepositoryHealth_Disconnected | PASS | 7.680s |
| TestCheckRepositoryHealth_UpdatesDB | PASS | 3.410s |
| TestCheckRepositoryHealth_NotFound | PASS | 3.450s |
| TestRepositoryEndpoints_NoSession | PASS | 3.210s |
| TestCreateRun_Success | PASS | 4.580s |
| TestCreateRun_MissingPipelineID | PASS | 2.740s |
| TestCreateRun_InvalidPipelineID | PASS | 3.690s |
| TestCreateRun_InvalidJSON | PASS | 3.140s |
| TestCreateRun_InvalidSourceType | PASS | 3.880s |
| TestGetRun_Success | PASS | 2.620s |
| TestGetRun_NotFound | PASS | 1.320s |
| TestListRuns_ReturnsDefaultPagination | PASS | 3.330s |
| TestListRuns_CustomLimitAndOffset | PASS | 4.280s |
| TestListRuns_LimitValidation/default_when_missing | PASS | 0.010s |
| TestListRuns_LimitValidation/valid_limit | PASS | 0.000s |
| TestListRuns_LimitValidation/max_limit_capped | PASS | 0.000s |
| TestListRuns_LimitValidation/negative_limit_uses_default | PASS | 0.000s |
| TestListRuns_LimitValidation/zero_limit_uses_default | PASS | 0.000s |
| TestListRuns_LimitValidation/invalid_format_uses_default | PASS | 0.000s |
| TestListRuns_LimitValidation | PASS | 4.090s |
| TestListRuns_FilterByPhase | PASS | 3.040s |
| TestListRuns_FilterByMultiplePhases | PASS | 2.380s |
| TestListRuns_FilterByInvalidPhase | PASS | 4.120s |
| TestListRuns_FilterProjectID | PASS | 3.960s |
| TestListRuns_FilterPipelineID | PASS | 7.730s |
| TestListRuns_FilterSourceType | PASS | 3.860s |
| TestListRuns_FilterCreatedAfter | PASS | 4.210s |
| TestListRuns_FilterCreatedBefore | PASS | 3.910s |
| TestListRuns_FilterSource | PASS | 4.230s |
| TestListRuns_SortByStartedAt | PASS | 11.450s |
| TestListRuns_FilterMultipleCriteria | PASS | 8.280s |
| TestListRuns_SortByCreatedAtDesc | PASS | 4.340s |
| TestListRuns_SortByUpdatedAtAsc | PASS | 1.800s |
| TestListRuns_InvalidSortField | PASS | 1.560s |
| TestListRuns_CursorPagination | PASS | 2.910s |
| TestUpdateRun_PhaseOnly | PASS | 3.410s |
| TestUpdateRun_Completed | PASS | 1.020s |
| TestUpdateRun_Failed | PASS | 7.390s |
| TestUpdateRun_NotFound | PASS | 5.000s |
| TestUpdateRun_InvalidPhase | PASS | 5.180s |
| TestUpdateRun_NoAuth | PASS | 3.090s |
| TestIdempotency_NoKey | PASS | 2.480s |
| TestIdempotency_SameKeySameBody | PASS | 4.380s |
| TestIdempotency_SameKeyDifferentBody | PASS | 3.960s |
| TestHubPublishAndReceive | PASS | 0.000s |
| TestHubFilterPhaseMatch | PASS | 0.000s |
| TestHubFilterPhaseMismatch | PASS | 0.200s |
| TestHubFilterSourceType | PASS | 0.200s |
| TestSubscribeSSE_NoAuth | PASS | 7.090s |
| TestSubscribeSSE_InvalidAPIKey | PASS | 3.960s |
| TestRunCreationPublishesSSEEvent | PASS | 2.470s |
| TestSubscribeSSE_Heartbeat | PASS | 2.720s |
| TestGitHubPR_ValidHMAC_CreatesRun | PASS | 2.760s |
| TestGitHubPR_ValidHMAC_GiteaSignature | PASS | 2.110s |
| TestGitHubPR_MissingSignature | PASS | 3.040s |
| TestGitHubPR_InvalidSignature | PASS | 2.360s |
| TestGitHubPR_NonPullRequestEvent | PASS | 3.030s |
| TestGitHubPR_DisabledPipeline | PASS | 4.320s |
| TestGitHubPR_PipelineNotFound | PASS | 2.670s |
| TestGitHubPR_NoWebhookSecret | PASS | 2.440s |
| TestGitHubPR_IgnoredAction | PASS | 2.360s |
| TestGitHubPR_InvalidPipelineID | PASS | 3.790s |
| TestVikunjaWebhook_Success | PASS | 3.620s |
| TestVikunjaWebhook_MissingEvent | PASS | 3.010s |
| TestVikunjaWebhook_NoProjectConfigured | PASS | 2.810s |
| TestVikunjaWebhook_ProjectNotFound | PASS | 2.790s |
| TestVikunjaWebhook_NoPipeline | PASS | 2.760s |
| TestVikunjaWebhook_InvalidJSON | PASS | 3.300s |
| Test | Status | Time |
|---|---|---|
| TestLlmConfig_MarshalJSON_ExcludesApiKeyEncrypted | PASS | 0.000s |
| TestLlmConfig_MarshalJSON_IncludesVisibleFields | PASS | 0.000s |
| TestCreateLlmConfigRequest_UnmarshalJSON | PASS | 0.000s |
| TestCreateLlmConfigRequest_MarshalJSON_IncludesApiKey | PASS | 0.000s |
| TestUpdateLlmConfigRequest_UnmarshalJSON_AllFields | PASS | 0.000s |
| TestUpdateLlmConfigRequest_UnmarshalJSON_PartialUpdate | PASS | 0.000s |
| TestUpdateLlmConfigRequest_MarshalJSON_OmitsApiKey | PASS | 0.000s |
| TestPipeline_MarshalJSON_IncludesConfig | PASS | 0.000s |
| TestPipeline_MarshalJSON_OutputBranchNullWhenNil | PASS | 0.000s |
| TestPipeline_MarshalJSON_OutputBranchValueWhenSet | PASS | 0.000s |
| TestPipeline_UnmarshalJSON_OutputBranchNullUnmarshalsToNil | PASS | 0.000s |
| TestCreatePipelineRequest_AcceptsConfigAndNullableOutputBranch | PASS | 0.000s |
| TestCreatePipelineRequest_OutputBranchValueWhenSet | PASS | 0.000s |
| TestUpdatePipelineRequest_AcceptsConfig | PASS | 0.000s |
| TestPipeline_ConfigNilMarshalsToNull | PASS | 0.000s |
| TestProject_MarshalJSON_IncludesConfig | PASS | 0.000s |
| TestProject_MarshalJSON_ExcludesSecretsEncrypted | PASS | 0.000s |
| TestProject_UnmarshalJSON_AcceptsConfig | PASS | 0.000s |
| TestProject_UnmarshalJSON_SecretsEncryptedNotFromJSON | PASS | 0.000s |
| TestCreateProjectRequest_AcceptsConfigAndSecrets | PASS | 0.000s |
| TestCreateProjectRequest_MarshalJSON_ConfigAndSecrets | PASS | 0.000s |
| TestUpdateProjectRequest_AcceptsConfigAndSecrets | PASS | 0.000s |
| TestProject_ConfigNilMarshalsToNull | PASS | 0.000s |
| TestPRMetadata_MarshalJSON | PASS | 0.000s |
| TestPRMetadata_UnmarshalJSON | PASS | 0.000s |
| TestSourceMetadata_WithPR_MarshalJSON | PASS | 0.000s |
| TestSourceMetadata_WithoutPR_MarshalJSON | PASS | 0.000s |
| TestSourceMetadata_PRNil_OmitsFromJSON | PASS | 0.000s |
| Test | Status | Time |
|---|---|---|
| TestCheckOne_Connected | PASS | 0.860s |
| TestCheckOne_Disconnected | PASS | 0.710s |
| TestCheckOne_UpdatesDBStatus | PASS | 0.890s |
| TestCheckOne_UpdatesLastCheckedAt | PASS | 0.720s |
| TestCheckOne_WithEncryptedToken | PASS | 0.640s |
| TestCheckAll_IteratesAllRepos | PASS | 1.160s |
| TestCheckOne_WithCorruptToken_ProceedsWithoutToken | PASS | 0.880s |
| TestStartStop_RunsUntilCancelled | PASS | 1.180s |
| TestStartStop_StopIsIdempotent | PASS | 0.730s |
| TestRunWatchdog_JobFailed_MarksRunFailed | PASS | 0.750s |
| TestRunWatchdog_JobSucceededWithoutCallback_MarksRunFailed | PASS | 0.710s |
| TestRunWatchdog_NoJobTimeout_MarksRunFailed | PASS | 0.700s |
| TestRunWatchdog_WithinTimeout_NotModified | PASS | 0.740s |
| TestRunWatchdog_AlreadyCompleted_NotModified | PASS | 0.700s |
| TestRunWatchdog_StartStop_Lifecycle | PASS | 0.750s |
| Test | Status | Time |
|---|---|---|
| TestMockExecutor_Start | PASS | 0.000s |
| TestMockExecutor_Interface | PASS | 0.000s |
| Test | Status | Time |
|---|---|---|
| TestBuildJobSpec_Name | PASS | 0.000s |
| TestBuildJobSpec_Namespace | PASS | 0.000s |
| TestBuildJobSpec_Labels | PASS | 0.000s |
| TestBuildJobSpec_BackoffLimit | PASS | 0.000s |
| TestBuildJobSpec_TTL | PASS | 0.000s |
| TestBuildJobSpec_RestartPolicy | PASS | 0.000s |
| TestBuildJobSpec_ServiceAccount | PASS | 0.000s |
| TestBuildJobSpec_ContainerImage | PASS | 0.000s |
| TestBuildJobSpec_ContainerName | PASS | 0.000s |
| TestBuildJobSpec_Command | PASS | 0.000s |
| TestBuildJobSpec_EnvVars | PASS | 0.000s |
| TestBuildJobSpec_SingleContainerOnly | PASS | 0.000s |
| TestStart_CreatesJob | PASS | 0.000s |
| TestStart_PREnvvars | PASS | 0.000s |
| TestStart_NoPR | PASS | 0.000s |
| TestStart_WithBotToken | PASS | 0.000s |
| TestStart_BranchProfileBaseBranch | PASS | 0.000s |
| TestStart_NoBotToken | PASS | 0.000s |
| TestStart_DecryptTokenError | PASS | 0.000s |
| TestStart_GiteaBaseURLParsing | PASS | 0.000s |
| TestStart_RepoURLNoHost | PASS | 0.000s |
| TestStart_LangfuseEnvVars | PASS | 0.000s |
| TestStart_DefaultNamespace | PASS | 0.000s |
| TestNewK8sExecutor_MissingEnvVars/missing_NAMESPACE | PASS | 0.000s |
| TestNewK8sExecutor_MissingEnvVars/missing_CORE_IMAGE | PASS | 0.000s |
| TestNewK8sExecutor_MissingEnvVars/missing_RELEASE_NAME | PASS | 0.000s |
| TestNewK8sExecutor_MissingEnvVars/missing_API_URL | PASS | 0.000s |
| TestNewK8sExecutor_MissingEnvVars/missing_ENGINE_API_KEY | PASS | 0.000s |
| TestNewK8sExecutor_MissingEnvVars | PASS | 0.000s |
| Test | Status | Time |
|---|