@@ -2,7 +2,9 @@ package coderd_test
2
2
3
3
import (
4
4
"context"
5
+ "fmt"
5
6
"net/http"
7
+ "strconv"
6
8
"testing"
7
9
"time"
8
10
@@ -28,6 +30,94 @@ func TestWorkspaceBuild(t *testing.T) {
28
30
require .NoError (t , err )
29
31
}
30
32
33
+ func TestWorkspaceBuildByBuildNumber (t * testing.T ) {
34
+ t .Parallel ()
35
+ t .Run ("Successful" , func (t * testing.T ) {
36
+ t .Parallel ()
37
+ client := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerD : true })
38
+ first := coderdtest .CreateFirstUser (t , client )
39
+ user , err := client .User (context .Background (), codersdk .Me )
40
+ require .NoError (t , err , "fetch me" )
41
+ version := coderdtest .CreateTemplateVersion (t , client , first .OrganizationID , nil )
42
+ template := coderdtest .CreateTemplate (t , client , first .OrganizationID , version .ID )
43
+ coderdtest .AwaitTemplateVersionJob (t , client , version .ID )
44
+ workspace := coderdtest .CreateWorkspace (t , client , first .OrganizationID , template .ID )
45
+ _ , err = client .WorkspaceBuildByUsernameAndWorkspaceNameAndBuildNumber (
46
+ context .Background (),
47
+ user .Username ,
48
+ workspace .Name ,
49
+ strconv .FormatInt (int64 (workspace .LatestBuild .BuildNumber ), 10 ),
50
+ )
51
+ require .NoError (t , err )
52
+ })
53
+
54
+ t .Run ("BuildNumberNotInt" , func (t * testing.T ) {
55
+ t .Parallel ()
56
+ client := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerD : true })
57
+ first := coderdtest .CreateFirstUser (t , client )
58
+ user , err := client .User (context .Background (), codersdk .Me )
59
+ require .NoError (t , err , "fetch me" )
60
+ version := coderdtest .CreateTemplateVersion (t , client , first .OrganizationID , nil )
61
+ template := coderdtest .CreateTemplate (t , client , first .OrganizationID , version .ID )
62
+ coderdtest .AwaitTemplateVersionJob (t , client , version .ID )
63
+ workspace := coderdtest .CreateWorkspace (t , client , first .OrganizationID , template .ID )
64
+ _ , err = client .WorkspaceBuildByUsernameAndWorkspaceNameAndBuildNumber (
65
+ context .Background (),
66
+ user .Username ,
67
+ workspace .Name ,
68
+ "buildNumber" ,
69
+ )
70
+ var apiError * codersdk.Error
71
+ require .ErrorAs (t , err , & apiError )
72
+ require .Equal (t , http .StatusBadRequest , apiError .StatusCode ())
73
+ require .ErrorContains (t , apiError , "Failed to parse build number as integer." )
74
+ })
75
+
76
+ t .Run ("WorkspaceNotFound" , func (t * testing.T ) {
77
+ t .Parallel ()
78
+ client := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerD : true })
79
+ first := coderdtest .CreateFirstUser (t , client )
80
+ user , err := client .User (context .Background (), codersdk .Me )
81
+ require .NoError (t , err , "fetch me" )
82
+ version := coderdtest .CreateTemplateVersion (t , client , first .OrganizationID , nil )
83
+ template := coderdtest .CreateTemplate (t , client , first .OrganizationID , version .ID )
84
+ coderdtest .AwaitTemplateVersionJob (t , client , version .ID )
85
+ workspace := coderdtest .CreateWorkspace (t , client , first .OrganizationID , template .ID )
86
+ _ , err = client .WorkspaceBuildByUsernameAndWorkspaceNameAndBuildNumber (
87
+ context .Background (),
88
+ user .Username ,
89
+ "workspaceName" ,
90
+ strconv .FormatInt (int64 (workspace .LatestBuild .BuildNumber ), 10 ),
91
+ )
92
+ var apiError * codersdk.Error
93
+ require .ErrorAs (t , err , & apiError )
94
+ require .Equal (t , http .StatusNotFound , apiError .StatusCode ())
95
+ require .ErrorContains (t , apiError , "Workspace \" workspaceName\" does not exist." )
96
+ })
97
+
98
+ t .Run ("WorkspaceBuildNotFound" , func (t * testing.T ) {
99
+ t .Parallel ()
100
+ client := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerD : true })
101
+ first := coderdtest .CreateFirstUser (t , client )
102
+ user , err := client .User (context .Background (), codersdk .Me )
103
+ require .NoError (t , err , "fetch me" )
104
+ version := coderdtest .CreateTemplateVersion (t , client , first .OrganizationID , nil )
105
+ template := coderdtest .CreateTemplate (t , client , first .OrganizationID , version .ID )
106
+ coderdtest .AwaitTemplateVersionJob (t , client , version .ID )
107
+ workspace := coderdtest .CreateWorkspace (t , client , first .OrganizationID , template .ID )
108
+ _ , err = client .WorkspaceBuildByUsernameAndWorkspaceNameAndBuildNumber (
109
+ context .Background (),
110
+ user .Username ,
111
+ workspace .Name ,
112
+ "200" ,
113
+ )
114
+ var apiError * codersdk.Error
115
+ require .ErrorAs (t , err , & apiError )
116
+ require .Equal (t , http .StatusNotFound , apiError .StatusCode ())
117
+ require .ErrorContains (t , apiError , fmt .Sprintf ("Workspace %q Build 200 does not exist." , workspace .Name ))
118
+ })
119
+ }
120
+
31
121
func TestWorkspaceBuilds (t * testing.T ) {
32
122
t .Parallel ()
33
123
t .Run ("Single" , func (t * testing.T ) {
0 commit comments