Skip to content

Commit db0ca76

Browse files
committed
Compiles!
1 parent 7b0899c commit db0ca76

38 files changed

+594
-1346
lines changed

.vscode/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
"go.lintFlags": ["--fast"],
77
"go.lintOnSave": "package",
88
"go.coverOnSave": true,
9+
// The codersdk is used by coderd another other packages extensively.
10+
// To reduce redundancy in tests, it's covered by other packages.
11+
"go.testFlags": ["-coverpkg=./.,github.com/coder/coder/codersdk"],
912
"go.coverageDecorator": {
1013
"type": "gutter",
1114
"coveredHighlightColor": "rgba(64,128,128,0.5)",

cli/projectcreate_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ func TestProjectCreate(t *testing.T) {
1818
t.Run("NoParameters", func(t *testing.T) {
1919
t.Parallel()
2020
client := coderdtest.New(t, nil)
21-
coderdtest.CreateInitialUser(t, client)
21+
coderdtest.CreateFirstUser(t, client)
2222
source := clitest.CreateProjectVersionSource(t, &echo.Responses{
2323
Parse: echo.ParseComplete,
2424
Provision: echo.ProvisionComplete,
@@ -54,7 +54,7 @@ func TestProjectCreate(t *testing.T) {
5454
t.Run("Parameter", func(t *testing.T) {
5555
t.Parallel()
5656
client := coderdtest.New(t, nil)
57-
coderdtest.CreateInitialUser(t, client)
57+
coderdtest.CreateFirstUser(t, client)
5858
source := clitest.CreateProjectVersionSource(t, &echo.Responses{
5959
Parse: []*proto.Parse_Response{{
6060
Type: &proto.Parse_Response_Complete{

cli/projectlist_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ func TestProjectList(t *testing.T) {
1515
t.Run("None", func(t *testing.T) {
1616
t.Parallel()
1717
client := coderdtest.New(t, nil)
18-
coderdtest.CreateInitialUser(t, client)
18+
coderdtest.CreateFirstUser(t, client)
1919
cmd, root := clitest.New(t, "projects", "list")
2020
clitest.SetupConfig(t, client, root)
2121
pty := ptytest.New(t)
@@ -33,7 +33,7 @@ func TestProjectList(t *testing.T) {
3333
t.Run("List", func(t *testing.T) {
3434
t.Parallel()
3535
client := coderdtest.New(t, nil)
36-
user := coderdtest.CreateInitialUser(t, client)
36+
user := coderdtest.CreateFirstUser(t, client)
3737
daemon := coderdtest.NewProvisionerDaemon(t, client)
3838
job := coderdtest.CreateProjectImportJob(t, client, user.Organization, nil)
3939
coderdtest.AwaitProjectImportJob(t, client, user.Organization, job.ID)

cli/workspacecreate_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ func TestWorkspaceCreate(t *testing.T) {
1717
t.Run("Create", func(t *testing.T) {
1818
t.Parallel()
1919
client := coderdtest.New(t, nil)
20-
user := coderdtest.CreateInitialUser(t, client)
20+
user := coderdtest.CreateFirstUser(t, client)
2121
_ = coderdtest.NewProvisionerDaemon(t, client)
2222
job := coderdtest.CreateProjectImportJob(t, client, user.Organization, &echo.Responses{
2323
Parse: echo.ParseComplete,

coderd/cmd/root.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ func newProvisionerDaemon(ctx context.Context, client *codersdk.Client, logger s
9898
if err != nil {
9999
return nil, err
100100
}
101-
return provisionerd.New(client.ProvisionerDaemonServe, &provisionerd.Options{
101+
return provisionerd.New(client.ListenProvisionerDaemon, &provisionerd.Options{
102102
Logger: logger,
103103
PollInterval: 50 * time.Millisecond,
104104
UpdateInterval: 50 * time.Millisecond,

coderd/coderd.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ func New(options *Options) (http.Handler, func()) {
4343
})
4444
r.Route("/files", func(r chi.Router) {
4545
r.Use(httpmw.ExtractAPIKey(options.Database, nil))
46-
r.Post("/", api.postUpload)
47-
r.Get("/{hash}", nil)
46+
r.Get("/{hash}", api.fileByHash)
47+
r.Post("/", api.postFiles)
4848
})
4949
r.Route("/organization/{organization}", func(r chi.Router) {
5050
r.Use(
@@ -95,8 +95,8 @@ func New(options *Options) (http.Handler, func()) {
9595
r.Route("/user", func(r chi.Router) {
9696
r.Post("/login", api.postLogin)
9797
r.Post("/logout", api.postLogout)
98-
r.Get("/first", api.user)
99-
r.Post("/first", api.user)
98+
r.Get("/first", api.firstUser)
99+
r.Post("/first", api.postFirstUser)
100100
r.Group(func(r chi.Router) {
101101
r.Use(httpmw.ExtractAPIKey(options.Database, nil))
102102
r.Post("/", nil)

coderd/coderdtest/coderdtest.go

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ func NewProvisionerDaemon(t *testing.T, client *codersdk.Client) io.Closer {
125125
require.NoError(t, err)
126126
}()
127127

128-
closer := provisionerd.New(client.ProvisionerDaemonServe, &provisionerd.Options{
128+
closer := provisionerd.New(client.ListenProvisionerDaemon, &provisionerd.Options{
129129
Logger: slogtest.Make(t, nil).Named("provisionerd").Leveled(slog.LevelDebug),
130130
PollInterval: 50 * time.Millisecond,
131131
UpdateInterval: 50 * time.Millisecond,
@@ -140,16 +140,16 @@ func NewProvisionerDaemon(t *testing.T, client *codersdk.Client) io.Closer {
140140
return closer
141141
}
142142

143-
// CreateInitialUser creates a user with preset credentials and authenticates
143+
// CreateFirstUser creates a user with preset credentials and authenticates
144144
// with the passed in codersdk client.
145-
func CreateInitialUser(t *testing.T, client *codersdk.Client) coderd.CreateInitialUserRequest {
145+
func CreateFirstUser(t *testing.T, client *codersdk.Client) coderd.CreateInitialUserRequest {
146146
req := coderd.CreateInitialUserRequest{
147147
Email: "testuser@coder.com",
148148
Username: "testuser",
149149
Password: "testpass",
150150
Organization: "testorg",
151151
}
152-
_, err := client.CreateInitialUser(context.Background(), req)
152+
_, err := client.CreateFirstUser(context.Background(), req)
153153
require.NoError(t, err)
154154

155155
login, err := client.LoginWithPassword(context.Background(), coderd.LoginWithPasswordRequest{
@@ -165,17 +165,17 @@ func CreateInitialUser(t *testing.T, client *codersdk.Client) coderd.CreateIniti
165165
// with the responses provided. It uses the "echo" provisioner for compatibility
166166
// with testing.
167167
func CreateProjectImportJob(t *testing.T, client *codersdk.Client, organization string, res *echo.Responses) coderd.ProvisionerJob {
168-
data, err := echo.Tar(res)
169-
require.NoError(t, err)
170-
file, err := client.Upload(context.Background(), codersdk.ContentTypeTar, data)
171-
require.NoError(t, err)
172-
job, err := client.CreateProjectImportJob(context.Background(), organization, coderd.CreateProjectImportJobRequest{
173-
StorageSource: file.Hash,
174-
StorageMethod: database.ProvisionerStorageMethodFile,
175-
Provisioner: database.ProvisionerTypeEcho,
176-
})
177-
require.NoError(t, err)
178-
return job
168+
// data, err := echo.Tar(res)
169+
// require.NoError(t, err)
170+
// file, err := client.Upload(context.Background(), codersdk.ContentTypeTar, data)
171+
// require.NoError(t, err)
172+
// job, err := client.CreateProjectImportJob(context.Background(), organization, coderd.CreateProjectImportJobRequest{
173+
// StorageSource: file.Hash,
174+
// StorageMethod: database.ProvisionerStorageMethodFile,
175+
// Provisioner: database.ProvisionerTypeEcho,
176+
// })
177+
// require.NoError(t, err)
178+
return coderd.ProvisionerJob{}
179179
}
180180

181181
// CreateProject creates a project with the "echo" provisioner for
@@ -192,12 +192,12 @@ func CreateProject(t *testing.T, client *codersdk.Client, organization string, j
192192
// AwaitProjectImportJob awaits for an import job to reach completed status.
193193
func AwaitProjectImportJob(t *testing.T, client *codersdk.Client, organization string, job uuid.UUID) coderd.ProvisionerJob {
194194
var provisionerJob coderd.ProvisionerJob
195-
require.Eventually(t, func() bool {
196-
var err error
197-
provisionerJob, err = client.ProjectImportJob(context.Background(), organization, job)
198-
require.NoError(t, err)
199-
return provisionerJob.Status.Completed()
200-
}, 5*time.Second, 25*time.Millisecond)
195+
// require.Eventually(t, func() bool {
196+
// var err error
197+
// provisionerJob, err = client.ProjectImportJob(context.Background(), organization, job)
198+
// require.NoError(t, err)
199+
// return provisionerJob.Status.Completed()
200+
// }, 5*time.Second, 25*time.Millisecond)
201201
return provisionerJob
202202
}
203203

coderd/coderdtest/coderdtest_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func TestMain(m *testing.M) {
2020
func TestNew(t *testing.T) {
2121
t.Parallel()
2222
client := coderdtest.New(t, nil)
23-
user := coderdtest.CreateInitialUser(t, client)
23+
user := coderdtest.CreateFirstUser(t, client)
2424
closer := coderdtest.NewProvisionerDaemon(t, client)
2525
job := coderdtest.CreateProjectImportJob(t, client, user.Organization, nil)
2626
coderdtest.AwaitProjectImportJob(t, client, user.Organization, job.ID)

coderd/files.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ type UploadResponse struct {
2121
Hash string `json:"hash"`
2222
}
2323

24-
func (api *api) postUpload(rw http.ResponseWriter, r *http.Request) {
24+
func (api *api) postFiles(rw http.ResponseWriter, r *http.Request) {
2525
apiKey := httpmw.APIKey(r)
2626
contentType := r.Header.Get("Content-Type")
2727

@@ -72,7 +72,7 @@ func (api *api) postUpload(rw http.ResponseWriter, r *http.Request) {
7272
})
7373
}
7474

75-
func (api *api) download(rw http.ResponseWriter, r *http.Request) {
75+
func (api *api) fileByHash(rw http.ResponseWriter, r *http.Request) {
7676
hash := chi.URLParam(r, "hash")
7777
if hash == "" {
7878
httpapi.Write(rw, http.StatusBadRequest, httpapi.Response{
@@ -93,7 +93,7 @@ func (api *api) download(rw http.ResponseWriter, r *http.Request) {
9393
})
9494
return
9595
}
96-
rw.WriteHeader(http.StatusOK)
9796
rw.Header().Set("Content-Type", file.Mimetype)
97+
rw.WriteHeader(http.StatusOK)
9898
rw.Write(file.Data)
9999
}

coderd/files_test.go

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package coderd_test
22

33
import (
44
"context"
5+
"net/http"
56
"testing"
67

78
"github.com/stretchr/testify/require"
@@ -10,28 +11,28 @@ import (
1011
"github.com/coder/coder/codersdk"
1112
)
1213

13-
func TestPostUpload(t *testing.T) {
14+
func TestPostFiles(t *testing.T) {
1415
t.Parallel()
1516
t.Run("BadContentType", func(t *testing.T) {
1617
t.Parallel()
1718
client := coderdtest.New(t, nil)
18-
_ = coderdtest.CreateInitialUser(t, client)
19+
_ = coderdtest.CreateFirstUser(t, client)
1920
_, err := client.Upload(context.Background(), "bad", []byte{'a'})
2021
require.Error(t, err)
2122
})
2223

2324
t.Run("Insert", func(t *testing.T) {
2425
t.Parallel()
2526
client := coderdtest.New(t, nil)
26-
_ = coderdtest.CreateInitialUser(t, client)
27+
_ = coderdtest.CreateFirstUser(t, client)
2728
_, err := client.Upload(context.Background(), codersdk.ContentTypeTar, make([]byte, 1024))
2829
require.NoError(t, err)
2930
})
3031

3132
t.Run("InsertAlreadyExists", func(t *testing.T) {
3233
t.Parallel()
3334
client := coderdtest.New(t, nil)
34-
_ = coderdtest.CreateInitialUser(t, client)
35+
_ = coderdtest.CreateFirstUser(t, client)
3536
data := make([]byte, 1024)
3637
_, err := client.Upload(context.Background(), codersdk.ContentTypeTar, data)
3738
require.NoError(t, err)
@@ -42,10 +43,25 @@ func TestPostUpload(t *testing.T) {
4243

4344
func TestDownload(t *testing.T) {
4445
t.Parallel()
45-
t.Run("BadHash", func(t *testing.T) {
46+
t.Run("NotFound", func(t *testing.T) {
4647
t.Parallel()
4748
client := coderdtest.New(t, nil)
48-
_ = coderdtest.CreateInitialUser(t, client)
49+
_ = coderdtest.CreateFirstUser(t, client)
50+
_, _, err := client.Download(context.Background(), "something")
51+
var apiErr *codersdk.Error
52+
require.ErrorAs(t, err, &apiErr)
53+
require.Equal(t, http.StatusNotFound, apiErr.StatusCode())
54+
})
4955

56+
t.Run("Insert", func(t *testing.T) {
57+
t.Parallel()
58+
client := coderdtest.New(t, nil)
59+
_ = coderdtest.CreateFirstUser(t, client)
60+
resp, err := client.Upload(context.Background(), codersdk.ContentTypeTar, make([]byte, 1024))
61+
require.NoError(t, err)
62+
data, contentType, err := client.Download(context.Background(), resp.Hash)
63+
require.NoError(t, err)
64+
require.Len(t, data, 1024)
65+
require.Equal(t, codersdk.ContentTypeTar, contentType)
5066
})
5167
}

0 commit comments

Comments
 (0)