@@ -15,7 +15,7 @@ import (
15
15
"github.com/coder/coder/v2/testutil"
16
16
)
17
17
18
- func TestWorkspaceAgentPortShare (t * testing.T ) {
18
+ func TestPostWorkspaceAgentPortShare (t * testing.T ) {
19
19
t .Parallel ()
20
20
ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
21
21
defer cancel ()
@@ -36,23 +36,23 @@ func TestWorkspaceAgentPortShare(t *testing.T) {
36
36
require .NoError (t , err )
37
37
38
38
// owner level should fail
39
- err = client .UpdateWorkspaceAgentPortShare (ctx , r .Workspace .ID , codersdk.UpdateWorkspaceAgentPortShareRequest {
39
+ err = client .CreateWorkspaceAgentPortShare (ctx , r .Workspace .ID , codersdk.UpdateWorkspaceAgentPortShareRequest {
40
40
AgentName : agents [0 ].Name ,
41
41
Port : 8080 ,
42
42
ShareLevel : codersdk .WorkspaceAgentPortShareLevel ("owner" ),
43
43
})
44
44
require .Error (t , err )
45
45
46
46
// invalid level should fail
47
- err = client .UpdateWorkspaceAgentPortShare (ctx , r .Workspace .ID , codersdk.UpdateWorkspaceAgentPortShareRequest {
47
+ err = client .CreateWorkspaceAgentPortShare (ctx , r .Workspace .ID , codersdk.UpdateWorkspaceAgentPortShareRequest {
48
48
AgentName : agents [0 ].Name ,
49
49
Port : 8080 ,
50
50
ShareLevel : codersdk .WorkspaceAgentPortShareLevel ("invalid" ),
51
51
})
52
52
require .Error (t , err )
53
53
54
54
// OK, ignoring template max port share level because we are AGPL
55
- err = client .UpdateWorkspaceAgentPortShare (ctx , r .Workspace .ID , codersdk.UpdateWorkspaceAgentPortShareRequest {
55
+ err = client .CreateWorkspaceAgentPortShare (ctx , r .Workspace .ID , codersdk.UpdateWorkspaceAgentPortShareRequest {
56
56
AgentName : agents [0 ].Name ,
57
57
Port : 8080 ,
58
58
ShareLevel : codersdk .WorkspaceAgentPortShareLevelPublic ,
@@ -67,3 +67,79 @@ func TestWorkspaceAgentPortShare(t *testing.T) {
67
67
require .NoError (t , err )
68
68
require .EqualValues (t , codersdk .WorkspaceAgentPortShareLevelPublic , ps .ShareLevel )
69
69
}
70
+
71
+ func TestGetWorkspaceAgentPortShares (t * testing.T ) {
72
+ t .Parallel ()
73
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
74
+ defer cancel ()
75
+
76
+ ownerClient , db := coderdtest .NewWithDatabase (t , nil )
77
+ owner := coderdtest .CreateFirstUser (t , ownerClient )
78
+ client , user := coderdtest .CreateAnotherUser (t , ownerClient , owner .OrganizationID )
79
+
80
+ tmpDir := t .TempDir ()
81
+ r := dbfake .WorkspaceBuild (t , db , database.Workspace {
82
+ OrganizationID : owner .OrganizationID ,
83
+ OwnerID : user .ID ,
84
+ }).WithAgent (func (agents []* proto.Agent ) []* proto.Agent {
85
+ agents [0 ].Directory = tmpDir
86
+ return agents
87
+ }).Do ()
88
+ agents , err := db .GetWorkspaceAgentsInLatestBuildByWorkspaceID (dbauthz .As (ctx , coderdtest .AuthzUserSubject (user , owner .OrganizationID )), r .Workspace .ID )
89
+ require .NoError (t , err )
90
+
91
+ err = client .CreateWorkspaceAgentPortShare (ctx , r .Workspace .ID , codersdk.UpdateWorkspaceAgentPortShareRequest {
92
+ AgentName : agents [0 ].Name ,
93
+ Port : 8080 ,
94
+ ShareLevel : codersdk .WorkspaceAgentPortShareLevelPublic ,
95
+ })
96
+ require .NoError (t , err )
97
+
98
+ ps , err := client .GetWorkspaceAgentPortShares (ctx , r .Workspace .ID )
99
+ require .NoError (t , err )
100
+ require .Len (t , ps .Shares , 1 )
101
+ require .EqualValues (t , agents [0 ].Name , ps .Shares [0 ].AgentName )
102
+ require .EqualValues (t , 8080 , ps .Shares [0 ].Port )
103
+ require .EqualValues (t , codersdk .WorkspaceAgentPortShareLevelPublic , ps .Shares [0 ].ShareLevel )
104
+ }
105
+
106
+ func TestDeleteWorkspaceAgentPortShare (t * testing.T ) {
107
+ t .Parallel ()
108
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
109
+ defer cancel ()
110
+
111
+ ownerClient , db := coderdtest .NewWithDatabase (t , nil )
112
+ owner := coderdtest .CreateFirstUser (t , ownerClient )
113
+ client , user := coderdtest .CreateAnotherUser (t , ownerClient , owner .OrganizationID )
114
+
115
+ tmpDir := t .TempDir ()
116
+ r := dbfake .WorkspaceBuild (t , db , database.Workspace {
117
+ OrganizationID : owner .OrganizationID ,
118
+ OwnerID : user .ID ,
119
+ }).WithAgent (func (agents []* proto.Agent ) []* proto.Agent {
120
+ agents [0 ].Directory = tmpDir
121
+ return agents
122
+ }).Do ()
123
+ agents , err := db .GetWorkspaceAgentsInLatestBuildByWorkspaceID (dbauthz .As (ctx , coderdtest .AuthzUserSubject (user , owner .OrganizationID )), r .Workspace .ID )
124
+ require .NoError (t , err )
125
+
126
+ err = client .CreateWorkspaceAgentPortShare (ctx , r .Workspace .ID , codersdk.UpdateWorkspaceAgentPortShareRequest {
127
+ AgentName : agents [0 ].Name ,
128
+ Port : 8080 ,
129
+ ShareLevel : codersdk .WorkspaceAgentPortShareLevelPublic ,
130
+ })
131
+ require .NoError (t , err )
132
+
133
+ err = client .DeleteWorkspaceAgentPortShare (ctx , r .Workspace .ID , codersdk.DeleteWorkspaceAgentPortShareRequest {
134
+ AgentName : agents [0 ].Name ,
135
+ Port : 8080 ,
136
+ })
137
+ require .NoError (t , err )
138
+
139
+ _ , err = db .GetWorkspaceAgentPortShare (dbauthz .As (ctx , coderdtest .AuthzUserSubject (user , owner .OrganizationID )), database.GetWorkspaceAgentPortShareParams {
140
+ WorkspaceID : r .Workspace .ID ,
141
+ AgentName : agents [0 ].Name ,
142
+ Port : 8080 ,
143
+ })
144
+ require .Error (t , err )
145
+ }
0 commit comments