Skip to content

Commit 7084ceb

Browse files
committed
add tests
1 parent 90e6a9d commit 7084ceb

File tree

4 files changed

+63
-3
lines changed

4 files changed

+63
-3
lines changed

coderd/files.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import (
2020
)
2121

2222
const (
23-
uploadFileContentTypeHeader = "application/x-tar"
23+
tarMimeType = "application/x-tar"
2424
)
2525

2626
func (api *API) postFile(rw http.ResponseWriter, r *http.Request) {
@@ -36,7 +36,7 @@ func (api *API) postFile(rw http.ResponseWriter, r *http.Request) {
3636
contentType := r.Header.Get("Content-Type")
3737

3838
switch contentType {
39-
case uploadFileContentTypeHeader:
39+
case tarMimeType:
4040
default:
4141
httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
4242
Message: fmt.Sprintf("Unsupported content type header %q.", contentType),

coderd/templateversions.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -883,7 +883,7 @@ func (api *API) postTemplateVersionsByOrganization(rw http.ResponseWriter, r *ht
883883
Hash: hash,
884884
CreatedBy: apiKey.UserID,
885885
CreatedAt: database.Now(),
886-
Mimetype: uploadFileContentTypeHeader,
886+
Mimetype: tarMimeType,
887887
Data: tar,
888888
})
889889
if err != nil {

coderd/templateversions_test.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"github.com/coder/coder/coderd/database"
1616
"github.com/coder/coder/coderd/provisionerdserver"
1717
"github.com/coder/coder/codersdk"
18+
"github.com/coder/coder/examples"
1819
"github.com/coder/coder/provisioner/echo"
1920
"github.com/coder/coder/provisionersdk/proto"
2021
"github.com/coder/coder/testutil"
@@ -128,6 +129,31 @@ func TestPostTemplateVersionsByOrganization(t *testing.T) {
128129
require.Len(t, auditor.AuditLogs, 1)
129130
assert.Equal(t, database.AuditActionCreate, auditor.AuditLogs[0].Action)
130131
})
132+
t.Run("Example", func(t *testing.T) {
133+
t.Parallel()
134+
client := coderdtest.New(t, nil)
135+
user := coderdtest.CreateFirstUser(t, client)
136+
137+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
138+
defer cancel()
139+
140+
ls, err := examples.List()
141+
require.NoError(t, err)
142+
143+
tv, err := client.CreateTemplateVersion(ctx, user.OrganizationID, codersdk.CreateTemplateVersionRequest{
144+
Name: "my-example",
145+
StorageMethod: codersdk.ProvisionerStorageMethodFile,
146+
ExampleID: ls[0].ID,
147+
Provisioner: codersdk.ProvisionerTypeEcho,
148+
})
149+
require.NoError(t, err)
150+
fl, ct, err := client.Download(ctx, tv.Job.FileID)
151+
require.NoError(t, err)
152+
require.Equal(t, "application/x-tar", ct)
153+
tar, err := examples.Archive(ls[0].ID)
154+
require.NoError(t, err)
155+
require.EqualValues(t, tar, fl)
156+
})
131157
}
132158

133159
func TestPatchCancelTemplateVersion(t *testing.T) {
@@ -997,3 +1023,23 @@ func TestPreviousTemplateVersion(t *testing.T) {
9971023
require.Equal(t, previousVersion.ID, result.ID)
9981024
})
9991025
}
1026+
1027+
func TestTemplateExamples(t *testing.T) {
1028+
t.Parallel()
1029+
t.Run("OK", func(t *testing.T) {
1030+
t.Parallel()
1031+
client := coderdtest.New(t, nil)
1032+
user := coderdtest.CreateFirstUser(t, client)
1033+
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
1034+
coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
1035+
1036+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1037+
defer cancel()
1038+
1039+
ex, err := client.TemplateExamples(ctx, user.OrganizationID)
1040+
require.NoError(t, err)
1041+
ls, err := examples.List()
1042+
require.NoError(t, err)
1043+
require.EqualValues(t, ls, ex)
1044+
})
1045+
}

codersdk/templates.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,3 +246,17 @@ type AgentStatsReportResponse struct {
246246
// TxBytes is the number of transmitted bytes.
247247
TxBytes int64 `json:"tx_bytes"`
248248
}
249+
250+
// TemplateExamples lists example templates embedded in coder.
251+
func (c *Client) TemplateExamples(ctx context.Context, organizationID uuid.UUID) ([]TemplateExample, error) {
252+
res, err := c.Request(ctx, http.MethodGet, fmt.Sprintf("/api/v2/organizations/%s/templates/examples", organizationID), nil)
253+
if err != nil {
254+
return nil, err
255+
}
256+
defer res.Body.Close()
257+
if res.StatusCode != http.StatusOK {
258+
return nil, readBodyAsError(res)
259+
}
260+
var templateExamples []TemplateExample
261+
return templateExamples, json.NewDecoder(res.Body).Decode(&templateExamples)
262+
}

0 commit comments

Comments
 (0)