Skip to content

Commit 66a4fd7

Browse files
test: fail on an invalid template
1 parent 0ad6ce3 commit 66a4fd7

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

coderd/aitasks.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package coderd
22

33
import (
4+
"database/sql"
5+
"errors"
46
"fmt"
57
"net/http"
68
"strings"
@@ -11,6 +13,7 @@ import (
1113
"github.com/coder/coder/v2/coderd/database"
1214
"github.com/coder/coder/v2/coderd/httpapi"
1315
"github.com/coder/coder/v2/coderd/httpmw"
16+
"github.com/coder/coder/v2/coderd/rbac"
1417
"github.com/coder/coder/v2/codersdk"
1518
)
1619

@@ -94,6 +97,11 @@ func (api *API) aiTasksCreate(rw http.ResponseWriter, r *http.Request) {
9497

9598
hasAIPrompt, err := api.Database.GetTemplateVersionHasAIPrompt(ctx, req.TemplateVersionID)
9699
if err != nil {
100+
if errors.Is(err, sql.ErrNoRows) || rbac.IsUnauthorizedError(err) {
101+
httpapi.ResourceNotFound(rw)
102+
return
103+
}
104+
97105
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
98106
Message: "Internal error fetching if template version has ai prompt.",
99107
Detail: err.Error(),

coderd/aitasks_test.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,4 +228,36 @@ func TestAITasksCreate(t *testing.T) {
228228
require.ErrorAsf(t, err, &sdkErr, "error should be of type *codersdk.Error")
229229
assert.Equal(t, http.StatusBadRequest, sdkErr.StatusCode())
230230
})
231+
232+
t.Run("FailsOnInvalidTemplate", func(t *testing.T) {
233+
var (
234+
ctx = testutil.Context(t, testutil.WaitShort)
235+
236+
taskName = "task-foo-bar-baz"
237+
taskPrompt = "Some task prompt"
238+
)
239+
240+
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
241+
user := coderdtest.CreateFirstUser(t, client)
242+
243+
// Given: A template
244+
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
245+
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
246+
_ = coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
247+
248+
expClient := codersdk.NewExperimentalClient(client)
249+
250+
// When: We attempt to create a Task with an invalid template version ID.
251+
_, err := expClient.AITasksCreate(ctx, codersdk.CreateAITasksRequest{
252+
Name: taskName,
253+
TemplateVersionID: uuid.New(),
254+
Prompt: taskPrompt,
255+
})
256+
257+
// Then: We expect it to fail.
258+
var sdkErr *codersdk.Error
259+
require.Error(t, err)
260+
require.ErrorAsf(t, err, &sdkErr, "error should be of type *codersdk.Error")
261+
assert.Equal(t, http.StatusNotFound, sdkErr.StatusCode())
262+
})
231263
}

0 commit comments

Comments
 (0)