test: fix flaky TestPostWorkspacesByOrganization/Create (#9931)

This commit is contained in:
Marcin Tojek 2023-09-29 15:06:21 +02:00 committed by GitHub
parent c0705ec40e
commit 87ebe6c2c2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 26 additions and 15 deletions

View File

@ -473,7 +473,7 @@ func TestPostWorkspacesByOrganization(t *testing.T) {
require.Equal(t, http.StatusConflict, apiErr.StatusCode())
})
t.Run("Create", func(t *testing.T) {
t.Run("CreateWithAuditLogs", func(t *testing.T) {
t.Parallel()
auditor := audit.NewMock()
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true, Auditor: auditor})
@ -483,16 +483,10 @@ func TestPostWorkspacesByOrganization(t *testing.T) {
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
workspace := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID)
coderdtest.AwaitWorkspaceBuildJob(t, client, workspace.LatestBuild.ID)
require.Eventually(t, func() bool {
if len(auditor.AuditLogs()) < 6 {
return false
}
return auditor.AuditLogs()[4].Action == database.AuditActionCreate
}, testutil.WaitMedium, testutil.IntervalFast)
verifyAuditWorkspaceCreated(t, auditor, workspace.Name)
})
t.Run("CreateFromVersion", func(t *testing.T) {
t.Run("CreateFromVersionWithAuditLogs", func(t *testing.T) {
t.Parallel()
auditor := audit.NewMock()
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true, Auditor: auditor})
@ -513,12 +507,7 @@ func TestPostWorkspacesByOrganization(t *testing.T) {
require.Equal(t, testWorkspaceBuild.TemplateVersionID, versionTest.ID)
require.Equal(t, defaultWorkspaceBuild.TemplateVersionID, versionDefault.ID)
require.Eventually(t, func() bool {
if len(auditor.AuditLogs()) < 6 {
return false
}
return auditor.AuditLogs()[4].Action == database.AuditActionCreate
}, testutil.WaitMedium, testutil.IntervalFast)
verifyAuditWorkspaceCreated(t, auditor, defaultWorkspace.Name)
})
t.Run("InvalidCombinationOfTemplateAndTemplateVersion", func(t *testing.T) {
@ -2919,3 +2908,25 @@ func TestWorkspaceDormant(t *testing.T) {
coderdtest.MustTransitionWorkspace(t, client, workspace.ID, database.WorkspaceTransitionStop, database.WorkspaceTransitionStart)
})
}
func verifyAuditWorkspaceCreated(t *testing.T, auditor *audit.MockAuditor, workspaceName string) {
var auditLogs []database.AuditLog
ok := assert.Eventually(t, func() bool {
auditLogs = auditor.AuditLogs()
for _, auditLog := range auditLogs {
if auditLog.Action == database.AuditActionCreate &&
auditLog.ResourceType == database.ResourceTypeWorkspace &&
auditLog.ResourceTarget == workspaceName {
return true
}
}
return false
}, testutil.WaitMedium, testutil.IntervalFast)
if !ok {
for i, auditLog := range auditLogs {
t.Logf("%d. Audit: ID=%s action=%s resourceID=%s resourceType=%s resourceTarget=%s", i+1, auditLog.ID, auditLog.Action, auditLog.ResourceID, auditLog.ResourceType, auditLog.ResourceTarget)
}
}
}