mirror of
https://github.com/archtechx/tenancy.git
synced 2026-02-05 05:14:03 +00:00
test fixes
This commit is contained in:
parent
dd0a742028
commit
c034501db8
3 changed files with 20 additions and 33 deletions
|
|
@ -118,6 +118,7 @@ return [
|
||||||
Resolvers\PathTenantResolver::class => [
|
Resolvers\PathTenantResolver::class => [
|
||||||
'tenant_parameter_name' => 'tenant',
|
'tenant_parameter_name' => 'tenant',
|
||||||
'tenant_model_column' => null, // null = tenant key
|
'tenant_model_column' => null, // null = tenant key
|
||||||
|
'tenant_route_name_prefix' => null, // null = 'tenant.'
|
||||||
'allowed_extra_model_columns' => [], // used with binding route fields
|
'allowed_extra_model_columns' => [], // used with binding route fields
|
||||||
|
|
||||||
'cache' => false,
|
'cache' => false,
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ class PathTenantResolver extends Contracts\CachedTenantResolver
|
||||||
|
|
||||||
public static function tenantRouteNamePrefix(): string
|
public static function tenantRouteNamePrefix(): string
|
||||||
{
|
{
|
||||||
return (config('tenancy.identification.resolvers.' . static::class . '.tenant_route_name_prefix') ?? 'tenant') . '.';
|
return config('tenancy.identification.resolvers.' . static::class . '.tenant_route_name_prefix') ?? 'tenant.';
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function tenantModelColumn(): string
|
public static function tenantModelColumn(): string
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,14 @@ use Stancl\Tenancy\Bootstrappers\Integrations\FortifyRouteBootstrapper;
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
Event::listen(TenancyInitialized::class, BootstrapTenancy::class);
|
Event::listen(TenancyInitialized::class, BootstrapTenancy::class);
|
||||||
Event::listen(TenancyEnded::class, RevertToCentralContext::class);
|
Event::listen(TenancyEnded::class, RevertToCentralContext::class);
|
||||||
|
FortifyRouteBootstrapper::$passTenantParameter = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(function () {
|
||||||
|
FortifyRouteBootstrapper::$passTenantParameter = true;
|
||||||
|
FortifyRouteBootstrapper::$fortifyRedirectMap = [];
|
||||||
|
FortifyRouteBootstrapper::$fortifyHome = 'tenant.dashboard';
|
||||||
|
FortifyRouteBootstrapper::$defaultParameterNames = false;
|
||||||
});
|
});
|
||||||
|
|
||||||
test('fortify route tenancy bootstrapper updates fortify config correctly', function() {
|
test('fortify route tenancy bootstrapper updates fortify config correctly', function() {
|
||||||
|
|
@ -25,53 +33,31 @@ test('fortify route tenancy bootstrapper updates fortify config correctly', func
|
||||||
return true;
|
return true;
|
||||||
})->name($homeRouteName = 'home');
|
})->name($homeRouteName = 'home');
|
||||||
|
|
||||||
Route::get('/{tenant}/home', function () {
|
|
||||||
return true;
|
|
||||||
})->name($pathIdHomeRouteName = 'tenant.home');
|
|
||||||
|
|
||||||
Route::get('/welcome', function () {
|
Route::get('/welcome', function () {
|
||||||
return true;
|
return true;
|
||||||
})->name($welcomeRouteName = 'welcome');
|
})->name($welcomeRouteName = 'welcome');
|
||||||
|
|
||||||
Route::get('/{tenant}/welcome', function () {
|
|
||||||
return true;
|
|
||||||
})->name($pathIdWelcomeRouteName = 'path.welcome');
|
|
||||||
|
|
||||||
FortifyRouteBootstrapper::$fortifyHome = $homeRouteName;
|
FortifyRouteBootstrapper::$fortifyHome = $homeRouteName;
|
||||||
|
FortifyRouteBootstrapper::$fortifyRedirectMap['login'] = $welcomeRouteName;
|
||||||
|
|
||||||
// Make login redirect to the central welcome route
|
expect(config('fortify.home'))->toBe($originalFortifyHome);
|
||||||
FortifyRouteBootstrapper::$fortifyRedirectMap['login'] = [
|
expect(config('fortify.redirects'))->toBe($originalFortifyRedirects);
|
||||||
'route_name' => $welcomeRouteName,
|
|
||||||
'context' => Context::CENTRAL,
|
|
||||||
];
|
|
||||||
|
|
||||||
|
FortifyRouteBootstrapper::$passTenantParameter = true;
|
||||||
tenancy()->initialize($tenant = Tenant::create());
|
tenancy()->initialize($tenant = Tenant::create());
|
||||||
// The bootstraper makes fortify.home always receive the tenant parameter
|
|
||||||
expect(config('fortify.home'))->toBe('http://localhost/home?tenant=' . $tenant->getTenantKey());
|
expect(config('fortify.home'))->toBe('http://localhost/home?tenant=' . $tenant->getTenantKey());
|
||||||
|
expect(config('fortify.redirects'))->toEqual(['login' => 'http://localhost/welcome?tenant=' . $tenant->getTenantKey()]);
|
||||||
// The login redirect route has the central context specified, so it doesn't receive the tenant parameter
|
|
||||||
expect(config('fortify.redirects'))->toEqual(['login' => 'http://localhost/welcome']);
|
|
||||||
|
|
||||||
tenancy()->end();
|
tenancy()->end();
|
||||||
expect(config('fortify.home'))->toBe($originalFortifyHome);
|
expect(config('fortify.home'))->toBe($originalFortifyHome);
|
||||||
expect(config('fortify.redirects'))->toBe($originalFortifyRedirects);
|
expect(config('fortify.redirects'))->toBe($originalFortifyRedirects);
|
||||||
|
|
||||||
// Making a route's context will pass the tenant parameter to the route
|
FortifyRouteBootstrapper::$passTenantParameter = false;
|
||||||
FortifyRouteBootstrapper::$fortifyRedirectMap['login']['context'] = Context::TENANT;
|
|
||||||
|
|
||||||
tenancy()->initialize($tenant);
|
tenancy()->initialize($tenant);
|
||||||
|
expect(config('fortify.home'))->toBe('http://localhost/home');
|
||||||
expect(config('fortify.redirects'))->toEqual(['login' => 'http://localhost/welcome?tenant=' . $tenant->getTenantKey()]);
|
expect(config('fortify.redirects'))->toEqual(['login' => 'http://localhost/welcome']);
|
||||||
|
|
||||||
// Make the home and login route accept the tenant as a route parameter
|
|
||||||
// To confirm that tenant route parameter gets filled automatically too (path identification works as well as query string)
|
|
||||||
FortifyRouteBootstrapper::$fortifyHome = $pathIdHomeRouteName;
|
|
||||||
FortifyRouteBootstrapper::$fortifyRedirectMap['login']['route_name'] = $pathIdWelcomeRouteName;
|
|
||||||
|
|
||||||
tenancy()->end();
|
tenancy()->end();
|
||||||
|
expect(config('fortify.home'))->toBe($originalFortifyHome);
|
||||||
tenancy()->initialize($tenant);
|
expect(config('fortify.redirects'))->toBe($originalFortifyRedirects);
|
||||||
|
|
||||||
expect(config('fortify.home'))->toBe("http://localhost/{$tenant->getTenantKey()}/home");
|
|
||||||
expect(config('fortify.redirects'))->toEqual(['login' => "http://localhost/{$tenant->getTenantKey()}/welcome"]);
|
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue