Skip to content

Commit d3ff957

Browse files
committed
added admin middleware test
1 parent f49b1a8 commit d3ff957

File tree

1 file changed

+111
-0
lines changed

1 file changed

+111
-0
lines changed
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
<?php
2+
3+
namespace Tests\Feature\Controllers;
4+
5+
use Illuminate\Foundation\Testing\RefreshDatabase;
6+
use Illuminate\Foundation\Testing\WithFaker;
7+
use Tests\TestCase;
8+
9+
10+
11+
namespace Tests\Unit\Http\Middleware;
12+
13+
use Tests\TestCase;
14+
use Illuminate\Http\Request;
15+
use Illuminate\Support\Facades\Auth;
16+
use App\Http\Middleware\Admin;
17+
18+
class AdminMiddlewareTest extends TestCase
19+
{
20+
/**
21+
* Test if admin user with appropriate access level can access the route.
22+
*
23+
* @return void
24+
*/
25+
public function test_admin_user_with_appropriate_access_level_can_access_route()
26+
{
27+
// Mocking authenticated admin user
28+
$user = new \stdClass();
29+
$user->access_level = 3; // Assuming access level 3 is required for admin access
30+
Auth::shouldReceive('check')->once()->andReturn(true);
31+
Auth::shouldReceive('user')->once()->andReturn($user);
32+
33+
// Create a request
34+
$request = Request::create('/admin-route', 'GET');
35+
36+
// Create an instance of the Admin middleware
37+
$middleware = new Admin();
38+
39+
// Mock the closure
40+
$next = function ($request) {
41+
return 'OK';
42+
};
43+
44+
// Call the middleware handle method
45+
$response = $middleware->handle($request, $next, 3);
46+
47+
// Assert that the response is 'OK'
48+
$this->assertEquals('OK', $response);
49+
}
50+
51+
/**
52+
* Test if non-admin user is redirected to home route.
53+
*
54+
* @return void
55+
*/
56+
public function test_non_admin_user_is_redirected_to_home_route()
57+
{
58+
// Mocking authenticated non-admin user
59+
$user = new \stdClass();
60+
$user->access_level = 2; // Assuming access level 2 is not sufficient for admin access
61+
Auth::shouldReceive('check')->once()->andReturn(true);
62+
Auth::shouldReceive('user')->once()->andReturn($user);
63+
64+
// Create a request
65+
$request = Request::create('/admin-route', 'GET');
66+
67+
// Create an instance of the Admin middleware
68+
$middleware = new Admin();
69+
70+
// Mock the closure
71+
$next = function ($request) {
72+
return 'OK';
73+
};
74+
75+
// Call the middleware handle method
76+
$response = $middleware->handle($request, $next, 3);
77+
78+
// Assert that the response is a redirect to home route
79+
$this->assertEquals(302, $response->getStatusCode());
80+
$this->assertEquals(route('home'), $response->getTargetUrl());
81+
}
82+
83+
/**
84+
* Test if unauthenticated user is redirected to login route.
85+
*
86+
* @return void
87+
*/
88+
public function test_unauthenticated_user_is_redirected_to_login_route()
89+
{
90+
// Mocking unauthenticated user
91+
Auth::shouldReceive('check')->once()->andReturn(false);
92+
93+
// Create a request
94+
$request = Request::create('/admin-route', 'GET');
95+
96+
// Create an instance of the Admin middleware
97+
$middleware = new Admin();
98+
99+
// Mock the closure
100+
$next = function ($request) {
101+
return 'OK';
102+
};
103+
104+
// Call the middleware handle method
105+
$response = $middleware->handle($request, $next, 3);
106+
107+
// Assert that the response is a redirect to login route
108+
$this->assertEquals(302, $response->getStatusCode());
109+
$this->assertEquals(route('login'), $response->getTargetUrl());
110+
}
111+
}

0 commit comments

Comments
 (0)