@@ -106,6 +106,178 @@ func TestTokensService_GetPersonalAccessToken(t *testing.T) {
106106 })
107107}
108108
109+ func TestTokensService_ListPersonalAccessTokens (t * testing.T ) {
110+ user := newUser (& protocol.User {})
111+
112+ t .Run ("permission denied when feature flag is disabled" , func (t * testing.T ) {
113+ serverMock , client := setupTokensService (t , withTokenFeatureDisabled )
114+
115+ serverMock .EXPECT ().GetLoggedInUser (gomock .Any ()).Return (user , nil )
116+
117+ _ , err := client .ListPersonalAccessTokens (context .Background (), connect .NewRequest (& v1.ListPersonalAccessTokensRequest {}))
118+
119+ require .Error (t , err , "This feature is currently in beta. If you would like to be part of the beta, please contact us." )
120+ require .Equal (t , connect .CodePermissionDenied , connect .CodeOf (err ))
121+ })
122+
123+ t .Run ("unimplemented when feature flag enabled" , func (t * testing.T ) {
124+ serverMock , client := setupTokensService (t , withTokenFeatureEnabled )
125+
126+ serverMock .EXPECT ().GetLoggedInUser (gomock .Any ()).Return (user , nil )
127+
128+ _ , err := client .ListPersonalAccessTokens (context .Background (), connect .NewRequest (& v1.ListPersonalAccessTokensRequest {}))
129+
130+ require .Equal (t , connect .CodeUnimplemented , connect .CodeOf (err ))
131+ })
132+ }
133+
134+ func TestTokensService_RegeneratePersonalAccessToken (t * testing.T ) {
135+ user := newUser (& protocol.User {})
136+
137+ t .Run ("permission denied when feature flag is disabled" , func (t * testing.T ) {
138+ serverMock , client := setupTokensService (t , withTokenFeatureDisabled )
139+
140+ serverMock .EXPECT ().GetLoggedInUser (gomock .Any ()).Return (user , nil )
141+
142+ _ , err := client .RegeneratePersonalAccessToken (context .Background (), connect .NewRequest (& v1.RegeneratePersonalAccessTokenRequest {
143+ Id : uuid .New ().String (),
144+ }))
145+
146+ require .Error (t , err , "This feature is currently in beta. If you would like to be part of the beta, please contact us." )
147+ require .Equal (t , connect .CodePermissionDenied , connect .CodeOf (err ))
148+ })
149+
150+ t .Run ("invalid argument when Token ID is empty" , func (t * testing.T ) {
151+ _ , client := setupTokensService (t , withTokenFeatureEnabled )
152+
153+ _ , err := client .RegeneratePersonalAccessToken (context .Background (), connect .NewRequest (& v1.RegeneratePersonalAccessTokenRequest {}))
154+
155+ require .Equal (t , connect .CodeInvalidArgument , connect .CodeOf (err ))
156+ })
157+
158+ t .Run ("invalid argument when Token ID is not a valid UUID" , func (t * testing.T ) {
159+ _ , client := setupTokensService (t , withTokenFeatureEnabled )
160+
161+ _ , err := client .RegeneratePersonalAccessToken (context .Background (), connect .NewRequest (& v1.RegeneratePersonalAccessTokenRequest {
162+ Id : "foo-bar" ,
163+ }))
164+
165+ require .Equal (t , connect .CodeInvalidArgument , connect .CodeOf (err ))
166+ })
167+
168+ t .Run ("unimplemented when feature flag enabled" , func (t * testing.T ) {
169+ serverMock , client := setupTokensService (t , withTokenFeatureEnabled )
170+
171+ serverMock .EXPECT ().GetLoggedInUser (gomock .Any ()).Return (user , nil )
172+
173+ _ , err := client .RegeneratePersonalAccessToken (context .Background (), connect .NewRequest (& v1.RegeneratePersonalAccessTokenRequest {
174+ Id : uuid .New ().String (),
175+ }))
176+
177+ require .Equal (t , connect .CodeUnimplemented , connect .CodeOf (err ))
178+ })
179+ }
180+
181+ func TestTokensService_UpdatePersonalAccessToken (t * testing.T ) {
182+ user := newUser (& protocol.User {})
183+
184+ t .Run ("permission denied when feature flag is disabled" , func (t * testing.T ) {
185+ serverMock , client := setupTokensService (t , withTokenFeatureDisabled )
186+
187+ serverMock .EXPECT ().GetLoggedInUser (gomock .Any ()).Return (user , nil )
188+
189+ _ , err := client .UpdatePersonalAccessToken (context .Background (), connect .NewRequest (& v1.UpdatePersonalAccessTokenRequest {
190+ Token : & v1.PersonalAccessToken {
191+ Id : uuid .New ().String (),
192+ },
193+ }))
194+
195+ require .Error (t , err , "This feature is currently in beta. If you would like to be part of the beta, please contact us." )
196+ require .Equal (t , connect .CodePermissionDenied , connect .CodeOf (err ))
197+ })
198+
199+ t .Run ("invalid argument when Token ID is empty" , func (t * testing.T ) {
200+ _ , client := setupTokensService (t , withTokenFeatureEnabled )
201+
202+ _ , err := client .UpdatePersonalAccessToken (context .Background (), connect .NewRequest (& v1.UpdatePersonalAccessTokenRequest {}))
203+
204+ require .Equal (t , connect .CodeInvalidArgument , connect .CodeOf (err ))
205+ })
206+
207+ t .Run ("invalid argument when Token ID is not a valid UUID" , func (t * testing.T ) {
208+ _ , client := setupTokensService (t , withTokenFeatureEnabled )
209+
210+ _ , err := client .UpdatePersonalAccessToken (context .Background (), connect .NewRequest (& v1.UpdatePersonalAccessTokenRequest {
211+ Token : & v1.PersonalAccessToken {
212+ Id : "foo-bar" ,
213+ },
214+ }))
215+
216+ require .Equal (t , connect .CodeInvalidArgument , connect .CodeOf (err ))
217+ })
218+
219+ t .Run ("unimplemented when feature flag enabled" , func (t * testing.T ) {
220+ serverMock , client := setupTokensService (t , withTokenFeatureEnabled )
221+
222+ serverMock .EXPECT ().GetLoggedInUser (gomock .Any ()).Return (user , nil )
223+
224+ _ , err := client .UpdatePersonalAccessToken (context .Background (), connect .NewRequest (& v1.UpdatePersonalAccessTokenRequest {
225+ Token : & v1.PersonalAccessToken {
226+ Id : uuid .New ().String (),
227+ },
228+ }))
229+
230+ require .Equal (t , connect .CodeUnimplemented , connect .CodeOf (err ))
231+ })
232+ }
233+
234+ func TestTokensService_DeletePersonalAccessToken (t * testing.T ) {
235+ user := newUser (& protocol.User {})
236+
237+ t .Run ("permission denied when feature flag is disabled" , func (t * testing.T ) {
238+ serverMock , client := setupTokensService (t , withTokenFeatureDisabled )
239+
240+ serverMock .EXPECT ().GetLoggedInUser (gomock .Any ()).Return (user , nil )
241+
242+ _ , err := client .DeletePersonalAccessToken (context .Background (), connect .NewRequest (& v1.DeletePersonalAccessTokenRequest {
243+ Id : uuid .New ().String (),
244+ }))
245+
246+ require .Error (t , err , "This feature is currently in beta. If you would like to be part of the beta, please contact us." )
247+ require .Equal (t , connect .CodePermissionDenied , connect .CodeOf (err ))
248+ })
249+
250+ t .Run ("invalid argument when Token ID is empty" , func (t * testing.T ) {
251+ _ , client := setupTokensService (t , withTokenFeatureEnabled )
252+
253+ _ , err := client .DeletePersonalAccessToken (context .Background (), connect .NewRequest (& v1.DeletePersonalAccessTokenRequest {}))
254+
255+ require .Equal (t , connect .CodeInvalidArgument , connect .CodeOf (err ))
256+ })
257+
258+ t .Run ("invalid argument when Token ID is not a valid UUID" , func (t * testing.T ) {
259+ _ , client := setupTokensService (t , withTokenFeatureEnabled )
260+
261+ _ , err := client .DeletePersonalAccessToken (context .Background (), connect .NewRequest (& v1.DeletePersonalAccessTokenRequest {
262+ Id : "foo-bar" ,
263+ }))
264+
265+ require .Equal (t , connect .CodeInvalidArgument , connect .CodeOf (err ))
266+ })
267+
268+ t .Run ("unimplemented when feature flag enabled" , func (t * testing.T ) {
269+ serverMock , client := setupTokensService (t , withTokenFeatureEnabled )
270+
271+ serverMock .EXPECT ().GetLoggedInUser (gomock .Any ()).Return (user , nil )
272+
273+ _ , err := client .DeletePersonalAccessToken (context .Background (), connect .NewRequest (& v1.DeletePersonalAccessTokenRequest {
274+ Id : uuid .New ().String (),
275+ }))
276+
277+ require .Equal (t , connect .CodeUnimplemented , connect .CodeOf (err ))
278+ })
279+ }
280+
109281func setupTokensService (t * testing.T , expClient experiments.Client ) (* protocol.MockAPIInterface , v1connect.TokensServiceClient ) {
110282 t .Helper ()
111283
0 commit comments