@@ -135,10 +135,38 @@ def test_update_version_with_valid_token(self):
135135 'package' : uploaded_file ,
136136 })
137137 self .assertEqual (response .status_code , 302 )
138- # This will create a new version because this one is using token and doesn't have a created_by column
139- self .assertTrue (PluginVersion .objects .filter (plugin__name = 'Test Plugin' , version = '0.0.1' ).exists ())
138+ self .assertFalse (PluginVersion .objects .filter (plugin__name = 'Test Plugin' , version = '0.0.1' ).exists ())
140139 self .assertTrue (PluginVersion .objects .filter (plugin__name = 'Test Plugin' , version = '0.0.2' ).exists ())
141140
141+ def test_update_approved_version_with_token (self ):
142+ # Generate a token for the authenticated user
143+ self .client .post (self .url_token_create , {})
144+ outstanding_token = OutstandingToken .objects .last ().token
145+ refresh = RefreshToken (outstanding_token )
146+ refresh ['plugin_id' ] = self .plugin .pk
147+ refresh ['refresh_jti' ] = refresh ['jti' ]
148+ access_token = str (refresh .access_token )
149+
150+ version = PluginVersion .objects .get (plugin__name = 'Test Plugin' , version = '0.0.1' )
151+ version .approved = True
152+ version .save ()
153+ self .assertTrue (version .approved )
154+
155+ # Log out the user and use the token
156+ self .client .logout ()
157+
158+ c = Client (HTTP_AUTHORIZATION = f"Bearer { access_token } " )
159+
160+ # Test request with access token
161+ response = c .get (self .url_update_version )
162+ # Check that the response is forbidden
163+ self .assertEqual (response .status_code , 401 )
164+ self .assertIn ("application/json" , response ["Content-Type" ])
165+ self .assertEqual (
166+ response .json ().get ("detail" ),
167+ "You cannot edit an approved version, please create a new version instead."
168+ )
169+
142170 def test_update_version_with_invalid_token (self ):
143171 # Log out the user and use the token
144172 self .client .logout ()
0 commit comments