(t *testing.T)
| 1506 | } |
| 1507 | |
| 1508 | func TestCompleteJob(t *testing.T) { |
| 1509 | t.Parallel() |
| 1510 | ctx := context.Background() |
| 1511 | t.Run("NotFound", func(t *testing.T) { |
| 1512 | t.Parallel() |
| 1513 | srv, _, _, _ := setup(t, false, nil) |
| 1514 | _, err := srv.CompleteJob(ctx, &proto.CompletedJob{ |
| 1515 | JobId: "hello", |
| 1516 | }) |
| 1517 | require.ErrorContains(t, err, "invalid UUID") |
| 1518 | |
| 1519 | _, err = srv.CompleteJob(ctx, &proto.CompletedJob{ |
| 1520 | JobId: uuid.NewString(), |
| 1521 | }) |
| 1522 | require.ErrorContains(t, err, "no rows in result set") |
| 1523 | }) |
| 1524 | // This test prevents runners from updating jobs they don't own! |
| 1525 | t.Run("NotOwner", func(t *testing.T) { |
| 1526 | t.Parallel() |
| 1527 | srv, db, _, pd := setup(t, false, nil) |
| 1528 | user := dbgen.User(t, db, database.User{}) |
| 1529 | version := dbgen.TemplateVersion(t, db, database.TemplateVersion{ |
| 1530 | CreatedBy: user.ID, |
| 1531 | OrganizationID: pd.OrganizationID, |
| 1532 | JobID: uuid.New(), |
| 1533 | }) |
| 1534 | job, err := db.InsertProvisionerJob(ctx, database.InsertProvisionerJobParams{ |
| 1535 | ID: version.JobID, |
| 1536 | Provisioner: database.ProvisionerTypeEcho, |
| 1537 | StorageMethod: database.ProvisionerStorageMethodFile, |
| 1538 | Type: database.ProvisionerJobTypeTemplateVersionImport, |
| 1539 | OrganizationID: pd.OrganizationID, |
| 1540 | Input: must(json.Marshal(provisionerdserver.TemplateVersionDryRunJob{ |
| 1541 | TemplateVersionID: version.ID, |
| 1542 | })), |
| 1543 | Tags: pd.Tags, |
| 1544 | }) |
| 1545 | require.NoError(t, err) |
| 1546 | _, err = db.AcquireProvisionerJob(ctx, database.AcquireProvisionerJobParams{ |
| 1547 | OrganizationID: pd.OrganizationID, |
| 1548 | WorkerID: uuid.NullUUID{ |
| 1549 | UUID: uuid.New(), |
| 1550 | Valid: true, |
| 1551 | }, |
| 1552 | Types: []database.ProvisionerType{database.ProvisionerTypeEcho}, |
| 1553 | StartedAt: sql.NullTime{ |
| 1554 | Time: dbtime.Now(), |
| 1555 | Valid: true, |
| 1556 | }, |
| 1557 | ProvisionerTags: must(json.Marshal(job.Tags)), |
| 1558 | }) |
| 1559 | require.NoError(t, err) |
| 1560 | _, err = srv.CompleteJob(ctx, &proto.CompletedJob{ |
| 1561 | JobId: job.ID.String(), |
| 1562 | }) |
| 1563 | require.ErrorContains(t, err, "you don't own this job") |
| 1564 | }) |
| 1565 |
nothing calls this directly
no test coverage detected