Skip to content

Commit 947a21b

Browse files
committed
extract resetters tests and fix cookie resetter test
1 parent e2e6ea6 commit 947a21b

10 files changed

+344
-248
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace SwooleTW\Http\Tests\Server\Resetters;
4+
5+
use Mockery as m;
6+
use Illuminate\Http\Request;
7+
use SwooleTW\Http\Tests\TestCase;
8+
use SwooleTW\Http\Server\Sandbox;
9+
use Illuminate\Container\Container;
10+
use SwooleTW\Http\Server\Resetters\BindRequest;
11+
12+
class BindRequestTest extends TestCase
13+
{
14+
public function testBindRequest()
15+
{
16+
$request = m::mock(Request::class);
17+
18+
$sandbox = m::mock(Sandbox::class);
19+
$sandbox->shouldReceive('getRequest')
20+
->once()
21+
->andReturn($request);
22+
23+
$container = new Container;
24+
25+
$resetter = new BindRequest;
26+
$app = $resetter->handle($container, $sandbox);
27+
28+
$this->assertSame($request, $app->make('request'));
29+
}
30+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
3+
namespace SwooleTW\Http\Tests\Server\Resetters;
4+
5+
use Mockery as m;
6+
use SwooleTW\Http\Tests\TestCase;
7+
use SwooleTW\Http\Server\Sandbox;
8+
use Illuminate\Container\Container;
9+
use SwooleTW\Http\Server\Resetters\ClearInstances;
10+
11+
class ClearInstanceTest extends TestCase
12+
{
13+
public function testClearInstance()
14+
{
15+
$sandbox = m::mock(Sandbox::class);
16+
$sandbox->shouldReceive('getConfig->get')
17+
->with('swoole_http.instances', [])
18+
->once()
19+
->andReturn(['foo']);
20+
21+
$container = new Container;
22+
$container->instance('foo', m::mock('foo'));
23+
24+
$resetter = new ClearInstances;
25+
$app = $resetter->handle($container, $sandbox);
26+
27+
$this->assertFalse($app->bound('foo'));
28+
}
29+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
3+
namespace SwooleTW\Http\Tests\Server\Resetters;
4+
5+
use Mockery as m;
6+
use SwooleTW\Http\Tests\TestCase;
7+
use SwooleTW\Http\Server\Sandbox;
8+
use Illuminate\Container\Container;
9+
use Illuminate\Contracts\Http\Kernel;
10+
use SwooleTW\Http\Server\Resetters\RebindKernelContainer;
11+
12+
class RebindKernelContainerTest extends TestCase
13+
{
14+
public function testRebindKernelContainer()
15+
{
16+
$sandbox = m::mock(Sandbox::class);
17+
$sandbox->shouldReceive('isLaravel')
18+
->once()
19+
->andReturn(true);
20+
21+
$kernel = m::mock(Kernel::class);
22+
23+
$container = new Container;
24+
$container->instance(Kernel::class, $kernel);
25+
26+
$resetter = new RebindKernelContainer;
27+
$app = $resetter->handle($container, $sandbox);
28+
29+
$this->assertSame($app, $app->make(Kernel::class)->app);
30+
}
31+
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
<?php
2+
3+
namespace SwooleTW\Http\Tests\Server\Resetters;
4+
5+
use Mockery as m;
6+
use Illuminate\Http\Request;
7+
use SwooleTW\Http\Tests\TestCase;
8+
use SwooleTW\Http\Server\Sandbox;
9+
use Illuminate\Container\Container;
10+
use SwooleTW\Http\Server\Resetters\RebindRouterContainer;
11+
12+
class RebindRouterContainerTest extends TestCase
13+
{
14+
public function testRebindLaravelRouterContainer()
15+
{
16+
$request = m::mock(Request::class);
17+
18+
$sandbox = m::mock(Sandbox::class);
19+
$sandbox->shouldReceive('isLaravel')
20+
->once()
21+
->andReturn(true);
22+
$sandbox->shouldReceive('getRequest')
23+
->once()
24+
->andReturn($request);
25+
26+
$router = m::mock('router');
27+
28+
$container = new Container;
29+
$container->instance('router', $router);
30+
31+
$route = m::mock('route');
32+
$route->controller = 'controller';
33+
$route->shouldReceive('setContainer')
34+
->once()
35+
->with($container);
36+
37+
$routes = m::mock('routes');
38+
$routes->shouldReceive('match')
39+
->once()
40+
->with($request)
41+
->andReturn($route);
42+
43+
$router->routes = $routes;
44+
45+
$resetter = new RebindRouterContainer;
46+
$app = $resetter->handle($container, $sandbox);
47+
48+
$this->assertSame($app, $router->container);
49+
}
50+
51+
public function testRebindLumenRouterContainer()
52+
{
53+
$sandbox = m::mock(Sandbox::class);
54+
$sandbox->shouldReceive('isLaravel')
55+
->once()
56+
->andReturn(false);
57+
58+
$router = m::mock('router');
59+
60+
$container = m::mock(Container::class);
61+
$container->shouldReceive('offsetSet')
62+
->with('router', $router)
63+
->once()
64+
->andReturnSelf();
65+
$container->shouldReceive('offsetGet')
66+
->with('router')
67+
->andReturn($router);
68+
$container->router = $router;
69+
70+
$this->mockMethod('property_exists', function () {
71+
return true;
72+
}, 'SwooleTW\Http\Server\Resetters');
73+
74+
$resetter = new RebindRouterContainer;
75+
$app = $resetter->handle($container, $sandbox);
76+
77+
$this->assertSame($app, $app->router->app);
78+
}
79+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
namespace SwooleTW\Http\Tests\Server\Resetters;
4+
5+
use Mockery as m;
6+
use SwooleTW\Http\Tests\TestCase;
7+
use SwooleTW\Http\Server\Sandbox;
8+
use Illuminate\Container\Container;
9+
use SwooleTW\Http\Server\Resetters\RebindViewContainer;
10+
11+
class RebindViewContainerTest extends TestCase
12+
{
13+
public function testRebindViewContainer()
14+
{
15+
$sandbox = m::mock(Sandbox::class);
16+
$view = m::mock('view');
17+
18+
$container = new Container;
19+
$container->instance('view', $view);
20+
21+
$resetter = new RebindViewContainer;
22+
$app = $resetter->handle($container, $sandbox);
23+
24+
$this->assertSame($app, $app->make('view')->container);
25+
$this->assertSame($app, $app->make('view')->shared['app']);
26+
}
27+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
3+
namespace SwooleTW\Http\Tests\Server\Resetters;
4+
5+
use Mockery as m;
6+
use SwooleTW\Http\Tests\TestCase;
7+
use SwooleTW\Http\Server\Sandbox;
8+
use Illuminate\Container\Container;
9+
use SwooleTW\Http\Server\Resetters\ResetConfig;
10+
use Illuminate\Contracts\Config\Repository as ConfigContract;
11+
12+
class ResetConfigTest extends TestCase
13+
{
14+
public function testResetConfig()
15+
{
16+
$config = m::mock(ConfigContract::class);
17+
$sandbox = m::mock(Sandbox::class);
18+
$sandbox->shouldReceive('getConfig')
19+
->once()
20+
->andReturn($config);
21+
22+
$container = new Container;
23+
$resetter = new ResetConfig;
24+
$app = $resetter->handle($container, $sandbox);
25+
26+
$this->assertSame(get_class($config), get_class($app->make('config')));
27+
}
28+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
3+
namespace SwooleTW\Http\Tests\Server\Resetters;
4+
5+
use Mockery as m;
6+
use SwooleTW\Http\Tests\TestCase;
7+
use SwooleTW\Http\Server\Sandbox;
8+
use Illuminate\Container\Container;
9+
use Symfony\Component\HttpFoundation\Cookie;
10+
use SwooleTW\Http\Server\Resetters\ResetCookie;
11+
12+
class ResetCookieTest extends TestCase
13+
{
14+
public function testResetCookie()
15+
{
16+
$cookie = m::mock(Cookie::class);
17+
$cookie->shouldReceive('getName')
18+
->once()
19+
->andReturn('foo');
20+
21+
$cookies = m::mock('cookies');
22+
$cookies->shouldReceive('getQueuedCookies')
23+
->once()
24+
->andReturn([$cookie]);
25+
$cookies->shouldReceive('unqueue')
26+
->once()
27+
->with('foo');
28+
29+
$sandbox = m::mock(Sandbox::class);
30+
31+
$container = new Container;
32+
$container->instance('cookie', $cookies);
33+
34+
$resetter = new ResetCookie;
35+
$app = $resetter->handle($container, $sandbox);
36+
}
37+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<?php
2+
3+
namespace SwooleTW\Http\Tests\Server\Resetters;
4+
5+
use Mockery as m;
6+
use SwooleTW\Http\Tests\TestCase;
7+
use SwooleTW\Http\Server\Sandbox;
8+
use Illuminate\Container\Container;
9+
use Illuminate\Support\ServiceProvider;
10+
use SwooleTW\Http\Server\Resetters\ResetProviders;
11+
12+
class ResetProvidersTest extends TestCase
13+
{
14+
public function testResetProviders()
15+
{
16+
$provider = m::mock(TestProvider::class);
17+
$provider->shouldReceive('register')
18+
->once();
19+
$provider->shouldReceive('boot')
20+
->once();
21+
22+
$sandbox = m::mock(Sandbox::class);
23+
$sandbox->shouldReceive('getProviders')
24+
->once()
25+
->andReturn([$provider]);
26+
27+
$this->mockMethod('method_exists', function () {
28+
return true;
29+
}, 'SwooleTW\Http\Server\Resetters');
30+
31+
$container = new Container;
32+
$resetter = new ResetProviders;
33+
$app = $resetter->handle($container, $sandbox);
34+
35+
$reflector = new \ReflectionProperty(TestProvider::class, 'app');
36+
$reflector->setAccessible(true);
37+
38+
$this->assertSame($app, $reflector->getValue($provider));
39+
}
40+
}
41+
42+
class TestProvider extends ServiceProvider
43+
{
44+
public function register()
45+
{
46+
//
47+
}
48+
49+
public function boot()
50+
{
51+
//
52+
}
53+
}
54+
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
3+
namespace SwooleTW\Http\Tests\Server\Resetters;
4+
5+
use Mockery as m;
6+
use SwooleTW\Http\Tests\TestCase;
7+
use SwooleTW\Http\Server\Sandbox;
8+
use Illuminate\Container\Container;
9+
use SwooleTW\Http\Server\Resetters\ResetSession;
10+
11+
class ResetSessionTest extends TestCase
12+
{
13+
public function testResetSession()
14+
{
15+
$session = m::mock('session');
16+
$session->shouldReceive('flush')
17+
->once();
18+
$session->shouldReceive('regenerate')
19+
->once();
20+
21+
$sandbox = m::mock(Sandbox::class);
22+
23+
$container = new Container;
24+
$container->instance('session', $session);
25+
26+
$resetter = new ResetSession;
27+
$app = $resetter->handle($container, $sandbox);
28+
}
29+
}

0 commit comments

Comments
 (0)