@@ -63,6 +63,33 @@ func TestAPIGetTokensPermission(t *testing.T) {
6363 MakeRequest (t , req , http .StatusForbidden )
6464}
6565
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+
6693type permission struct {
6794 category auth_model.AccessTokenScopeCategory
6895 level auth_model.AccessTokenScopeLevel
@@ -525,7 +552,7 @@ func createAPIAccessTokenWithoutCleanUp(t *testing.T, tokenName string, user *us
525552 }
526553 }
527554 log .Debug ("Requesting creation of token with scopes: %v" , scopes )
528- req := NewRequestWithJSON (t , "POST" , "/api/v1/users/user1 /tokens" , payload )
555+ req := NewRequestWithJSON (t , "POST" , "/api/v1/users/" + user . LoginName + " /tokens" , payload )
529556
530557 req = AddBasicAuthHeader (req , user .Name )
531558 resp := MakeRequest (t , req , http .StatusCreated )
@@ -545,7 +572,7 @@ func createAPIAccessTokenWithoutCleanUp(t *testing.T, tokenName string, user *us
545572// createAPIAccessTokenWithoutCleanUp Delete an API access token and assert that
546573// deletion succeeded.
547574func deleteAPIAccessToken (t * testing.T , accessToken api.AccessToken , user * user_model.User ) {
548- req := NewRequestf (t , "DELETE" , "/api/v1/users/user1 /tokens/%d" , accessToken .ID )
575+ req := NewRequestf (t , "DELETE" , "/api/v1/users/" + user . LoginName + " /tokens/%d" , accessToken .ID )
549576 req = AddBasicAuthHeader (req , user .Name )
550577 MakeRequest (t , req , http .StatusNoContent )
551578
0 commit comments