(t *testing.T)
| 861 | } |
| 862 | |
| 863 | func TestUpdateJob(t *testing.T) { |
| 864 | t.Parallel() |
| 865 | ctx := context.Background() |
| 866 | t.Run("NotFound", func(t *testing.T) { |
| 867 | t.Parallel() |
| 868 | srv, _, _, _ := setup(t, false, nil) |
| 869 | _, err := srv.UpdateJob(ctx, &proto.UpdateJobRequest{ |
| 870 | JobId: "hello", |
| 871 | }) |
| 872 | require.ErrorContains(t, err, "invalid UUID") |
| 873 | |
| 874 | _, err = srv.UpdateJob(ctx, &proto.UpdateJobRequest{ |
| 875 | JobId: uuid.NewString(), |
| 876 | }) |
| 877 | require.ErrorContains(t, err, "no rows in result set") |
| 878 | }) |
| 879 | t.Run("NotRunning", func(t *testing.T) { |
| 880 | t.Parallel() |
| 881 | srv, db, _, pd := setup(t, false, nil) |
| 882 | user := dbgen.User(t, db, database.User{}) |
| 883 | version := dbgen.TemplateVersion(t, db, database.TemplateVersion{ |
| 884 | CreatedBy: user.ID, |
| 885 | OrganizationID: pd.OrganizationID, |
| 886 | JobID: uuid.New(), |
| 887 | }) |
| 888 | job, err := db.InsertProvisionerJob(ctx, database.InsertProvisionerJobParams{ |
| 889 | ID: version.JobID, |
| 890 | Provisioner: database.ProvisionerTypeEcho, |
| 891 | StorageMethod: database.ProvisionerStorageMethodFile, |
| 892 | Type: database.ProvisionerJobTypeTemplateVersionDryRun, |
| 893 | Input: must(json.Marshal(provisionerdserver.TemplateVersionDryRunJob{ |
| 894 | TemplateVersionID: version.ID, |
| 895 | })), |
| 896 | OrganizationID: pd.OrganizationID, |
| 897 | Tags: pd.Tags, |
| 898 | }) |
| 899 | require.NoError(t, err) |
| 900 | _, err = srv.UpdateJob(ctx, &proto.UpdateJobRequest{ |
| 901 | JobId: job.ID.String(), |
| 902 | }) |
| 903 | require.ErrorContains(t, err, "job isn't running yet") |
| 904 | }) |
| 905 | // This test prevents runners from updating jobs they don't own! |
| 906 | t.Run("NotOwner", func(t *testing.T) { |
| 907 | t.Parallel() |
| 908 | srv, db, _, pd := setup(t, false, nil) |
| 909 | user := dbgen.User(t, db, database.User{}) |
| 910 | version := dbgen.TemplateVersion(t, db, database.TemplateVersion{ |
| 911 | CreatedBy: user.ID, |
| 912 | OrganizationID: pd.OrganizationID, |
| 913 | JobID: uuid.New(), |
| 914 | }) |
| 915 | job, err := db.InsertProvisionerJob(ctx, database.InsertProvisionerJobParams{ |
| 916 | ID: version.JobID, |
| 917 | Provisioner: database.ProvisionerTypeEcho, |
| 918 | StorageMethod: database.ProvisionerStorageMethodFile, |
| 919 | Type: database.ProvisionerJobTypeTemplateVersionDryRun, |
| 920 | Input: must(json.Marshal(provisionerdserver.TemplateVersionDryRunJob{ |
nothing calls this directly
no test coverage detected