(t *testing.T)
| 893 | } |
| 894 | |
| 895 | func TestPatchCancelTemplateVersion(t *testing.T) { |
| 896 | t.Parallel() |
| 897 | t.Run("AlreadyCompleted", func(t *testing.T) { |
| 898 | t.Parallel() |
| 899 | client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true}) |
| 900 | user := coderdtest.CreateFirstUser(t, client) |
| 901 | version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil) |
| 902 | coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID) |
| 903 | |
| 904 | ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong) |
| 905 | defer cancel() |
| 906 | |
| 907 | err := client.CancelTemplateVersion(ctx, version.ID) |
| 908 | var apiErr *codersdk.Error |
| 909 | require.ErrorAs(t, err, &apiErr) |
| 910 | require.Equal(t, http.StatusBadRequest, apiErr.StatusCode()) |
| 911 | }) |
| 912 | t.Run("AlreadyCanceled", func(t *testing.T) { |
| 913 | t.Parallel() |
| 914 | client := coderdtest.New(t, &coderdtest.Options{ |
| 915 | IncludeProvisionerDaemon: true, |
| 916 | }) |
| 917 | user := coderdtest.CreateFirstUser(t, client) |
| 918 | version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{ |
| 919 | Parse: echo.ParseComplete, |
| 920 | ProvisionPlan: []*proto.Response{{ |
| 921 | Type: &proto.Response_Log{ |
| 922 | Log: &proto.Log{}, |
| 923 | }, |
| 924 | }}, |
| 925 | }) |
| 926 | |
| 927 | ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong) |
| 928 | defer cancel() |
| 929 | |
| 930 | coderdtest.AwaitTemplateVersionJobRunning(t, client, version.ID) |
| 931 | err := client.CancelTemplateVersion(ctx, version.ID) |
| 932 | require.NoError(t, err) |
| 933 | err = client.CancelTemplateVersion(ctx, version.ID) |
| 934 | var apiErr *codersdk.Error |
| 935 | require.ErrorAs(t, err, &apiErr) |
| 936 | require.Equal(t, http.StatusBadRequest, apiErr.StatusCode()) |
| 937 | require.Eventually(t, func() bool { |
| 938 | var err error |
| 939 | version, err = client.TemplateVersion(ctx, version.ID) |
| 940 | return assert.NoError(t, err) && version.Job.Status == codersdk.ProvisionerJobFailed |
| 941 | }, testutil.WaitShort, testutil.IntervalFast) |
| 942 | }) |
| 943 | // TODO(Cian): until we are able to test cancellation properly, validating |
| 944 | // Running -> Canceling is the best we can do for now. |
| 945 | t.Run("Canceling", func(t *testing.T) { |
| 946 | t.Parallel() |
| 947 | client := coderdtest.New(t, &coderdtest.Options{ |
| 948 | IncludeProvisionerDaemon: true, |
| 949 | }) |
| 950 | user := coderdtest.CreateFirstUser(t, client) |
| 951 | version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{ |
| 952 | Parse: echo.ParseComplete, |
nothing calls this directly
no test coverage detected