Skip to content

Commit 0df41c5

Browse files
Merge pull request dingo#1716 from loonpwn/feat/phpunit-8
[3.x] PHPUnit 8.5
2 parents fcba028 + be8e357 commit 0df41c5

39 files changed

+470
-365
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
"illuminate/pagination": "^5.5 || ^6.0 || ^7.0",
3333
"laravel/lumen-framework": "^5.5 || ^6.0 || ^7.0",
3434
"mockery/mockery": "~1.0",
35-
"phpunit/phpunit": "^4.8.35 || ^5.4.3 || ^6.5",
35+
"phpunit/phpunit": "^4.8.35 || ^5.4.3 || ^6.5 || ^8.5",
3636
"squizlabs/php_codesniffer": "~2.0",
3737
"tymon/jwt-auth": "1.0.*"
3838
},

phpunit.xml.dist

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
processIsolation="false"
1414
stopOnError="false"
1515
stopOnFailure="false"
16-
syntaxCheck="true"
1716
verbose="true"
1817
>
1918
<testsuites>

tests/Auth/AuthTest.php

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,36 +2,45 @@
22

33
namespace Dingo\Api\Tests\Auth;
44

5-
use Mockery as m;
65
use Dingo\Api\Auth\Auth;
6+
use Dingo\Api\Contract\Auth\Provider;
77
use Dingo\Api\Http\Request;
88
use Dingo\Api\Routing\Route;
99
use Dingo\Api\Routing\Router;
10-
use PHPUnit\Framework\TestCase;
10+
use Dingo\Api\Tests\BaseTestCase;
1111
use Illuminate\Container\Container;
12-
use Dingo\Api\Contract\Auth\Provider;
12+
use Mockery as m;
1313
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
1414
use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
1515

16-
class AuthTest extends TestCase
16+
class AuthTest extends BaseTestCase
1717
{
18-
public function setUp()
18+
/**
19+
* @var Container
20+
*/
21+
protected $container;
22+
/**
23+
* @var Router|m\LegacyMockInterface|m\MockInterface
24+
*/
25+
protected $router;
26+
/**
27+
* @var Auth
28+
*/
29+
protected $auth;
30+
31+
public function setUp(): void
1932
{
33+
parent::setUp();
34+
2035
$this->container = new Container;
2136
$this->router = m::mock(Router::class);
2237
$this->auth = new Auth($this->router, $this->container, []);
2338
}
2439

25-
public function tearDown()
26-
{
27-
m::close();
28-
}
29-
30-
/**
31-
* @expectedException \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException
32-
*/
3340
public function testExceptionThrownWhenAuthorizationHeaderNotSet()
3441
{
42+
$this->expectException(UnauthorizedHttpException::class);
43+
3544
$this->router->shouldReceive('getCurrentRoute')->once()->andReturn($route = m::mock(Route::class));
3645
$this->router->shouldReceive('getCurrentRequest')->once()->andReturn($request = Request::create('foo', 'GET'));
3746

@@ -43,11 +52,10 @@ public function testExceptionThrownWhenAuthorizationHeaderNotSet()
4352
$this->auth->authenticate();
4453
}
4554

46-
/**
47-
* @expectedException \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException
48-
*/
4955
public function testExceptionThrownWhenProviderFailsToAuthenticate()
5056
{
57+
$this->expectException(UnauthorizedHttpException::class);
58+
5159
$this->router->shouldReceive('getCurrentRoute')->once()->andReturn($route = m::mock(Route::class));
5260
$this->router->shouldReceive('getCurrentRequest')->once()->andReturn($request = Request::create('foo', 'GET'));
5361

tests/Auth/Provider/AuthorizationTest.php

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,19 @@
22

33
namespace Dingo\Api\Tests\Auth\Provider;
44

5-
use Mockery as m;
65
use Dingo\Api\Routing\Route;
7-
use Illuminate\Http\Request;
8-
use PHPUnit\Framework\TestCase;
6+
use Dingo\Api\Tests\BaseTestCase;
97
use Dingo\Api\Tests\Stubs\AuthorizationProviderStub;
8+
use Illuminate\Http\Request;
9+
use Mockery as m;
10+
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
1011

11-
class AuthorizationTest extends TestCase
12+
class AuthorizationTest extends BaseTestCase
1213
{
13-
public function tearDown()
14-
{
15-
m::close();
16-
}
17-
18-
/**
19-
* @expectedException \Symfony\Component\HttpKernel\Exception\BadRequestHttpException
20-
*/
2114
public function testExceptionThrownWhenAuthorizationHeaderIsInvalid()
2215
{
16+
$this->expectException(BadRequestHttpException::class);
17+
2318
$request = Request::create('GET', '/');
2419

2520
(new AuthorizationProviderStub)->authenticate($request, m::mock(Route::class));

tests/Auth/Provider/BasicTest.php

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,38 +2,36 @@
22

33
namespace Dingo\Api\Tests\Auth\Provider;
44

5-
use Mockery as m;
5+
use Dingo\Api\Auth\Provider\Basic;
6+
use Dingo\Api\Routing\Route;
7+
use Dingo\Api\Tests\BaseTestCase;
68
use Illuminate\Http\Request;
79
use Illuminate\Http\Response;
8-
use PHPUnit\Framework\TestCase;
9-
use Dingo\Api\Auth\Provider\Basic;
10+
use Mockery as m;
11+
use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
1012

11-
class BasicTest extends TestCase
13+
class BasicTest extends BaseTestCase
1214
{
1315
protected $auth;
1416
protected $provider;
1517

16-
public function setUp()
18+
public function setUp(): void
1719
{
20+
parent::setUp();
21+
1822
$this->auth = m::mock('Illuminate\Auth\AuthManager');
1923
$this->provider = new Basic($this->auth);
2024
}
2125

22-
public function tearDown()
23-
{
24-
m::close();
25-
}
26-
27-
/**
28-
* @expectedException \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException
29-
*/
3026
public function testInvalidBasicCredentialsThrowsException()
3127
{
28+
$this->expectException(UnauthorizedHttpException::class);
29+
3230
$request = Request::create('GET', '/', [], [], [], ['HTTP_AUTHORIZATION' => 'Basic 12345']);
3331

3432
$this->auth->shouldReceive('onceBasic')->once()->with('email')->andReturn(new Response('', 401));
3533

36-
$this->provider->authenticate($request, m::mock(\Dingo\Api\Routing\Route::class));
34+
$this->provider->authenticate($request, m::mock(Route::class));
3735
}
3836

3937
public function testValidCredentialsReturnsUser()
@@ -43,6 +41,6 @@ public function testValidCredentialsReturnsUser()
4341
$this->auth->shouldReceive('onceBasic')->once()->with('email')->andReturn(null);
4442
$this->auth->shouldReceive('user')->once()->andReturn('foo');
4543

46-
$this->assertSame('foo', $this->provider->authenticate($request, m::mock(\Dingo\Api\Routing\Route::class)));
44+
$this->assertSame('foo', $this->provider->authenticate($request, m::mock(Route::class)));
4745
}
4846
}

tests/Auth/Provider/JWTTest.php

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,49 +2,47 @@
22

33
namespace Dingo\Api\Tests\Auth\Provider;
44

5-
use Mockery as m;
6-
use Illuminate\Http\Request;
7-
use PHPUnit\Framework\TestCase;
85
use Dingo\Api\Auth\Provider\JWT;
6+
use Dingo\Api\Routing\Route;
7+
use Dingo\Api\Tests\BaseTestCase;
8+
use Illuminate\Http\Request;
9+
use Mockery as m;
10+
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
11+
use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
912
use Tymon\JWTAuth\Exceptions\JWTException;
1013

11-
class JWTTest extends TestCase
14+
class JWTTest extends BaseTestCase
1215
{
1316
protected $auth;
1417
protected $provider;
1518

16-
public function setUp()
19+
public function setUp(): void
1720
{
21+
parent::setUp();
22+
1823
$this->auth = m::mock('Tymon\JWTAuth\JWTAuth');
1924
$this->provider = new JWT($this->auth);
2025
}
2126

22-
public function tearDown()
23-
{
24-
m::close();
25-
}
26-
27-
/**
28-
* @expectedException \Symfony\Component\HttpKernel\Exception\BadRequestHttpException
29-
*/
3027
public function testValidatingAuthorizationHeaderFailsAndThrowsException()
3128
{
29+
$this->expectException(BadRequestHttpException::class);
30+
3231
$request = Request::create('foo', 'GET');
33-
$this->provider->authenticate($request, m::mock(\Dingo\Api\Routing\Route::class));
32+
$this->provider->authenticate($request, m::mock(Route::class));
3433
}
3534

36-
/**
37-
* @expectedException \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException
38-
*/
3935
public function testAuthenticatingFailsAndThrowsException()
4036
{
37+
$this->expectException(UnauthorizedHttpException::class);
38+
4139
$request = Request::create('foo', 'GET');
4240
$request->headers->set('authorization', 'Bearer foo');
4341

4442
$this->auth->shouldReceive('setToken')->with('foo')->andReturn(m::self());
4543
$this->auth->shouldReceive('authenticate')->once()->andThrow(new JWTException('foo'));
4644

47-
$this->provider->authenticate($request, m::mock(\Dingo\Api\Routing\Route::class));
45+
$this->provider->authenticate($request, m::mock(Route::class));
4846
}
4947

5048
public function testAuthenticatingSucceedsAndReturnsUserObject()
@@ -55,7 +53,7 @@ public function testAuthenticatingSucceedsAndReturnsUserObject()
5553
$this->auth->shouldReceive('setToken')->with('foo')->andReturn(m::self());
5654
$this->auth->shouldReceive('authenticate')->once()->andReturn((object) ['id' => 1]);
5755

58-
$this->assertSame(1, $this->provider->authenticate($request, m::mock(\Dingo\Api\Routing\Route::class))->id);
56+
$this->assertSame(1, $this->provider->authenticate($request, m::mock(Route::class))->id);
5957
}
6058

6159
public function testAuthenticatingWithQueryStringSucceedsAndReturnsUserObject()
@@ -65,6 +63,6 @@ public function testAuthenticatingWithQueryStringSucceedsAndReturnsUserObject()
6563
$this->auth->shouldReceive('setToken')->with('foo')->andReturn(m::self());
6664
$this->auth->shouldReceive('authenticate')->once()->andReturn((object) ['id' => 1]);
6765

68-
$this->assertSame(1, $this->provider->authenticate($request, m::mock(\Dingo\Api\Routing\Route::class))->id);
66+
$this->assertSame(1, $this->provider->authenticate($request, m::mock(Route::class))->id);
6967
}
7068
}

tests/BaseTestCase.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
namespace Dingo\Api\Tests;
4+
5+
use Dingo\Api\Http\Response;
6+
use Mockery;
7+
use PHPUnit\Framework\TestCase;
8+
9+
class BaseTestCase extends TestCase
10+
{
11+
public function tearDown(): void
12+
{
13+
parent::tearDown();
14+
// make sure mocker is cleaned up
15+
Mockery::close();
16+
// reset response formatters on tear down
17+
Response::setFormatters([]);
18+
Response::setFormatsOptions([]);
19+
}
20+
21+
public function setUp(): void
22+
{
23+
parent::setUp();
24+
}
25+
}

0 commit comments

Comments
 (0)