def test_copy_dir(self):
        dir = self.src.directories.create({
            'description': uuid4().hex,
            'name': uuid4().hex,
            'status': 'DISABLED',
            'custom_data': {'hi': 'there'},
        })

        migrator = DirectoryMigrator(destination_client=self.dst, source_directory=dir)
        copied_dir = migrator.copy_dir()

        self.assertTrue(copied_dir)
        self.assertEqual(dir.description, copied_dir.description)
        self.assertEqual(dir.name, copied_dir.name)
        self.assertEqual(dir.provider.provider_id, copied_dir.provider.provider_id)
        self.assertEqual(dir.status, copied_dir.status)

        dir.delete()
        copied_dir.delete()

        dir = self.src.directories.create({
            'description': uuid4().hex,
            'name': uuid4().hex,
            'status': 'DISABLED',
            'provider': {
                'provider_id': 'google',
                'client_id': 'test',
                'client_secret': 'test',
                'redirect_uri': 'https://test.com/callback',
            }
        })

        migrator = DirectoryMigrator(destination_client=self.dst, source_directory=dir)
        copied_dir = migrator.copy_dir()

        self.assertTrue(copied_dir)
        self.assertEqual(dir.description, copied_dir.description)
        self.assertEqual(dir.name, copied_dir.name)
        self.assertEqual(dir.provider.provider_id, copied_dir.provider.provider_id)
        self.assertEqual(dir.provider.client_id, copied_dir.provider.client_id)
        self.assertEqual(dir.provider.client_secret, copied_dir.provider.client_secret)
        self.assertEqual(dir.provider.redirect_uri, copied_dir.provider.redirect_uri)
        self.assertEqual(dir.status, copied_dir.status)

        dir.delete()
        copied_dir.delete()
    def test_copy_custom_data(self):
        dir = self.src.directories.create({
            'custom_data': {'hi': 'there'},
            'description': uuid4().hex,
            'name': uuid4().hex,
            'status': 'DISABLED',
        })

        migrator = DirectoryMigrator(destination_client=self.dst, source_directory=dir)
        copied_dir = migrator.copy_dir()
        copied_data = migrator.copy_custom_data()

        self.assertEqual(copied_data['hi'], 'there')

        dir.delete()
        copied_dir.delete()
    def test_copy_strength(self):
        dir = self.src.directories.create({'name': uuid4().hex})
        strength = dir.password_policy.strength

        strength.max_length = 101
        strength.save()

        migrator = DirectoryMigrator(destination_client=self.dst, source_directory=dir)
        copied_dir = migrator.copy_dir()
        copied_strength = migrator.copy_strength()

        for key in copied_strength.writable_attrs:
            self.assertEqual(copied_strength[key], strength[key])

        dir.delete()
        copied_dir.delete()