@@ -29,34 +29,76 @@ func TestProjectVersion(t *testing.T) {
29
29
30
30
func TestPatchCancelProjectVersion (t * testing.T ) {
31
31
t .Parallel ()
32
- client := coderdtest .New (t , nil )
33
- user := coderdtest .CreateFirstUser (t , client )
34
- coderdtest .NewProvisionerDaemon (t , client )
35
- version := coderdtest .CreateProjectVersion (t , client , user .OrganizationID , & echo.Responses {
36
- Parse : echo .ParseComplete ,
37
- Provision : []* proto.Provision_Response {{
38
- Type : & proto.Provision_Response_Log {
39
- Log : & proto.Log {},
40
- },
41
- }},
32
+ t .Run ("AlreadyCompleted" , func (t * testing.T ) {
33
+ t .Parallel ()
34
+ client := coderdtest .New (t , nil )
35
+ user := coderdtest .CreateFirstUser (t , client )
36
+ coderdtest .NewProvisionerDaemon (t , client )
37
+ version := coderdtest .CreateProjectVersion (t , client , user .OrganizationID , nil )
38
+ coderdtest .AwaitProjectVersionJob (t , client , version .ID )
39
+ err := client .CancelProjectVersion (context .Background (), version .ID )
40
+ var apiErr * codersdk.Error
41
+ require .ErrorAs (t , err , & apiErr )
42
+ require .Equal (t , http .StatusPreconditionFailed , apiErr .StatusCode ())
42
43
})
43
- require .Eventually (t , func () bool {
44
- var err error
45
- version , err = client .ProjectVersion (context .Background (), version .ID )
44
+ t .Run ("AlreadyCanceled" , func (t * testing.T ) {
45
+ t .Parallel ()
46
+ client := coderdtest .New (t , nil )
47
+ user := coderdtest .CreateFirstUser (t , client )
48
+ coderdtest .NewProvisionerDaemon (t , client )
49
+ version := coderdtest .CreateProjectVersion (t , client , user .OrganizationID , & echo.Responses {
50
+ Parse : echo .ParseComplete ,
51
+ Provision : []* proto.Provision_Response {{
52
+ Type : & proto.Provision_Response_Log {
53
+ Log : & proto.Log {},
54
+ },
55
+ }},
56
+ })
57
+ require .Eventually (t , func () bool {
58
+ var err error
59
+ version , err = client .ProjectVersion (context .Background (), version .ID )
60
+ require .NoError (t , err )
61
+ t .Logf ("Status: %s" , version .Job .Status )
62
+ return version .Job .Status == codersdk .ProvisionerJobRunning
63
+ }, 5 * time .Second , 25 * time .Millisecond )
64
+ err := client .CancelProjectVersion (context .Background (), version .ID )
46
65
require .NoError (t , err )
47
- t .Logf ("Status: %s" , version .Job .Status )
48
- return version .Job .Status == codersdk .ProvisionerJobRunning
49
- }, 5 * time .Second , 25 * time .Millisecond )
50
- err := client .CancelProjectVersion (context .Background (), version .ID )
51
- require .NoError (t , err )
52
- require .Eventually (t , func () bool {
53
- var err error
54
- version , err = client .ProjectVersion (context .Background (), version .ID )
66
+ err = client .CancelProjectVersion (context .Background (), version .ID )
67
+ var apiErr * codersdk.Error
68
+ require .ErrorAs (t , err , & apiErr )
69
+ require .Equal (t , http .StatusPreconditionFailed , apiErr .StatusCode ())
70
+ })
71
+ t .Run ("Success" , func (t * testing.T ) {
72
+ t .Parallel ()
73
+ client := coderdtest .New (t , nil )
74
+ user := coderdtest .CreateFirstUser (t , client )
75
+ coderdtest .NewProvisionerDaemon (t , client )
76
+ version := coderdtest .CreateProjectVersion (t , client , user .OrganizationID , & echo.Responses {
77
+ Parse : echo .ParseComplete ,
78
+ Provision : []* proto.Provision_Response {{
79
+ Type : & proto.Provision_Response_Log {
80
+ Log : & proto.Log {},
81
+ },
82
+ }},
83
+ })
84
+ require .Eventually (t , func () bool {
85
+ var err error
86
+ version , err = client .ProjectVersion (context .Background (), version .ID )
87
+ require .NoError (t , err )
88
+ t .Logf ("Status: %s" , version .Job .Status )
89
+ return version .Job .Status == codersdk .ProvisionerJobRunning
90
+ }, 5 * time .Second , 25 * time .Millisecond )
91
+ err := client .CancelProjectVersion (context .Background (), version .ID )
55
92
require .NoError (t , err )
56
- // The echo provisioner doesn't respond to a shutdown request,
57
- // so the job cancel will time out and fail.
58
- return version .Job .Status == codersdk .ProvisionerJobFailed
59
- }, 5 * time .Second , 25 * time .Millisecond )
93
+ require .Eventually (t , func () bool {
94
+ var err error
95
+ version , err = client .ProjectVersion (context .Background (), version .ID )
96
+ require .NoError (t , err )
97
+ // The echo provisioner doesn't respond to a shutdown request,
98
+ // so the job cancel will time out and fail.
99
+ return version .Job .Status == codersdk .ProvisionerJobFailed
100
+ }, 5 * time .Second , 25 * time .Millisecond )
101
+ })
60
102
}
61
103
62
104
func TestProjectVersionSchema (t * testing.T ) {
0 commit comments