mirror of
https://github.com/archtechx/tenancy.git
synced 2026-02-05 20:14:04 +00:00
Fix failing tests
This commit is contained in:
parent
a63906f3fd
commit
df850ed280
3 changed files with 16 additions and 8 deletions
|
|
@ -7,10 +7,12 @@ namespace Stancl\Tenancy\Database;
|
||||||
use Illuminate\Config\Repository;
|
use Illuminate\Config\Repository;
|
||||||
use Illuminate\Contracts\Foundation\Application;
|
use Illuminate\Contracts\Foundation\Application;
|
||||||
use Illuminate\Database\DatabaseManager as BaseDatabaseManager;
|
use Illuminate\Database\DatabaseManager as BaseDatabaseManager;
|
||||||
|
use Stancl\Tenancy\Contracts\ManagesDatabaseUsers;
|
||||||
use Stancl\Tenancy\Contracts\TenantCannotBeCreatedException;
|
use Stancl\Tenancy\Contracts\TenantCannotBeCreatedException;
|
||||||
use Stancl\Tenancy\Contracts\TenantWithDatabase;
|
use Stancl\Tenancy\Contracts\TenantWithDatabase;
|
||||||
use Stancl\Tenancy\Exceptions\DatabaseManagerNotRegisteredException;
|
use Stancl\Tenancy\Exceptions\DatabaseManagerNotRegisteredException;
|
||||||
use Stancl\Tenancy\Exceptions\TenantDatabaseAlreadyExistsException;
|
use Stancl\Tenancy\Exceptions\TenantDatabaseAlreadyExistsException;
|
||||||
|
use Stancl\Tenancy\Exceptions\TenantDatabaseUserAlreadyExistsException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @internal Class is subject to breaking changes in minor and patch versions.
|
* @internal Class is subject to breaking changes in minor and patch versions.
|
||||||
|
|
@ -90,8 +92,14 @@ class DatabaseManager
|
||||||
*/
|
*/
|
||||||
public function ensureTenantCanBeCreated(TenantWithDatabase $tenant): void
|
public function ensureTenantCanBeCreated(TenantWithDatabase $tenant): void
|
||||||
{
|
{
|
||||||
if ($tenant->database()->manager()->databaseExists($database = $tenant->database()->getName())) {
|
$manager = $tenant->database()->manager();
|
||||||
|
|
||||||
|
if ($manager->databaseExists($database = $tenant->database()->getName())) {
|
||||||
throw new TenantDatabaseAlreadyExistsException($database);
|
throw new TenantDatabaseAlreadyExistsException($database);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($manager instanceof ManagesDatabaseUsers && $manager->userExists($username = $tenant->database()->getUsername())) {
|
||||||
|
throw new TenantDatabaseUserAlreadyExistsException($username);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@ namespace Stancl\Tenancy\TenantDatabaseManagers;
|
||||||
use Stancl\Tenancy\Concerns\CreatesDatabaseUsers;
|
use Stancl\Tenancy\Concerns\CreatesDatabaseUsers;
|
||||||
use Stancl\Tenancy\Contracts\ManagesDatabaseUsers;
|
use Stancl\Tenancy\Contracts\ManagesDatabaseUsers;
|
||||||
use Stancl\Tenancy\DatabaseConfig;
|
use Stancl\Tenancy\DatabaseConfig;
|
||||||
use Stancl\Tenancy\Exceptions\TenantDatabaseUserAlreadyExistsException;
|
|
||||||
|
|
||||||
class PermissionControlledMySQLDatabaseManager extends MySQLDatabaseManager implements ManagesDatabaseUsers
|
class PermissionControlledMySQLDatabaseManager extends MySQLDatabaseManager implements ManagesDatabaseUsers
|
||||||
{
|
{
|
||||||
|
|
@ -26,10 +25,6 @@ class PermissionControlledMySQLDatabaseManager extends MySQLDatabaseManager impl
|
||||||
$hostname = $databaseConfig->connection()['host'];
|
$hostname = $databaseConfig->connection()['host'];
|
||||||
$password = $databaseConfig->getPassword();
|
$password = $databaseConfig->getPassword();
|
||||||
|
|
||||||
if ($this->userExists($username)) {
|
|
||||||
throw new TenantDatabaseUserAlreadyExistsException($username);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->database()->statement("CREATE USER `{$username}`@`%` IDENTIFIED BY '{$password}'");
|
$this->database()->statement("CREATE USER `{$username}`@`%` IDENTIFIED BY '{$password}'");
|
||||||
|
|
||||||
$grants = implode(', ', static::$grants);
|
$grants = implode(', ', static::$grants);
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ use Illuminate\Support\Str;
|
||||||
use Stancl\JobPipeline\JobPipeline;
|
use Stancl\JobPipeline\JobPipeline;
|
||||||
use Stancl\Tenancy\Bootstrappers\DatabaseTenancyBootstrapper;
|
use Stancl\Tenancy\Bootstrappers\DatabaseTenancyBootstrapper;
|
||||||
use Stancl\Tenancy\Contracts\ManagesDatabaseUsers;
|
use Stancl\Tenancy\Contracts\ManagesDatabaseUsers;
|
||||||
|
use Stancl\Tenancy\Events\DatabaseCreated;
|
||||||
use Stancl\Tenancy\Events\TenancyInitialized;
|
use Stancl\Tenancy\Events\TenancyInitialized;
|
||||||
use Stancl\Tenancy\Events\TenantCreated;
|
use Stancl\Tenancy\Events\TenantCreated;
|
||||||
use Stancl\Tenancy\Exceptions\TenantDatabaseUserAlreadyExistsException;
|
use Stancl\Tenancy\Exceptions\TenantDatabaseUserAlreadyExistsException;
|
||||||
|
|
@ -67,14 +68,18 @@ class DatabaseUsersTest extends TestCase
|
||||||
$this->assertTrue($manager->databaseExists($tenant->database()->getName()));
|
$this->assertTrue($manager->databaseExists($tenant->database()->getName()));
|
||||||
|
|
||||||
$this->expectException(TenantDatabaseUserAlreadyExistsException::class);
|
$this->expectException(TenantDatabaseUserAlreadyExistsException::class);
|
||||||
|
Event::fake([DatabaseCreated::class]);
|
||||||
|
|
||||||
$tenant2 = Tenant::create([
|
$tenant2 = Tenant::create([
|
||||||
'tenancy_db_username' => $username,
|
'tenancy_db_username' => $username,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
/** @var ManagesDatabaseUsers $manager */
|
/** @var ManagesDatabaseUsers $manager */
|
||||||
$manager = $tenant2->database()->manager();
|
$manager2 = $tenant2->database()->manager();
|
||||||
|
|
||||||
// database was not created because of DB transaction
|
// database was not created because of DB transaction
|
||||||
$this->assertFalse($manager->databaseExists($tenant2->database()->getName()));
|
$this->assertFalse($manager2->databaseExists($tenant2->database()->getName()));
|
||||||
|
Event::assertNotDispatched(DatabaseCreated::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @test */
|
/** @test */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue