(t *testing.T)
| 1453 | } |
| 1454 | |
| 1455 | func TestTemplateVersionDryRun(t *testing.T) { |
| 1456 | t.Parallel() |
| 1457 | |
| 1458 | t.Run("OK", func(t *testing.T) { |
| 1459 | t.Parallel() |
| 1460 | |
| 1461 | resource := &proto.Resource{ |
| 1462 | Name: "cool-resource", |
| 1463 | Type: "cool_resource_type", |
| 1464 | } |
| 1465 | |
| 1466 | client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true}) |
| 1467 | user := coderdtest.CreateFirstUser(t, client) |
| 1468 | version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{ |
| 1469 | Parse: echo.ParseComplete, |
| 1470 | ProvisionGraph: []*proto.Response{ |
| 1471 | { |
| 1472 | Type: &proto.Response_Log{ |
| 1473 | Log: &proto.Log{}, |
| 1474 | }, |
| 1475 | }, |
| 1476 | { |
| 1477 | Type: &proto.Response_Graph{ |
| 1478 | Graph: &proto.GraphComplete{ |
| 1479 | Resources: []*proto.Resource{resource}, |
| 1480 | }, |
| 1481 | }, |
| 1482 | }, |
| 1483 | }, |
| 1484 | }) |
| 1485 | _ = coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID) |
| 1486 | |
| 1487 | ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong) |
| 1488 | defer cancel() |
| 1489 | |
| 1490 | // Create template version dry-run |
| 1491 | job, err := client.CreateTemplateVersionDryRun(ctx, version.ID, codersdk.CreateTemplateVersionDryRunRequest{}) |
| 1492 | require.NoError(t, err) |
| 1493 | |
| 1494 | // Fetch template version dry-run |
| 1495 | newJob, err := client.TemplateVersionDryRun(ctx, version.ID, job.ID) |
| 1496 | require.NoError(t, err) |
| 1497 | require.Equal(t, job.ID, newJob.ID) |
| 1498 | |
| 1499 | // Check matched provisioners |
| 1500 | matched, err := client.TemplateVersionDryRunMatchedProvisioners(ctx, version.ID, job.ID) |
| 1501 | require.NoError(t, err) |
| 1502 | require.Equal(t, 1, matched.Count) |
| 1503 | require.Equal(t, 1, matched.Available) |
| 1504 | require.NotZero(t, matched.MostRecentlySeen.Time) |
| 1505 | |
| 1506 | // Stream logs |
| 1507 | logs, closer, err := client.TemplateVersionDryRunLogsAfter(ctx, version.ID, job.ID, 0) |
| 1508 | require.NoError(t, err) |
| 1509 | defer closer.Close() |
| 1510 | |
| 1511 | logsDone := make(chan struct{}) |
| 1512 | go func() { |
nothing calls this directly
no test coverage detected