@@ -63,6 +63,33 @@ func TestAPIGetTokensPermission(t *testing.T) {
63
63
MakeRequest (t , req , http .StatusForbidden )
64
64
}
65
65
66
+ // TestAPIDeleteTokensPermission ensures that only the admin can delete tokens from other users
67
+ func TestAPIDeleteTokensPermission (t * testing.T ) {
68
+ defer tests .PrepareTestEnv (t )()
69
+
70
+ admin := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 1 })
71
+ user2 := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 2 })
72
+ user4 := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 4 })
73
+
74
+ // admin can delete tokens for other users
75
+ createAPIAccessTokenWithoutCleanUp (t , "test-key-1" , user2 , nil )
76
+ req := NewRequestf (t , "DELETE" , "/api/v1/users/" + user2 .LoginName + "/tokens/test-key-1" )
77
+ req = AddBasicAuthHeader (req , admin .Name )
78
+ MakeRequest (t , req , http .StatusNoContent )
79
+
80
+ // non-admin can delete tokens for himself
81
+ createAPIAccessTokenWithoutCleanUp (t , "test-key-2" , user2 , nil )
82
+ req = NewRequestf (t , "DELETE" , "/api/v1/users/" + user2 .LoginName + "/tokens/test-key-2" )
83
+ req = AddBasicAuthHeader (req , user2 .Name )
84
+ MakeRequest (t , req , http .StatusNoContent )
85
+
86
+ // non-admin can't delete tokens for other users
87
+ createAPIAccessTokenWithoutCleanUp (t , "test-key-3" , user2 , nil )
88
+ req = NewRequestf (t , "DELETE" , "/api/v1/users/" + user2 .LoginName + "/tokens/test-key-3" )
89
+ req = AddBasicAuthHeader (req , user4 .Name )
90
+ MakeRequest (t , req , http .StatusForbidden )
91
+ }
92
+
66
93
type permission struct {
67
94
category auth_model.AccessTokenScopeCategory
68
95
level auth_model.AccessTokenScopeLevel
@@ -526,7 +553,7 @@ func createAPIAccessTokenWithoutCleanUp(t *testing.T, tokenName string, user *us
526
553
}
527
554
}
528
555
log .Debug ("Requesting creation of token with scopes: %v" , scopes )
529
- req := NewRequestWithJSON (t , "POST" , "/api/v1/users/user1 /tokens" , payload )
556
+ req := NewRequestWithJSON (t , "POST" , "/api/v1/users/" + user . LoginName + " /tokens" , payload )
530
557
531
558
req = AddBasicAuthHeader (req , user .Name )
532
559
resp := MakeRequest (t , req , http .StatusCreated )
@@ -546,7 +573,7 @@ func createAPIAccessTokenWithoutCleanUp(t *testing.T, tokenName string, user *us
546
573
// createAPIAccessTokenWithoutCleanUp Delete an API access token and assert that
547
574
// deletion succeeded.
548
575
func deleteAPIAccessToken (t * testing.T , accessToken api.AccessToken , user * user_model.User ) {
549
- req := NewRequestf (t , "DELETE" , "/api/v1/users/user1 /tokens/%d" , accessToken .ID )
576
+ req := NewRequestf (t , "DELETE" , "/api/v1/users/" + user . LoginName + " /tokens/%d" , accessToken .ID )
550
577
req = AddBasicAuthHeader (req , user .Name )
551
578
MakeRequest (t , req , http .StatusNoContent )
552
579
0 commit comments