@@ -175,57 +175,38 @@ subtest 'personal access token' => sub {
175175 $t -> ua-> once(start => sub ($ua , $tx ) { $tx -> req-> url-> userinfo($userinfo ) });
176176 return $t ;
177177 };
178-
179- # No access token
180178 my $t = Test::Mojo-> new(' OpenQA::WebAPI' );
181- $t -> delete_ok(' /api/v1/assets/1' )-> status_is(403)-> json_is({error => ' no api key' });
182-
183- # Valid access token
184- $t -> $userinfo (' artie:ARTHURKEY01:EXCALIBUR' )-> delete_ok(' /api/v1/assets/1' )-> status_is(404);
185-
186- # Valid access token (OpenID user)
179+ $t -> delete_ok(' /api/v1/assets/1' )-> status_is(403)
180+ -> json_is({error => ' no api key' }, undef , ' access token is required' );
181+ $t -> $userinfo (' artie:ARTHURKEY01:EXCALIBUR' )-> delete_ok(' /api/v1/assets/1' )-> status_is(404, ' valid access token' );
187182 $t -> $userinfo (' lance:LANCELOTKEY01:MANYPEOPLEKNOW' )-> post_ok(' /api/v1/feature' => form => {version => 100})
188- -> status_is(200);
189-
190- # Invalid access token
183+ -> status_is(200, ' valid access token (OpenID user)' );
191184 $t -> $userinfo (' invalid:invalid' )-> delete_ok(' /api/v1/assets/1' )-> status_is(403)
192- -> json_is({error => ' invalid personal access token' });
193-
194- # Invalid username
185+ -> json_is({error => ' invalid personal access token' }, undef , ' invalid access token denied' );
195186 $t -> $userinfo (' invalid:ARTHURKEY01:EXCALIBUR' )-> delete_ok(' /api/v1/assets/1' )-> status_is(403)
196- -> json_is({error => ' invalid personal access token' });
197-
198- # Invalid key
187+ -> json_is({error => ' invalid personal access token' }, undef , ' invalid username denied' );
199188 $t -> $userinfo (' artie:INVALID:EXCALIBUR' )-> delete_ok(' /api/v1/assets/1' )-> status_is(403)
200- -> json_is({error => ' invalid personal access token' });
201-
202- # Invalid secret
189+ -> json_is({error => ' invalid personal access token' }, undef , ' invalid key denied' );
203190 $t -> $userinfo (' artie:ARTHURKEY01:INVALID' )-> delete_ok(' /api/v1/assets/1' )-> status_is(403)
204- -> json_is({error => ' invalid personal access token' });
205-
206- # Invalid secret (OpenID user)
191+ -> json_is({error => ' invalid personal access token' }, undef , ' invalid secret denied' );
207192 $t -> $userinfo (' lance:LANCELOTKEY01:INVALIDTOO' )-> post_ok(' /api/v1/feature' => form => {version => 100})
208- -> status_is(403)-> json_is({error => ' invalid personal access token' });
209-
210- # Valid access token (again)
211- $t -> $userinfo (' artie:ARTHURKEY01:EXCALIBUR' )-> delete_ok(' /api/v1/assets/1' )-> status_is(404);
193+ -> status_is(403)-> json_is({error => ' invalid personal access token' }, undef , ' invalid secret (OpenID) denied' );
194+ $t -> $userinfo (' artie:ARTHURKEY01:EXCALIBUR' )-> delete_ok(' /api/v1/assets/1' )
195+ -> status_is(404, ' valid access token (again)' );
212196
213197 subtest ' Bearer token' => sub {
214198 subtest ' Valid token' => sub {
215199 $t -> post_ok(' /api/v1/feature' => {Authorization => ' Bearer lance:LANCELOTKEY01:MANYPEOPLEKNOW' } => form =>
216200 {version => 100})-> status_is(200);
217201 };
218-
219202 subtest ' Invalid username' => sub {
220203 $t -> post_ok(' /api/v1/feature' => {Authorization => ' Bearer invalid:LANCELOTKEY01:MANYPEOPLEKNOW' } => form =>
221204 {version => 100})-> status_is(403)-> json_is({error => ' invalid personal access token' });
222205 };
223-
224206 subtest ' Invalid key' => sub {
225207 $t -> post_ok(' /api/v1/feature' => {Authorization => ' Bearer lance:LANCELOTKEY02:MANYPEOPLEKNOW' } => form =>
226208 {version => 100})-> status_is(403)-> json_is({error => ' invalid personal access token' });
227209 };
228-
229210 subtest ' Invalid secret' => sub {
230211 $t -> post_ok(' /api/v1/feature' => {Authorization => ' Bearer lance:LANCELOTKEY01:MANYPEOPLEKNOWS' } => form =>
231212 {version => 100})-> status_is(403)-> json_is({error => ' invalid personal access token' });
@@ -243,29 +224,21 @@ subtest 'personal access token (with reverse proxy)' => sub {
243224 });
244225 return $t ;
245226 };
246-
247- # Not HTTPS or localhost
248227 local $ENV {MOJO_REVERSE_PROXY } = 1;
249228 my $t = Test::Mojo-> new(' OpenQA::WebAPI' );
250229 $t -> $forwarded (' artie:ARTHURKEY01:EXCALIBUR' , ' 192.168.2.1' , ' http' )-> delete_ok(' /api/v1/assets/1' )-> status_is(403)
251- -> json_is({error => ' personal access token can only be used via HTTPS or from localhost' });
252-
253- # HTTPS
230+ -> json_is({error => ' personal access token can only be used via HTTPS or from localhost' },
231+ undef , ' not https or localhost denied' );
254232 $t -> $forwarded (' artie:ARTHURKEY01:EXCALIBUR' , ' 192.168.2.1' , ' https' )-> delete_ok(' /api/v1/assets/1' )
255- -> status_is(404);
256-
257- # localhost
258- $t -> $forwarded (' artie:ARTHURKEY01:EXCALIBUR' , ' 127.0.0.1' , ' http' )-> delete_ok(' /api/v1/assets/1' )-> status_is(404);
259-
260- # localhost (IPv6)
261- $t -> $forwarded (' artie:ARTHURKEY01:EXCALIBUR' , ' ::1' , ' http' )-> delete_ok(' /api/v1/assets/1' )-> status_is(404);
262-
263- # HTTPS and localhost
264- $t -> $forwarded (' artie:ARTHURKEY01:EXCALIBUR' , ' 127.0.0.1' , ' https' )-> delete_ok(' /api/v1/assets/1' )-> status_is(404);
265-
266- # HTTPS but invalid key
233+ -> status_is(404, ' https not found' );
234+ $t -> $forwarded (' artie:ARTHURKEY01:EXCALIBUR' , ' 127.0.0.1' , ' http' )-> delete_ok(' /api/v1/assets/1' )
235+ -> status_is(404, ' localhost not found' );
236+ $t -> $forwarded (' artie:ARTHURKEY01:EXCALIBUR' , ' ::1' , ' http' )-> delete_ok(' /api/v1/assets/1' )
237+ -> status_is(404, ' localhost ipv6 not found' );
238+ $t -> $forwarded (' artie:ARTHURKEY01:EXCALIBUR' , ' 127.0.0.1' , ' https' )-> delete_ok(' /api/v1/assets/1' )
239+ -> status_is(404, ' https and localhost not found' );
267240 $t -> $forwarded (' artie:INVALID:EXCALIBUR' , ' 192.168.2.1' , ' https' )-> delete_ok(' /api/v1/assets/1' )-> status_is(403)
268- -> json_is({error => ' invalid personal access token' });
241+ -> json_is({error => ' invalid personal access token' }, undef , ' HTTPS but invalid key ' );
269242};
270243
271244done_testing();
0 commit comments