@@ -2,18 +2,26 @@ package coderd_test
2
2
3
3
import (
4
4
"context"
5
+ "net/http"
5
6
"testing"
7
+ "time"
6
8
9
+ "github.com/google/uuid"
7
10
"github.com/stretchr/testify/require"
8
11
9
12
"github.com/coder/coder/coderd/coderdtest"
13
+ "github.com/coder/coder/coderd/provisionerdserver"
10
14
"github.com/coder/coder/codersdk"
11
15
"github.com/coder/coder/enterprise/coderd/coderdenttest"
16
+ "github.com/coder/coder/provisioner/echo"
17
+ "github.com/coder/coder/provisionerd"
18
+ provisionerdproto "github.com/coder/coder/provisionerd/proto"
19
+ "github.com/coder/coder/provisionersdk/proto"
12
20
)
13
21
14
22
func TestProvisionerDaemonServe (t * testing.T ) {
15
23
t .Parallel ()
16
- t .Run ("Serve " , func (t * testing.T ) {
24
+ t .Run ("Organization " , func (t * testing.T ) {
17
25
t .Parallel ()
18
26
client := coderdenttest .New (t , nil )
19
27
user := coderdtest .CreateFirstUser (t , client )
@@ -23,6 +31,89 @@ func TestProvisionerDaemonServe(t *testing.T) {
23
31
require .NoError (t , err )
24
32
srv .DRPCConn ().Close ()
25
33
})
34
+
35
+ t .Run ("OrganizationNoPerms" , func (t * testing.T ) {
36
+ t .Parallel ()
37
+ client := coderdenttest .New (t , nil )
38
+ user := coderdtest .CreateFirstUser (t , client )
39
+ another := coderdtest .CreateAnotherUser (t , client , user .OrganizationID )
40
+ _ , err := another .ServeProvisionerDaemon (context .Background (), user .OrganizationID , []codersdk.ProvisionerType {
41
+ codersdk .ProvisionerTypeEcho ,
42
+ }, map [string ]string {
43
+ provisionerdserver .TagScope : provisionerdserver .ScopeOrganization ,
44
+ })
45
+ require .Error (t , err )
46
+ var apiError * codersdk.Error
47
+ require .ErrorAs (t , err , & apiError )
48
+ require .Equal (t , http .StatusForbidden , apiError .StatusCode ())
49
+ })
50
+
51
+ t .Run ("UserLocal" , func (t * testing.T ) {
52
+ t .Parallel ()
53
+ client := coderdenttest .New (t , nil )
54
+ user := coderdtest .CreateFirstUser (t , client )
55
+ srv := provisionerd .New (func (ctx context.Context ) (provisionerdproto.DRPCProvisionerDaemonClient , error ) {
56
+ return client .ServeProvisionerDaemon (context .Background (), user .OrganizationID , []codersdk.ProvisionerType {
57
+ codersdk .ProvisionerTypeEcho ,
58
+ }, map [string ]string {
59
+ provisionerdserver .TagScope : provisionerdserver .ScopeUser ,
60
+ })
61
+ }, nil )
62
+ defer srv .Close ()
63
+
64
+ authToken := uuid .NewString ()
65
+ data , err := echo .Tar (& echo.Responses {
66
+ Parse : echo .ParseComplete ,
67
+ ProvisionDryRun : []* proto.Provision_Response {{
68
+ Type : & proto.Provision_Response_Complete {
69
+ Complete : & proto.Provision_Complete {
70
+ Resources : []* proto.Resource {{
71
+ Name : "example" ,
72
+ Type : "aws_instance" ,
73
+ Agents : []* proto.Agent {{
74
+ Id : uuid .NewString (),
75
+ Name : "example" ,
76
+ }},
77
+ }},
78
+ },
79
+ },
80
+ }},
81
+ Provision : []* proto.Provision_Response {{
82
+ Type : & proto.Provision_Response_Complete {
83
+ Complete : & proto.Provision_Complete {
84
+ Resources : []* proto.Resource {{
85
+ Name : "example" ,
86
+ Type : "aws_instance" ,
87
+ Agents : []* proto.Agent {{
88
+ Id : uuid .NewString (),
89
+ Name : "example" ,
90
+ Auth : & proto.Agent_Token {
91
+ Token : authToken ,
92
+ },
93
+ }},
94
+ }},
95
+ },
96
+ },
97
+ }},
98
+ })
99
+ require .NoError (t , err )
100
+ file , err := client .Upload (context .Background (), codersdk .ContentTypeTar , data )
101
+ require .NoError (t , err )
102
+
103
+ _ , err = client .CreateTemplateVersion (context .Background (), user .OrganizationID , codersdk.CreateTemplateVersionRequest {
104
+ Name : "example" ,
105
+ StorageMethod : codersdk .ProvisionerStorageMethodFile ,
106
+ FileID : file .ID ,
107
+ Provisioner : codersdk .ProvisionerTypeEcho ,
108
+ ProvisionerTags : map [string ]string {
109
+ provisionerdserver .TagScope : provisionerdserver .ScopeUser ,
110
+ },
111
+ })
112
+ require .NoError (t , err )
113
+ // coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
114
+
115
+ time .Sleep (time .Second )
116
+ })
26
117
}
27
118
28
119
func TestPostProvisionerDaemon (t * testing.T ) {
0 commit comments