(t *testing.T)
| 26 | ) |
| 27 | |
| 28 | func TestProvisioners_Golden(t *testing.T) { |
| 29 | t.Parallel() |
| 30 | |
| 31 | // Replace UUIDs with predictable values for golden files. |
| 32 | replace := make(map[string]string) |
| 33 | updateReplaceUUIDs := func(coderdAPI *coderd.API) { |
| 34 | systemCtx := dbauthz.AsSystemRestricted(context.Background()) |
| 35 | provisioners, err := coderdAPI.Database.GetProvisionerDaemons(systemCtx) |
| 36 | require.NoError(t, err) |
| 37 | slices.SortFunc(provisioners, func(a, b database.ProvisionerDaemon) int { |
| 38 | return cmp.Or( |
| 39 | a.CreatedAt.Compare(b.CreatedAt), |
| 40 | bytes.Compare(a.ID[:], b.ID[:]), |
| 41 | ) |
| 42 | }) |
| 43 | pIdx := 0 |
| 44 | for _, p := range provisioners { |
| 45 | if _, ok := replace[p.ID.String()]; !ok { |
| 46 | replace[p.ID.String()] = fmt.Sprintf("00000000-0000-0000-aaaa-%012d", pIdx) |
| 47 | pIdx++ |
| 48 | } |
| 49 | } |
| 50 | jobs, err := coderdAPI.Database.GetProvisionerJobsCreatedAfter(systemCtx, time.Time{}) |
| 51 | require.NoError(t, err) |
| 52 | slices.SortFunc(jobs, func(a, b database.ProvisionerJob) int { |
| 53 | return cmp.Or( |
| 54 | a.CreatedAt.Compare(b.CreatedAt), |
| 55 | bytes.Compare(a.ID[:], b.ID[:]), |
| 56 | ) |
| 57 | }) |
| 58 | jIdx := 0 |
| 59 | for _, j := range jobs { |
| 60 | if _, ok := replace[j.ID.String()]; !ok { |
| 61 | replace[j.ID.String()] = fmt.Sprintf("00000000-0000-0000-bbbb-%012d", jIdx) |
| 62 | jIdx++ |
| 63 | } |
| 64 | } |
| 65 | } |
| 66 | |
| 67 | db, ps := dbtestutil.NewDB(t, |
| 68 | dbtestutil.WithDumpOnFailure(), |
| 69 | //nolint:gocritic // Use UTC for consistent timestamp length in golden files. |
| 70 | dbtestutil.WithTimezone("UTC"), |
| 71 | ) |
| 72 | client, _, coderdAPI := coderdtest.NewWithAPI(t, &coderdtest.Options{ |
| 73 | IncludeProvisionerDaemon: false, |
| 74 | Database: db, |
| 75 | Pubsub: ps, |
| 76 | }) |
| 77 | owner := coderdtest.CreateFirstUser(t, client) |
| 78 | templateAdminClient, _ := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID, rbac.ScopedRoleOrgTemplateAdmin(owner.OrganizationID)) |
| 79 | _, member := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID) |
| 80 | |
| 81 | // Create initial resources with a running provisioner. |
| 82 | firstProvisioner := coderdtest.NewTaggedProvisionerDaemon(t, coderdAPI, "default-provisioner", map[string]string{"owner": "", "scope": "organization"}) |
| 83 | t.Cleanup(func() { _ = firstProvisioner.Close() }) |
| 84 | version := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, completeWithAgent()) |
| 85 | version = coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID) |
nothing calls this directly
no test coverage detected