1<?php
2
3// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the GNU Affero General Public License v3.0.
4// See the LICENCE file in the repository root for full licence text.
5
6declare(strict_types=1);
7
8namespace Tests\Providers;
9
10use App\Http\Controllers\OAuth\AuthorizedClientsController;
11use App\Http\Controllers\OAuth\ClientsController;
12use App\Http\Controllers\Passport\AuthorizationController;
13use Laravel\Passport\Http\Controllers\AccessTokenController;
14use Laravel\Passport\Http\Controllers\ApproveAuthorizationController;
15use Laravel\Passport\Http\Controllers\DenyAuthorizationController;
16use Request;
17use Route;
18use Tests\TestCase;
19
20class AuthServiceProviderTest extends TestCase
21{
22 /**
23 * @dataProvider oauthRoutesRegisteredDataProvider
24 */
25 public function testOAuthRoutesRegistered($url, $method, $uses)
26 {
27 $route = Route::getRoutes()->match(Request::create($url, $method));
28 $this->assertSame($uses, $route->action['uses']);
29 }
30
31 public function testPassportDefaultRoutesNotRegistered()
32 {
33 $routeNames = array_keys(Route::getRoutes()->getRoutesByName());
34
35 foreach ($routeNames as $routeName) {
36 $this->assertStringStartsNotWith('passport.', $routeName);
37 }
38 }
39
40 public static function oauthRoutesRegisteredDataProvider()
41 {
42 return [
43 ['oauth/authorize', 'GET', AuthorizationController::class.'@authorize'],
44 ['oauth/authorize', 'POST', ApproveAuthorizationController::class.'@approve'],
45 ['oauth/authorize', 'DELETE', DenyAuthorizationController::class.'@deny'],
46
47 ['oauth/authorized-clients/1', 'DELETE', AuthorizedClientsController::class.'@destroy'],
48
49 ['oauth/clients', 'GET', ClientsController::class.'@index'],
50 ['oauth/clients', 'POST', ClientsController::class.'@store'],
51 ['oauth/clients/1', 'PUT', ClientsController::class.'@update'],
52 ['oauth/clients/1', 'DELETE', ClientsController::class.'@destroy'],
53 ['oauth/clients/1/reset-secret', 'POST', ClientsController::class.'@resetSecret'],
54
55 ['oauth/token', 'POST', AccessTokenController::class.'@issueToken'],
56 ];
57 }
58}