diff --git a/src/Config.php b/src/Config.php index 7aef359..d0ef1c9 100644 --- a/src/Config.php +++ b/src/Config.php @@ -59,6 +59,16 @@ public function shouldMigratePermanentFiles(): bool return $this->getValue(['parameters', 'migratePermanentFiles']); } + public function shouldMigrateTriggers(): bool + { + return $this->getValue(['parameters', 'migrateTriggers']); + } + + public function shouldMigrateNotifications(): bool + { + return $this->getValue(['parameters', 'migrateNotifications']); + } + public function shouldMigrateStructureOnly(): bool { return $this->getValue(['parameters', 'migrateStructureOnly']); diff --git a/src/ConfigDefinition.php b/src/ConfigDefinition.php index 5fdc1e7..e610358 100644 --- a/src/ConfigDefinition.php +++ b/src/ConfigDefinition.php @@ -28,6 +28,8 @@ protected function getParametersDefinition(): ArrayNodeDefinition ->booleanNode('dryRun')->defaultFalse()->end() ->booleanNode('directDataMigration')->defaultTrue()->end() ->booleanNode('migratePermanentFiles')->defaultTrue()->end() + ->booleanNode('migrateTriggers')->defaultTrue()->end() + ->booleanNode('migrateNotifications')->defaultTrue()->end() ->booleanNode('migrateStructureOnly')->defaultFalse()->end() ->booleanNode('migrateSecrets')->defaultFalse()->end() ->enumNode('dataMode')->values(['sapi', 'database'])->defaultValue('sapi')->end() diff --git a/src/Migrate.php b/src/Migrate.php index 72a3a5c..57be63b 100644 --- a/src/Migrate.php +++ b/src/Migrate.php @@ -48,6 +48,10 @@ class Migrate private bool $migratePermanentFiles; + private bool $migrateTriggers; + + private bool $migrateNotifications; + private bool $migrateStructureOnly; public const OBSOLETE_COMPONENTS = [ @@ -92,6 +96,8 @@ public function __construct( $this->directDataMigration = $config->directDataMigration(); $this->migrateSecrets = $config->shouldMigrateSecrets(); $this->migratePermanentFiles = $config->shouldMigratePermanentFiles(); + $this->migrateTriggers = $config->shouldMigrateTriggers(); + $this->migrateNotifications = $config->shouldMigrateNotifications(); $this->migrateStructureOnly = $config->shouldMigrateStructureOnly(); $this->logger = $logger; $this->migrateDataMode = $config->getMigrateDataMode(); @@ -348,6 +354,8 @@ private function getRestoreConfigData(array $restoreCredentials): array 'useDefaultBackend' => true, 'restoreConfigs' => $this->migrateSecrets === false, 'restorePermanentFiles' => $this->migratePermanentFiles, + 'restoreTriggers' => $this->migrateTriggers, + 'restoreNotifications' => $this->migrateNotifications, ], ]; } elseif (isset($restoreCredentials['credentials']['connectionString'])) { @@ -360,6 +368,8 @@ private function getRestoreConfigData(array $restoreCredentials): array 'useDefaultBackend' => true, 'restoreConfigs' => $this->migrateSecrets === false, 'restorePermanentFiles' => $this->migratePermanentFiles, + 'restoreTriggers' => $this->migrateTriggers, + 'restoreNotifications' => $this->migrateNotifications, ], ]; } elseif (isset($restoreCredentials['credentials']['accessToken'])) { @@ -378,6 +388,8 @@ private function getRestoreConfigData(array $restoreCredentials): array 'useDefaultBackend' => true, 'restoreConfigs' => $this->migrateSecrets === false, 'restorePermanentFiles' => $this->migratePermanentFiles, + 'restoreTriggers' => $this->migrateTriggers, + 'restoreNotifications' => $this->migrateNotifications, ], ]; } else { diff --git a/tests/phpunit/ConfigTest.php b/tests/phpunit/ConfigTest.php index 3406743..0849624 100644 --- a/tests/phpunit/ConfigTest.php +++ b/tests/phpunit/ConfigTest.php @@ -70,4 +70,52 @@ public function testMigrateSecretsConfigValid(): void $this->assertSame(true, $baseConfig->shouldMigrateSecrets()); $this->assertEquals('manage-token', $baseConfig->getSourceManageToken()); } + + public function testDisabledMigrateNotifications(): void + { + $config = new Config( + [ + 'parameters' => [ + 'sourceKbcUrl' => 'https://connection.keboola.com', + '#sourceKbcToken' => 'token', + 'migrateNotifications' => false, + ], + ], + new ConfigDefinition() + ); + + $this->assertFalse($config->shouldMigrateNotifications()); + } + + public function testDisabledMigrateTriggers(): void + { + $config = new Config( + [ + 'parameters' => [ + 'sourceKbcUrl' => 'https://connection.keboola.com', + '#sourceKbcToken' => 'token', + 'migrateTriggers' => false, + ], + ], + new ConfigDefinition() + ); + + $this->assertFalse($config->shouldMigrateTriggers()); + } + + public function testDisabledMigratePermanentFiles(): void + { + $config = new Config( + [ + 'parameters' => [ + 'sourceKbcUrl' => 'https://connection.keboola.com', + '#sourceKbcToken' => 'token', + 'migratePermanentFiles' => false, + ], + ], + new ConfigDefinition() + ); + + $this->assertFalse($config->shouldMigratePermanentFiles()); + } } diff --git a/tests/phpunit/MigrateTest.php b/tests/phpunit/MigrateTest.php index f51477d..2f6a1ec 100644 --- a/tests/phpunit/MigrateTest.php +++ b/tests/phpunit/MigrateTest.php @@ -38,7 +38,9 @@ public function testMigrateSuccess( int $expectsRunJobs, bool $restoreConfigs, bool $migrateStructureOnly, - bool $restorePermanentFiles + bool $restorePermanentFiles, + bool $restoreTriggers, + bool $restoreNotifications ): void { $sourceJobRunnerMock = $this->createMock($jobRunnerClass); $destJobRunnerMock = $this->createMock($jobRunnerClass); @@ -76,6 +78,8 @@ public function testMigrateSuccess( 'restoreConfigs' => $restoreConfigs, 'dryRun' => false, 'restorePermanentFiles' => $restorePermanentFiles, + 'restoreTriggers' => $restoreTriggers, + 'restoreNotifications' => $restoreNotifications, ] ), ], @@ -138,6 +142,8 @@ public function testMigrateSuccess( '#sourceManageToken' => 'manage-token', 'migrateStructureOnly' => $migrateStructureOnly, 'migratePermanentFiles' => $restorePermanentFiles, + 'migrateTriggers' => $restoreTriggers, + 'migrateNotifications' => $restoreNotifications, ], ], new ConfigDefinition() @@ -1221,6 +1227,8 @@ public function successMigrateDataProvider(): Generator 'restoreConfigs' => true, 'migrateStructureOnly' => false, 'restorePermanentFiles' => true, + 'restoreTriggers' => true, + 'restoreNotifications' => true, ]; yield 'migrate-ABS-syrup' => [ @@ -1236,6 +1244,8 @@ public function successMigrateDataProvider(): Generator 'restoreConfigs' => true, 'migrateStructureOnly' => false, 'restorePermanentFiles' => true, + 'restoreTriggers' => true, + 'restoreNotifications' => true, ]; yield 'migrate-GCS-syrup' => [ @@ -1257,6 +1267,8 @@ public function successMigrateDataProvider(): Generator 'restoreConfigs' => true, 'migrateStructureOnly' => false, 'restorePermanentFiles' => true, + 'restoreTriggers' => true, + 'restoreNotifications' => true, ]; yield 'migrate-S3-queuev2' => [ @@ -1274,6 +1286,8 @@ public function successMigrateDataProvider(): Generator 'restoreConfigs' => true, 'migrateStructureOnly' => false, 'restorePermanentFiles' => true, + 'restoreTriggers' => true, + 'restoreNotifications' => true, ]; yield 'migrate-ABS-queuev2' => [ @@ -1289,6 +1303,8 @@ public function successMigrateDataProvider(): Generator 'restoreConfigs' => true, 'migrateStructureOnly' => false, 'restorePermanentFiles' => true, + 'restoreTriggers' => true, + 'restoreNotifications' => true, ]; yield 'migrate-GCS-queuev2' => [ @@ -1310,6 +1326,8 @@ public function successMigrateDataProvider(): Generator 'restoreConfigs' => true, 'migrateStructureOnly' => false, 'restorePermanentFiles' => true, + 'restoreTriggers' => true, + 'restoreNotifications' => true, ]; yield 'migrateABS-queuev2-data-directly' => [ @@ -1325,6 +1343,8 @@ public function successMigrateDataProvider(): Generator 'restoreConfigs' => true, 'migrateStructureOnly' => false, 'restorePermanentFiles' => true, + 'restoreTriggers' => true, + 'restoreNotifications' => true, ]; yield 'migrate-ABS-queuev2-structure-only' => [ @@ -1340,6 +1360,8 @@ public function successMigrateDataProvider(): Generator 'restoreConfigs' => true, 'migrateStructureOnly' => true, 'restorePermanentFiles' => true, + 'restoreTriggers' => true, + 'restoreNotifications' => true, ]; yield 'migrate-GCS-queuev2-structure-only' => [ @@ -1361,6 +1383,8 @@ public function successMigrateDataProvider(): Generator 'restoreConfigs' => true, 'migrateStructureOnly' => true, 'restorePermanentFiles' => true, + 'restoreTriggers' => true, + 'restoreNotifications' => true, ]; yield 'migrate-secrets-false' => [ @@ -1376,6 +1400,8 @@ public function successMigrateDataProvider(): Generator 'restoreConfigs' => true, 'migrateStructureOnly' => false, 'restorePermanentFiles' => true, + 'restoreTriggers' => true, + 'restoreNotifications' => true, ]; yield 'migrate-permanentFiles-false' => [ @@ -1391,6 +1417,42 @@ public function successMigrateDataProvider(): Generator 'restoreConfigs' => true, 'migrateStructureOnly' => false, 'restorePermanentFiles' => false, + 'restoreTriggers' => true, + 'restoreNotifications' => true, + ]; + + yield 'migrate-triggers-false' => [ + 'expectedCredentialsData' => [ + 'abs' => [ + 'container' => 'abcdefgh', + '#connectionString' => 'https://testConnectionString', + ], + ], + 'jobRunnerClass' => QueueV2JobRunner::class, + 'migrateDataOfTablesDirectly' => true, + 'expectsRunJobs' => 3, + 'restoreConfigs' => true, + 'migrateStructureOnly' => false, + 'restorePermanentFiles' => true, + 'restoreTriggers' => false, + 'restoreNotifications' => true, + ]; + + yield 'migrate-notifications-false' => [ + 'expectedCredentialsData' => [ + 'abs' => [ + 'container' => 'abcdefgh', + '#connectionString' => 'https://testConnectionString', + ], + ], + 'jobRunnerClass' => QueueV2JobRunner::class, + 'migrateDataOfTablesDirectly' => true, + 'expectsRunJobs' => 3, + 'restoreConfigs' => true, + 'migrateStructureOnly' => false, + 'restorePermanentFiles' => true, + 'restoreTriggers' => true, + 'restoreNotifications' => false, ]; } }