@@ -102,6 +102,19 @@ def resp_rotate_personal_access_token(token_content):
102102yield rsps
103103
104104
105+ @pytest .fixture
106+ def resp_self_rotate_personal_access_token (token_content ):
107+ with responses .RequestsMock ()as rsps :
108+ rsps .add (
109+ method = responses .POST ,
110+ url = "http://localhost/api/v4/personal_access_tokens/self/rotate" ,
111+ json = token_content ,
112+ content_type = "application/json" ,
113+ status = 200 ,
114+ )
115+ yield rsps
116+
117+
105118def test_create_personal_access_token (gl ,resp_create_user_personal_access_token ):
106119user = gl .users .get (1 ,lazy = True )
107120access_token = user .personal_access_tokens .create (
@@ -148,8 +161,20 @@ def test_revoke_personal_access_token_by_id(gl, resp_delete_personal_access_toke
148161gl .personal_access_tokens .delete (token_id )
149162
150163
151- def test_rotate_project_access_token (gl ,resp_rotate_personal_access_token ):
164+ def test_rotate_personal_access_token (gl ,resp_rotate_personal_access_token ):
152165access_token = gl .personal_access_tokens .get (1 ,lazy = True )
153166access_token .rotate ()
154167assert isinstance (access_token ,PersonalAccessToken )
155168assert access_token .token == "s3cr3t"
169+
170+
171+ def test_self_rotate_personal_access_token (gl ,resp_self_rotate_personal_access_token ):
172+ access_token = gl .personal_access_tokens .get (1 ,lazy = True )
173+ access_token .rotate (self_rotate = True )
174+ assert isinstance (access_token ,PersonalAccessToken )
175+ assert access_token .token == "s3cr3t"
176+
177+ # Verify that the url contains "self"
178+ rotation_calls = resp_self_rotate_personal_access_token .calls
179+ assert len (rotation_calls )== 1
180+ assert "self/rotate" in rotation_calls [0 ].request .url