Update to Drupal 8.2.2. For more information, see https://www.drupal.org/project/drupal/releases/8.2.2
This commit is contained in:
parent
23ffed3665
commit
507b45a0ed
378 changed files with 11434 additions and 5542 deletions
|
@ -12,6 +12,11 @@ use Drupal\user\Entity\User;
|
|||
*/
|
||||
class MigrateUserProfileValuesTest extends MigrateDrupal6TestBase {
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static $modules = ['language'];
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
|
@ -19,6 +24,7 @@ class MigrateUserProfileValuesTest extends MigrateDrupal6TestBase {
|
|||
parent::setUp();
|
||||
|
||||
$this->executeMigrations([
|
||||
'language',
|
||||
'user_profile_field',
|
||||
'user_profile_field_instance',
|
||||
'user_profile_entity_display',
|
||||
|
|
|
@ -3,7 +3,9 @@
|
|||
namespace Drupal\Tests\user\Kernel\Migrate\d6;
|
||||
|
||||
use Drupal\user\Entity\Role;
|
||||
use Drupal\user\RoleInterface;
|
||||
use Drupal\Tests\migrate_drupal\Kernel\d6\MigrateDrupal6TestBase;
|
||||
use Drupal\migrate\Plugin\MigrateIdMapInterface;
|
||||
|
||||
/**
|
||||
* Upgrade user roles to user.role.*.yml.
|
||||
|
@ -21,29 +23,69 @@ class MigrateUserRoleTest extends MigrateDrupal6TestBase {
|
|||
}
|
||||
|
||||
/**
|
||||
* Tests user role migration.
|
||||
* Helper function to perform assertions on a user role.
|
||||
*
|
||||
* @param string $id
|
||||
* The role ID.
|
||||
* @param string[] $permissions
|
||||
* An array of user permissions.
|
||||
* @param int $lookupId
|
||||
* The original numeric ID of the role in the source database.
|
||||
* @param \Drupal\migrate\Plugin\MigrateIdMapInterface $id_map
|
||||
* The map table plugin.
|
||||
*/
|
||||
public function testUserRole() {
|
||||
/** @var \Drupal\migrate\Plugin\MigrationInterface $migration */
|
||||
$id_map = $this->getMigration('d6_user_role')->getIdMap();
|
||||
$rid = 'anonymous';
|
||||
$anonymous = Role::load($rid);
|
||||
$this->assertSame($rid, $anonymous->id());
|
||||
$this->assertSame(array('migrate test anonymous permission', 'use text format filtered_html'), $anonymous->getPermissions());
|
||||
$this->assertSame(array($rid), $id_map->lookupDestinationId(array(1)));
|
||||
$rid = 'authenticated';
|
||||
$authenticated = Role::load($rid);
|
||||
$this->assertSame($rid, $authenticated->id());
|
||||
$this->assertSame(array('migrate test authenticated permission', 'use text format filtered_html'), $authenticated->getPermissions());
|
||||
$this->assertSame(array($rid), $id_map->lookupDestinationId(array(2)));
|
||||
$rid = 'migrate_test_role_1';
|
||||
$migrate_test_role_1 = Role::load($rid);
|
||||
$this->assertSame($rid, $migrate_test_role_1->id());
|
||||
$this->assertSame(array('migrate test role 1 test permission', 'use text format full_html', 'use text format php_code'), $migrate_test_role_1->getPermissions());
|
||||
$this->assertSame(array($rid), $id_map->lookupDestinationId(array(3)));
|
||||
$rid = 'migrate_test_role_2';
|
||||
$migrate_test_role_2 = Role::load($rid);
|
||||
$this->assertSame(array(
|
||||
protected function assertRole($id, array $permissions, $lookupId, MigrateIdMapInterface $id_map) {
|
||||
/** @var \Drupal\user\RoleInterface $role */
|
||||
$role = Role::load($id);
|
||||
$this->assertInstanceOf(RoleInterface::class, $role);
|
||||
$this->assertSame($permissions, $role->getPermissions());
|
||||
$this->assertSame([[$id]], $id_map->lookupDestinationIds(['rid' => $lookupId]));
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function to test the migration of the user roles. The user roles
|
||||
* will be re-imported and the tests here will be repeated.
|
||||
*
|
||||
* @param \Drupal\migrate\Plugin\MigrateIdMapInterface $id_map
|
||||
* The map table plugin.
|
||||
*/
|
||||
protected function assertRoles(MigrateIdMapInterface $id_map) {
|
||||
|
||||
// The permissions for each role are found in the two tables in the Drupal 6
|
||||
// source database. One is the permission table and the other is the
|
||||
// filter_format table.
|
||||
$permissions = [
|
||||
// From permission table.
|
||||
'access content',
|
||||
'migrate test anonymous permission',
|
||||
// From filter_format tables.
|
||||
'use text format filtered_html'
|
||||
];
|
||||
$this->assertRole('anonymous', $permissions, 1, $id_map);
|
||||
|
||||
$permissions = [
|
||||
// From permission table.
|
||||
'access comments',
|
||||
'access content',
|
||||
'post comments',
|
||||
'skip comment approval',
|
||||
'migrate test authenticated permission',
|
||||
// From filter_format.
|
||||
'use text format filtered_html',
|
||||
];
|
||||
$this->assertRole('authenticated', $permissions, 2, $id_map);
|
||||
|
||||
$permissions = [
|
||||
// From permission table.
|
||||
'migrate test role 1 test permission',
|
||||
// From filter format.
|
||||
'use text format full_html',
|
||||
'use text format php_code'
|
||||
];
|
||||
$this->assertRole('migrate_test_role_1', $permissions, 3, $id_map);
|
||||
|
||||
$permissions = [
|
||||
// From permission table.
|
||||
'migrate test role 2 test permission',
|
||||
'use PHP for settings',
|
||||
'administer contact forms',
|
||||
|
@ -59,14 +101,66 @@ class MigrateUserRoleTest extends MigrateDrupal6TestBase {
|
|||
'edit own forum content',
|
||||
'administer nodes',
|
||||
'access content overview',
|
||||
// From filter format.
|
||||
'use text format php_code',
|
||||
), $migrate_test_role_2->getPermissions());
|
||||
$this->assertSame($rid, $migrate_test_role_2->id());
|
||||
$this->assertSame(array($rid), $id_map->lookupDestinationId(array(4)));
|
||||
$rid = 'migrate_test_role_3_that_is_long';
|
||||
$migrate_test_role_3 = Role::load($rid);
|
||||
$this->assertSame($rid, $migrate_test_role_3->id());
|
||||
$this->assertSame(array($rid), $id_map->lookupDestinationId(array(5)));
|
||||
];
|
||||
$this->assertRole('migrate_test_role_2', $permissions, 4, $id_map);
|
||||
|
||||
// The only permission for this role is a filter format.
|
||||
$permissions = ['use text format php_code'];
|
||||
$this->assertRole('migrate_test_role_3_that_is_longer_than_thirty_two_characters', $permissions, 5, $id_map);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests user role migration.
|
||||
*/
|
||||
public function testUserRole() {
|
||||
$id_map = $this->getMigration('d6_user_role')->getIdMap();
|
||||
$this->assertRoles($id_map);
|
||||
|
||||
// Test there are no duplicated roles.
|
||||
$roles = [
|
||||
'anonymous1',
|
||||
'authenticated1',
|
||||
'administrator1',
|
||||
'migrate_test_role_11',
|
||||
'migrate_test_role_21',
|
||||
'migrate_test_role_3_that_is_longer_than_thirty_two_characters1'
|
||||
];
|
||||
$this->assertEmpty(Role::loadMultiple($roles));
|
||||
|
||||
// Remove the map row for the migrate_test_role_1 role and rerun the
|
||||
// migration. This will re-import the migrate_test_role_1 role migration
|
||||
// again.
|
||||
$this->sourceDatabase->insert('role')
|
||||
->fields([
|
||||
'rid' => 6,
|
||||
'name' => 'migrate test role 4',
|
||||
])
|
||||
->execute();
|
||||
$this->sourceDatabase->insert('permission')
|
||||
->fields([
|
||||
'pid' => 7,
|
||||
'rid' => 6,
|
||||
'perm' => 'access content',
|
||||
'tid' => 0,
|
||||
])
|
||||
->execute();
|
||||
|
||||
$id_map->delete(['rid' => 3]);
|
||||
|
||||
$this->executeMigration('d6_user_role');
|
||||
|
||||
// Test there are no duplicated roles.
|
||||
$roles[] = 'migrate_test_role_41';
|
||||
$this->assertEmpty(Role::loadMultiple($roles));
|
||||
|
||||
// Test that the existing roles have not changed.
|
||||
$this->assertRoles($id_map);
|
||||
|
||||
// Test the migration of the new role, migrate_test_role_4.
|
||||
$permissions = ['access content'];
|
||||
$this->assertRole('migrate_test_role_4', $permissions, 6, $id_map);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -19,6 +19,11 @@ class MigrateUserTest extends MigrateDrupal6TestBase {
|
|||
|
||||
use FileMigrationTestTrait;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static $modules = ['language'];
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
|
@ -60,6 +65,7 @@ class MigrateUserTest extends MigrateDrupal6TestBase {
|
|||
file_put_contents($file->getFileUri(), file_get_contents('core/modules/simpletest/files/image-2.jpg'));
|
||||
$file->save();
|
||||
|
||||
$this->executeMigration('language');
|
||||
$this->migrateUsers();
|
||||
}
|
||||
|
||||
|
@ -91,28 +97,47 @@ class MigrateUserTest extends MigrateDrupal6TestBase {
|
|||
|
||||
/** @var \Drupal\user\UserInterface $user */
|
||||
$user = User::load($source->uid);
|
||||
$this->assertIdentical($source->uid, $user->id());
|
||||
$this->assertIdentical($source->name, $user->label());
|
||||
$this->assertIdentical($source->mail, $user->getEmail());
|
||||
$this->assertIdentical($source->created, $user->getCreatedTime());
|
||||
$this->assertIdentical($source->access, $user->getLastAccessedTime());
|
||||
$this->assertIdentical($source->login, $user->getLastLoginTime());
|
||||
$this->assertSame($source->uid, $user->id());
|
||||
$this->assertSame($source->name, $user->label());
|
||||
$this->assertSame($source->mail, $user->getEmail());
|
||||
$this->assertSame($source->created, $user->getCreatedTime());
|
||||
$this->assertSame($source->access, $user->getLastAccessedTime());
|
||||
$this->assertSame($source->login, $user->getLastLoginTime());
|
||||
$is_blocked = $source->status == 0;
|
||||
$this->assertIdentical($is_blocked, $user->isBlocked());
|
||||
$this->assertSame($is_blocked, $user->isBlocked());
|
||||
$expected_timezone_name = $source->timezone_name ?: $this->config('system.date')->get('timezone.default');
|
||||
$this->assertSame($expected_timezone_name, $user->getTimeZone());
|
||||
$this->assertSame($source->init, $user->getInitialEmail());
|
||||
$this->assertSame($roles, $user->getRoles());
|
||||
|
||||
// Ensure the user's langcode, preferred_langcode and
|
||||
// preferred_admin_langcode are valid.
|
||||
// $user->getPreferredLangcode() might fallback to default language if the
|
||||
// user preferred language is not configured on the site. We just want to
|
||||
// test if the value was imported correctly.
|
||||
$this->assertIdentical($source->language, $user->preferred_langcode->value);
|
||||
$expected_timezone_name = $source->timezone_name ?: $this->config('system.date')->get('timezone.default');
|
||||
$this->assertIdentical($expected_timezone_name, $user->getTimeZone());
|
||||
$this->assertIdentical($source->init, $user->getInitialEmail());
|
||||
$this->assertIdentical($roles, $user->getRoles());
|
||||
$language_manager = $this->container->get('language_manager');
|
||||
$default_langcode = $language_manager->getDefaultLanguage()->getId();
|
||||
if (empty($source->language)) {
|
||||
$this->assertSame('en', $user->langcode->value);
|
||||
$this->assertSame($default_langcode, $user->preferred_langcode->value);
|
||||
$this->assertSame($default_langcode, $user->preferred_admin_langcode->value);
|
||||
}
|
||||
elseif ($language_manager->getLanguage($source->language) === NULL) {
|
||||
$this->assertSame($default_langcode, $user->langcode->value);
|
||||
$this->assertSame($default_langcode, $user->preferred_langcode->value);
|
||||
$this->assertSame($default_langcode, $user->preferred_admin_langcode->value);
|
||||
}
|
||||
else {
|
||||
$this->assertSame($source->language, $user->langcode->value);
|
||||
$this->assertSame($source->language, $user->preferred_langcode->value);
|
||||
$this->assertSame($source->language, $user->preferred_admin_langcode->value);
|
||||
}
|
||||
|
||||
// We have one empty picture in the data so don't try load that.
|
||||
if (!empty($source->picture)) {
|
||||
// Test the user picture.
|
||||
$file = File::load($user->user_picture->target_id);
|
||||
$this->assertIdentical(basename($source->picture), $file->getFilename());
|
||||
$this->assertSame(basename($source->picture), $file->getFilename());
|
||||
}
|
||||
else {
|
||||
// Ensure the user does not have a picture.
|
||||
|
|
|
@ -56,6 +56,50 @@ class MigrateUserRoleTest extends MigrateDrupal7TestBase {
|
|||
$this->assertEntity('anonymous', 'anonymous user', 1);
|
||||
$this->assertEntity('authenticated', 'authenticated user', 2);
|
||||
$this->assertEntity('administrator', 'administrator', 3);
|
||||
// Test there are no duplicated roles.
|
||||
$roles = [
|
||||
'anonymous1',
|
||||
'authenticated1',
|
||||
'administrator1',
|
||||
];
|
||||
$this->assertEmpty(Role::loadMultiple($roles));
|
||||
|
||||
// Remove the map row for the administrator role and rerun the migration.
|
||||
// This will re-import the administrator role again.
|
||||
$id_map = $this->getMigration('d7_user_role')->getIdMap();
|
||||
$id_map->delete(['rid' => 3]);
|
||||
|
||||
$this->sourceDatabase->insert('role')
|
||||
->fields([
|
||||
'rid' => 4,
|
||||
'name' => 'test role',
|
||||
'weight' => 10,
|
||||
])
|
||||
->execute();
|
||||
$this->sourceDatabase->insert('role_permission')
|
||||
->fields([
|
||||
'rid' => 4,
|
||||
'permission' => 'access content',
|
||||
'module' => 'node',
|
||||
])
|
||||
->execute();
|
||||
$this->executeMigration('d7_user_role');
|
||||
|
||||
// Test there are no duplicated roles.
|
||||
$roles = [
|
||||
'anonymous1',
|
||||
'authenticated1',
|
||||
'administrator1',
|
||||
];
|
||||
$this->assertEmpty(Role::loadMultiple($roles));
|
||||
|
||||
// Test that the existing roles have not changed.
|
||||
$this->assertEntity('administrator', 'administrator', 3);
|
||||
$this->assertEntity('anonymous', 'anonymous user', 1);
|
||||
$this->assertEntity('authenticated', 'authenticated user', 2);
|
||||
|
||||
// Test the migration of the new role, test role.
|
||||
$this->assertEntity('test_role', 'test role', 4);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
namespace Drupal\Tests\user\Kernel\Migrate\d7;
|
||||
|
||||
use Drupal\comment\Entity\CommentType;
|
||||
use Drupal\Core\Database\Database;
|
||||
use Drupal\node\Entity\NodeType;
|
||||
use Drupal\taxonomy\Entity\Vocabulary;
|
||||
use Drupal\Tests\migrate_drupal\Kernel\d7\MigrateDrupal7TestBase;
|
||||
|
@ -25,6 +26,7 @@ class MigrateUserTest extends MigrateDrupal7TestBase {
|
|||
'datetime',
|
||||
'file',
|
||||
'image',
|
||||
'language',
|
||||
'link',
|
||||
'node',
|
||||
'system',
|
||||
|
@ -49,6 +51,7 @@ class MigrateUserTest extends MigrateDrupal7TestBase {
|
|||
$this->createType('test_content_type');
|
||||
Vocabulary::create(['vid' => 'test_vocabulary'])->save();
|
||||
$this->executeMigrations([
|
||||
'language',
|
||||
'user_picture_field',
|
||||
'user_picture_field_instance',
|
||||
'd7_user_role',
|
||||
|
@ -88,6 +91,8 @@ class MigrateUserTest extends MigrateDrupal7TestBase {
|
|||
* The user's email address.
|
||||
* @param string $password
|
||||
* The password for this user.
|
||||
* @param int $created
|
||||
* The user's creation time.
|
||||
* @param int $access
|
||||
* The last access time.
|
||||
* @param int $login
|
||||
|
@ -96,37 +101,59 @@ class MigrateUserTest extends MigrateDrupal7TestBase {
|
|||
* Whether or not the account is blocked.
|
||||
* @param string $langcode
|
||||
* The user account's language code.
|
||||
* @param string $timezone
|
||||
* The user account's timezone name.
|
||||
* @param string $init
|
||||
* The user's initial email address.
|
||||
* @param string[] $roles
|
||||
* Role IDs the user account is expected to have.
|
||||
* @param bool $has_picture
|
||||
* Whether the user is expected to have a picture attached.
|
||||
* @param int $field_integer
|
||||
* The value of the integer field.
|
||||
* @param bool $has_picture
|
||||
* Whether the user is expected to have a picture attached.
|
||||
*/
|
||||
protected function assertEntity($id, $label, $mail, $password, $access, $login, $blocked, $langcode, $init, array $roles = [RoleInterface::AUTHENTICATED_ID], $has_picture = FALSE, $field_integer = NULL) {
|
||||
protected function assertEntity($id, $label, $mail, $password, $created, $access, $login, $blocked, $langcode, $timezone, $init, $roles, $field_integer, $has_picture = FALSE) {
|
||||
/** @var \Drupal\user\UserInterface $user */
|
||||
$user = User::load($id);
|
||||
$this->assertTrue($user instanceof UserInterface);
|
||||
$this->assertIdentical($label, $user->label());
|
||||
$this->assertIdentical($mail, $user->getEmail());
|
||||
$this->assertIdentical($access, $user->getLastAccessedTime());
|
||||
$this->assertIdentical($login, $user->getLastLoginTime());
|
||||
$this->assertIdentical($blocked, $user->isBlocked());
|
||||
$this->assertSame($label, $user->label());
|
||||
$this->assertSame($mail, $user->getEmail());
|
||||
$this->assertSame($password, $user->getPassword());
|
||||
$this->assertSame($created, $user->getCreatedTime());
|
||||
$this->assertSame($access, $user->getLastAccessedTime());
|
||||
$this->assertSame($login, $user->getLastLoginTime());
|
||||
$this->assertNotSame($blocked, $user->isBlocked());
|
||||
|
||||
// Ensure the user's langcode, preferred_langcode and
|
||||
// preferred_admin_langcode are valid.
|
||||
// $user->getPreferredLangcode() might fallback to default language if the
|
||||
// user preferred language is not configured on the site. We just want to
|
||||
// test if the value was imported correctly.
|
||||
$this->assertIdentical($langcode, $user->langcode->value);
|
||||
$this->assertIdentical($langcode, $user->preferred_langcode->value);
|
||||
$this->assertIdentical($langcode, $user->preferred_admin_langcode->value);
|
||||
$this->assertIdentical($init, $user->getInitialEmail());
|
||||
$this->assertIdentical($roles, $user->getRoles());
|
||||
$this->assertIdentical($has_picture, !$user->user_picture->isEmpty());
|
||||
$this->assertIdentical($password, $user->getPassword());
|
||||
$language_manager = $this->container->get('language_manager');
|
||||
$default_langcode = $language_manager->getDefaultLanguage()->getId();
|
||||
if ($langcode == '') {
|
||||
$this->assertSame('en', $user->langcode->value);
|
||||
$this->assertSame($default_langcode, $user->preferred_langcode->value);
|
||||
$this->assertSame($default_langcode, $user->preferred_admin_langcode->value);
|
||||
}
|
||||
elseif ($language_manager->getLanguage($langcode) === NULL) {
|
||||
$this->assertSame($default_langcode, $user->langcode->value);
|
||||
$this->assertSame($default_langcode, $user->preferred_langcode->value);
|
||||
$this->assertSame($default_langcode, $user->preferred_admin_langcode->value);
|
||||
}
|
||||
else {
|
||||
$this->assertSame($langcode, $user->langcode->value);
|
||||
$this->assertSame($langcode, $user->preferred_langcode->value);
|
||||
$this->assertSame($langcode, $user->preferred_admin_langcode->value);
|
||||
}
|
||||
|
||||
$this->assertSame($timezone, $user->getTimeZone());
|
||||
$this->assertSame($init, $user->getInitialEmail());
|
||||
$this->assertSame($roles, $user->getRoles());
|
||||
$this->assertSame($has_picture, !$user->user_picture->isEmpty());
|
||||
if (!is_null($field_integer)) {
|
||||
$this->assertTrue($user->hasField('field_integer'));
|
||||
$this->assertEquals($field_integer, $user->field_integer->value);
|
||||
$this->assertEquals($field_integer[0], $user->field_integer->value);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -134,22 +161,65 @@ class MigrateUserTest extends MigrateDrupal7TestBase {
|
|||
* Tests the Drupal 7 user to Drupal 8 migration.
|
||||
*/
|
||||
public function testUser() {
|
||||
$password = '$S$DGFZUE.FhrXbe4y52eC7p0ZVRGD/gOPtVctDlmC89qkujnBokAlJ';
|
||||
$this->assertEntity(2, 'Odo', 'odo@local.host', $password, '0', '0', FALSE, 'en', 'odo@local.host', [RoleInterface::AUTHENTICATED_ID], FALSE, 99);
|
||||
$users = Database::getConnection('default', 'migrate')
|
||||
->select('users', 'u')
|
||||
->fields('u')
|
||||
->condition('uid', 1, '>')
|
||||
->execute()
|
||||
->fetchAll();
|
||||
|
||||
// Ensure that the user can authenticate.
|
||||
$this->assertEquals(2, \Drupal::service('user.auth')->authenticate('Odo', 'a password'));
|
||||
// After authenticating the password will be rehashed because the password
|
||||
// stretching iteration count has changed from 15 in Drupal 7 to 16 in
|
||||
// Drupal 8.
|
||||
$user = User::load(2);
|
||||
$rehash = $user->getPassword();
|
||||
$this->assertNotEquals($password, $rehash);
|
||||
foreach ($users as $source) {
|
||||
$rids = Database::getConnection('default', 'migrate')
|
||||
->select('users_roles', 'ur')
|
||||
->fields('ur', array('rid'))
|
||||
->condition('ur.uid', $source->uid)
|
||||
->execute()
|
||||
->fetchCol();
|
||||
$roles = array(RoleInterface::AUTHENTICATED_ID);
|
||||
$id_map = $this->getMigration('d7_user_role')->getIdMap();
|
||||
foreach ($rids as $rid) {
|
||||
$role = $id_map->lookupDestinationId(array($rid));
|
||||
$roles[] = reset($role);
|
||||
}
|
||||
|
||||
// Authenticate again and there should be no re-hash.
|
||||
$this->assertEquals(2, \Drupal::service('user.auth')->authenticate('Odo', 'a password'));
|
||||
$user = User::load(2);
|
||||
$this->assertEquals($rehash, $user->getPassword());
|
||||
$field_integer = Database::getConnection('default', 'migrate')
|
||||
->select('field_data_field_integer', 'fi')
|
||||
->fields('fi', array('field_integer_value'))
|
||||
->condition('fi.entity_id', $source->uid)
|
||||
->execute()
|
||||
->fetchCol();
|
||||
$field_integer = !empty($field_integer) ? $field_integer : NULL;
|
||||
|
||||
$this->assertEntity(
|
||||
$source->uid,
|
||||
$source->name,
|
||||
$source->mail,
|
||||
$source->pass,
|
||||
$source->created,
|
||||
$source->access,
|
||||
$source->login,
|
||||
$source->status,
|
||||
$source->language,
|
||||
$source->timezone,
|
||||
$source->init,
|
||||
$roles,
|
||||
$field_integer
|
||||
);
|
||||
|
||||
// Ensure that the user can authenticate.
|
||||
$this->assertEquals($source->uid, $this->container->get('user.auth')->authenticate($source->name, 'a password'));
|
||||
// After authenticating the password will be rehashed because the password
|
||||
// stretching iteration count has changed from 15 in Drupal 7 to 16 in
|
||||
// Drupal 8.
|
||||
$user = User::load($source->uid);
|
||||
$rehash = $user->getPassword();
|
||||
$this->assertNotEquals($source->pass, $rehash);
|
||||
|
||||
// Authenticate again and there should be no re-hash.
|
||||
$this->assertEquals($source->uid, $this->container->get('user.auth')->authenticate($source->name, 'a password'));
|
||||
$user = User::load($source->uid);
|
||||
$this->assertEquals($rehash, $user->getPassword());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,129 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\user\Kernel\Plugin\migrate\source;
|
||||
|
||||
use Drupal\Tests\migrate\Kernel\MigrateSqlSourceTestBase;
|
||||
|
||||
/**
|
||||
* Tests the profile_field source plugin.
|
||||
*
|
||||
* @covers \Drupal\user\Plugin\migrate\source\ProfileField
|
||||
* @group user
|
||||
*/
|
||||
class ProfileFieldTest extends MigrateSqlSourceTestBase {
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static $modules = ['user', 'migrate_drupal'];
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function providerSource() {
|
||||
$tests = [
|
||||
[
|
||||
'source_data' => [],
|
||||
'expected_data' => [],
|
||||
],
|
||||
];
|
||||
|
||||
$profile_fields = [
|
||||
[
|
||||
'fid' => 1,
|
||||
'title' => 'First name',
|
||||
'name' => 'profile_first_name',
|
||||
'explanation' => 'First name user',
|
||||
'category' => 'profile',
|
||||
'page' => '',
|
||||
'type' => 'textfield',
|
||||
'weight' => 0,
|
||||
'required' => 1,
|
||||
'register' => 0,
|
||||
'visibility' => 2,
|
||||
'autocomplete' => 0,
|
||||
'options' => '',
|
||||
],
|
||||
[
|
||||
'fid' => 2,
|
||||
'title' => 'Last name',
|
||||
'name' => 'profile_last_name',
|
||||
'explanation' => 'Last name user',
|
||||
'category' => 'profile',
|
||||
'page' => '',
|
||||
'type' => 'textfield',
|
||||
'weight' => 0,
|
||||
'required' => 0,
|
||||
'register' => 0,
|
||||
'visibility' => 2,
|
||||
'autocomplete' => 0,
|
||||
'options' => '',
|
||||
],
|
||||
[
|
||||
'fid' => 3,
|
||||
'title' => 'Policy',
|
||||
'name' => 'profile_policy',
|
||||
'explanation' => 'A checkbox that say if you accept policy of website',
|
||||
'category' => 'profile',
|
||||
'page' => '',
|
||||
'type' => 'checkbox',
|
||||
'weight' => 0,
|
||||
'required' => 1,
|
||||
'register' => 1,
|
||||
'visibility' => 2,
|
||||
'autocomplete' => 0,
|
||||
'options' => '',
|
||||
],
|
||||
[
|
||||
'fid' => 4,
|
||||
'title' => 'Color',
|
||||
'name' => 'profile_color',
|
||||
'explanation' => 'A selection that allows user to select a color',
|
||||
'category' => 'profile',
|
||||
'page' => '',
|
||||
'type' => 'selection',
|
||||
'weight' => 0,
|
||||
'required' => 0,
|
||||
'register' => 0,
|
||||
'visibility' => 2,
|
||||
'autocomplete' => 0,
|
||||
'options' => "red\nblue\ngreen",
|
||||
],
|
||||
];
|
||||
|
||||
$tests[0]['source_data']['profile_fields'] = $profile_fields;
|
||||
|
||||
// Profile values are merged with pre-set options of a "selection" field.
|
||||
$tests[0]['source_data']['profile_values'] = [
|
||||
[
|
||||
'fid' => 4,
|
||||
'uid' => 1,
|
||||
'value' => 'yellow',
|
||||
]
|
||||
];
|
||||
|
||||
// Expected options are:
|
||||
// for "checkbox" fields - array with NULL options
|
||||
// for "selection" fields - options in both keys and values
|
||||
$expected_field_options = [
|
||||
'',
|
||||
'',
|
||||
[NULL, NULL],
|
||||
[
|
||||
'red' => 'red',
|
||||
'blue' => 'blue',
|
||||
'green' => 'green',
|
||||
'yellow' => 'yellow',
|
||||
]
|
||||
];
|
||||
|
||||
$tests[0]['expected_data'] = $profile_fields;
|
||||
|
||||
foreach ($tests[0]['expected_data'] as $delta => $row) {
|
||||
$tests[0]['expected_data'][$delta]['options'] = $expected_field_options[$delta];
|
||||
}
|
||||
|
||||
return $tests;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\user\Kernel\Plugin\migrate\source;
|
||||
|
||||
use Drupal\Tests\migrate\Kernel\MigrateSqlSourceTestBase;
|
||||
|
||||
/**
|
||||
* Tests the user_picture_instance source plugin.
|
||||
*
|
||||
* @covers \Drupal\user\Plugin\migrate\source\UserPictureInstance
|
||||
* @group user
|
||||
*/
|
||||
class UserPictureInstanceTest extends MigrateSqlSourceTestBase {
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static $modules = ['user', 'migrate_drupal'];
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function providerSource() {
|
||||
$tests = [];
|
||||
|
||||
// The source data.
|
||||
$tests[0]['source_data']['variable'] = [
|
||||
[
|
||||
'name' => 'file_directory',
|
||||
'value' => serialize(NULL),
|
||||
],
|
||||
[
|
||||
'name' => 'user_picture_file_size',
|
||||
'value' => serialize(128),
|
||||
],
|
||||
[
|
||||
'name' => 'user_picture_dimensions',
|
||||
'value' => serialize('128x128'),
|
||||
],
|
||||
];
|
||||
|
||||
// The expected results.
|
||||
$tests[0]['expected_data'] = [
|
||||
[
|
||||
'id' => '',
|
||||
'file_directory' => 'pictures',
|
||||
'max_filesize' => '128KB',
|
||||
'max_resolution' => '128x128',
|
||||
],
|
||||
];
|
||||
|
||||
return $tests;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,57 +1,44 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\user\Unit\Migrate\d6;
|
||||
namespace Drupal\Tests\user\Kernel\Plugin\migrate\source\d6;
|
||||
|
||||
use Drupal\Tests\migrate\Unit\MigrateSqlSourceTestCase;
|
||||
use Drupal\user\Plugin\migrate\source\d6\ProfileFieldValues;
|
||||
use Drupal\Tests\migrate\Kernel\MigrateSqlSourceTestBase;
|
||||
|
||||
/**
|
||||
* Tests the d6_profile_field_values source plugin.
|
||||
*
|
||||
* @covers \Drupal\user\Plugin\migrate\source\d6\ProfileFieldValues
|
||||
* @group user
|
||||
*/
|
||||
class ProfileFieldValuesTest extends MigrateSqlSourceTestCase {
|
||||
|
||||
const PLUGIN_CLASS = ProfileFieldValues::class;
|
||||
|
||||
protected $migrationConfiguration = array(
|
||||
'id' => 'test',
|
||||
'source' => array(
|
||||
'plugin' => 'd6_profile_field_values',
|
||||
),
|
||||
);
|
||||
|
||||
protected $expectedResults = array(
|
||||
array(
|
||||
'fid' => '8',
|
||||
'profile_color' => array('red'),
|
||||
'uid' => '2',
|
||||
),
|
||||
array(
|
||||
'fid' => '9',
|
||||
'profile_biography' => array('Lorem ipsum dolor sit amet...'),
|
||||
'uid' => '2',
|
||||
),
|
||||
);
|
||||
class ProfileFieldValuesTest extends MigrateSqlSourceTestBase {
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function setUp() {
|
||||
$this->databaseContents['profile_values'] = array(
|
||||
array(
|
||||
public static $modules = ['user', 'migrate_drupal'];
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function providerSource() {
|
||||
$tests = [];
|
||||
|
||||
// The source data.
|
||||
$tests[0]['source_data']['profile_values'] = [
|
||||
[
|
||||
'fid' => '8',
|
||||
'uid' => '2',
|
||||
'value' => 'red',
|
||||
),
|
||||
array(
|
||||
],
|
||||
[
|
||||
'fid' => '9',
|
||||
'uid' => '2',
|
||||
'value' => 'Lorem ipsum dolor sit amet...',
|
||||
),
|
||||
);
|
||||
$this->databaseContents['profile_fields'] = array(
|
||||
array(
|
||||
],
|
||||
];
|
||||
|
||||
$tests[0]['source_data']['profile_fields'] = [
|
||||
[
|
||||
'fid' => '8',
|
||||
'title' => 'Favorite color',
|
||||
'name' => 'profile_color',
|
||||
|
@ -65,8 +52,8 @@ class ProfileFieldValuesTest extends MigrateSqlSourceTestCase {
|
|||
'visibility' => '2',
|
||||
'autocomplete' => '1',
|
||||
'options' => '',
|
||||
),
|
||||
array(
|
||||
],
|
||||
[
|
||||
'fid' => '9',
|
||||
'title' => 'Biography',
|
||||
'name' => 'profile_biography',
|
||||
|
@ -80,9 +67,19 @@ class ProfileFieldValuesTest extends MigrateSqlSourceTestCase {
|
|||
'visibility' => '2',
|
||||
'autocomplete' => '0',
|
||||
'options' => '',
|
||||
),
|
||||
);
|
||||
parent::setUp();
|
||||
],
|
||||
];
|
||||
|
||||
// The expected results.
|
||||
$tests[0]['expected_data'] = [
|
||||
[
|
||||
'profile_color' => ['red'],
|
||||
'profile_biography' => ['Lorem ipsum dolor sit amet...'],
|
||||
'uid' => '2',
|
||||
],
|
||||
];
|
||||
|
||||
return $tests;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,87 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\user\Kernel\Plugin\migrate\source\d6;
|
||||
|
||||
use Drupal\Tests\migrate\Kernel\MigrateSqlSourceTestBase;
|
||||
|
||||
/**
|
||||
* Tests the d6_user_role source plugin.
|
||||
*
|
||||
* @covers \Drupal\user\Plugin\migrate\source\d6\Role
|
||||
* @group user
|
||||
*/
|
||||
class RoleTest extends MigrateSqlSourceTestBase {
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static $modules = ['user', 'migrate_drupal'];
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function providerSource() {
|
||||
$tests = [
|
||||
[
|
||||
'source_data' => [],
|
||||
'expected_data' => [],
|
||||
],
|
||||
];
|
||||
|
||||
$roles = [
|
||||
[
|
||||
'rid' => 1,
|
||||
'name' => 'anonymous user',
|
||||
'permissions' => [
|
||||
'access content',
|
||||
],
|
||||
],
|
||||
[
|
||||
'rid' => 2,
|
||||
'name' => 'authenticated user',
|
||||
'permissions' => [
|
||||
'access comments',
|
||||
'access content',
|
||||
'post comments',
|
||||
'post comments without approval',
|
||||
],
|
||||
],
|
||||
[
|
||||
'rid' => 3,
|
||||
'name' => 'administrator',
|
||||
'permissions' => [
|
||||
'access comments',
|
||||
'administer comments',
|
||||
'post comments',
|
||||
'post comments without approval',
|
||||
'access content',
|
||||
'administer content types',
|
||||
'administer nodes',
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
// The source data.
|
||||
foreach ($roles as $role) {
|
||||
$tests[0]['source_data']['permission'][] = [
|
||||
'rid' => $role['rid'],
|
||||
'perm' => implode(', ', $role['permissions']),
|
||||
];
|
||||
unset($role['permissions']);
|
||||
$tests[0]['source_data']['role'][] = $role;
|
||||
}
|
||||
|
||||
$tests[0]['source_data']['filter_formats'] = [
|
||||
[
|
||||
'format' => 1,
|
||||
'roles' => '',
|
||||
],
|
||||
];
|
||||
|
||||
// The expected results.
|
||||
$tests[0]['expected_data'] = $roles;
|
||||
|
||||
return $tests;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\user\Kernel\Plugin\migrate\source\d6;
|
||||
|
||||
use Drupal\Tests\migrate\Kernel\MigrateSqlSourceTestBase;
|
||||
|
||||
/**
|
||||
* Tests the d6_user_picture_file source plugin.
|
||||
*
|
||||
* @covers \Drupal\user\Plugin\migrate\source\d6\UserPictureFile
|
||||
* @group user
|
||||
*/
|
||||
class UserPictureFileTest extends MigrateSqlSourceTestBase {
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static $modules = ['user', 'migrate_drupal'];
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function providerSource() {
|
||||
$tests = [];
|
||||
|
||||
// The source data.
|
||||
$tests[0]['source_data']['users'] = [
|
||||
[
|
||||
'uid' => '2',
|
||||
'picture' => 'core/modules/simpletest/files/image-test.jpg',
|
||||
],
|
||||
[
|
||||
'uid' => '15',
|
||||
'picture' => '',
|
||||
],
|
||||
];
|
||||
|
||||
// The expected results.
|
||||
$tests[0]['expected_data'] = [
|
||||
[
|
||||
'uid' => '2',
|
||||
'picture' => 'core/modules/simpletest/files/image-test.jpg',
|
||||
],
|
||||
];
|
||||
|
||||
return $tests;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\user\Kernel\Plugin\migrate\source\d6;
|
||||
|
||||
use Drupal\Tests\migrate\Kernel\MigrateSqlSourceTestBase;
|
||||
|
||||
/**
|
||||
* Tests the d6_user_picture source plugin.
|
||||
*
|
||||
* @covers \Drupal\user\Plugin\migrate\source\d6\UserPicture
|
||||
* @group user
|
||||
*/
|
||||
class UserPictureTest extends MigrateSqlSourceTestBase {
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static $modules = ['user', 'migrate_drupal'];
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function providerSource() {
|
||||
$tests = [];
|
||||
|
||||
// The source data.
|
||||
$tests[0]['source_data']['users'] = [
|
||||
[
|
||||
'uid' => 1,
|
||||
'access' => 1382835435,
|
||||
'picture' => 'sites/default/files/pictures/picture-1.jpg',
|
||||
],
|
||||
[
|
||||
'uid' => 2,
|
||||
'access' => 1382835436,
|
||||
'picture' => 'sites/default/files/pictures/picture-2.jpg',
|
||||
],
|
||||
];
|
||||
|
||||
// User picture data model is identical in source input and output.
|
||||
$tests[0]['expected_data'] = $tests[0]['source_data']['users'];
|
||||
|
||||
return $tests;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,83 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\user\Kernel\Plugin\migrate\source\d6;
|
||||
|
||||
use Drupal\Tests\migrate\Kernel\MigrateSqlSourceTestBase;
|
||||
|
||||
/**
|
||||
* Tests the d6_user source plugin.
|
||||
*
|
||||
* @covers \Drupal\user\Plugin\migrate\source\d6\User
|
||||
* @group user
|
||||
*/
|
||||
class UserTest extends MigrateSqlSourceTestBase {
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static $modules = ['user', 'migrate_drupal'];
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function providerSource() {
|
||||
$tests = [];
|
||||
|
||||
// The source data.
|
||||
$tests[0]['source_data']['users'] = [
|
||||
[
|
||||
'uid' => 2,
|
||||
'name' => 'admin',
|
||||
'pass' => '1234',
|
||||
'mail' => 'admin@example.com',
|
||||
'theme' => '',
|
||||
'signature' => '',
|
||||
'signature_format' => 0,
|
||||
'created' => 1279402616,
|
||||
'access' => 1322981278,
|
||||
'login' => 1322699994,
|
||||
'status' => 0,
|
||||
'timezone' => 'America/Lima',
|
||||
'language' => 'en',
|
||||
// @todo Add the file when needed.
|
||||
'picture' => 'sites/default/files/pictures/picture-1.jpg',
|
||||
'init' => 'admin@example.com',
|
||||
'data' => NULL,
|
||||
],
|
||||
[
|
||||
'uid' => 4,
|
||||
'name' => 'alice',
|
||||
// @todo d6 hash?
|
||||
'pass' => '1234',
|
||||
'mail' => 'alice@example.com',
|
||||
'theme' => '',
|
||||
'signature' => '',
|
||||
'signature_format' => 0,
|
||||
'created' => 1322981368,
|
||||
'access' => 1322982419,
|
||||
'login' => 132298140,
|
||||
'status' => 0,
|
||||
'timezone' => 'America/Lima',
|
||||
'language' => 'en',
|
||||
'picture' => '',
|
||||
'init' => 'alice@example.com',
|
||||
'data' => NULL,
|
||||
],
|
||||
];
|
||||
|
||||
// getDatabase() will not create empty tables, so we need to insert data
|
||||
// even if it's irrelevant to the test.
|
||||
$tests[0]['source_data']['users_roles'] = [
|
||||
[
|
||||
'uid' => 99,
|
||||
'rid' => 99,
|
||||
],
|
||||
];
|
||||
|
||||
// The expected results.
|
||||
$tests[0]['expected_data'] = $tests[0]['source_data']['users'];
|
||||
|
||||
return $tests;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,120 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\user\Kernel\Plugin\migrate\source\d7;
|
||||
|
||||
use Drupal\Tests\migrate\Kernel\MigrateSqlSourceTestBase;
|
||||
|
||||
/**
|
||||
* Tests the d7_user source plugin.
|
||||
*
|
||||
* @covers \Drupal\user\Plugin\migrate\source\d7\User
|
||||
* @group user
|
||||
*/
|
||||
class UserTest extends MigrateSqlSourceTestBase {
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static $modules = ['user', 'migrate_drupal'];
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function providerSource() {
|
||||
$tests = [];
|
||||
|
||||
// The source data.
|
||||
$tests[0]['source_data']['field_config_instance'] = [
|
||||
[
|
||||
'id' => '33',
|
||||
'field_id' => '11',
|
||||
'field_name' => 'field_file',
|
||||
'entity_type' => 'user',
|
||||
'bundle' => 'user',
|
||||
'data' => 'a:0:{}',
|
||||
'deleted' => '0',
|
||||
],
|
||||
];
|
||||
$tests[0]['source_data']['field_data_field_file'] = [
|
||||
[
|
||||
'entity_type' => 'user',
|
||||
'bundle' => 'user',
|
||||
'deleted' => 0,
|
||||
'entity_id' => 2,
|
||||
'revision_id' => NULL,
|
||||
'language' => 'und',
|
||||
'delta' => 0,
|
||||
'field_file_fid' => 99,
|
||||
'field_file_display' => 1,
|
||||
'field_file_description' => 'None',
|
||||
],
|
||||
];
|
||||
$tests[0]['source_data']['role'] = [
|
||||
[
|
||||
'rid' => 2,
|
||||
'name' => 'authenticated user',
|
||||
'weight' => 0,
|
||||
],
|
||||
];
|
||||
$tests[0]['source_data']['users'] = [
|
||||
[
|
||||
'uid' => '2',
|
||||
'name' => 'Odo',
|
||||
'pass' => '$S$DVpvPItXvnsmF3giVEe7Jy2lG.SCoEs8uKwpHsyPvdeNAaNZYxZ8',
|
||||
'mail' => 'odo@local.host',
|
||||
'theme' => '',
|
||||
'signature' => '',
|
||||
'signature_format' => 'filtered_html',
|
||||
'created' => '1432750741',
|
||||
'access' => '0',
|
||||
'login' => '0',
|
||||
'status' => '1',
|
||||
'timezone' => 'America/Chicago',
|
||||
'language' => '',
|
||||
'picture' => '0',
|
||||
'init' => 'odo@local.host',
|
||||
'data' => 'a:1:{s:7:"contact";i:1;}',
|
||||
],
|
||||
];
|
||||
$tests[0]['source_data']['users_roles'] = [
|
||||
[
|
||||
'uid' => 2,
|
||||
'rid' => 2,
|
||||
],
|
||||
];
|
||||
|
||||
// The expected results.
|
||||
$tests[0]['expected_data'] = [
|
||||
[
|
||||
'uid' => '2',
|
||||
'name' => 'Odo',
|
||||
'pass' => '$S$DVpvPItXvnsmF3giVEe7Jy2lG.SCoEs8uKwpHsyPvdeNAaNZYxZ8',
|
||||
'mail' => 'odo@local.host',
|
||||
'signature' => '',
|
||||
'signature_format' => 'filtered_html',
|
||||
'created' => '1432750741',
|
||||
'access' => '0',
|
||||
'login' => '0',
|
||||
'status' => '1',
|
||||
'timezone' => 'America/Chicago',
|
||||
'language' => '',
|
||||
'picture' => '0',
|
||||
'init' => 'odo@local.host',
|
||||
'roles' => [2],
|
||||
'data' => [
|
||||
'contact' => 1,
|
||||
],
|
||||
'field_file' => [
|
||||
[
|
||||
'fid' => 99,
|
||||
'display' => 1,
|
||||
'description' => 'None',
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
return $tests;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,82 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\user\Unit\Migrate;
|
||||
|
||||
use Drupal\Tests\migrate\Unit\MigrateSqlSourceTestCase;
|
||||
|
||||
/**
|
||||
* Tests profile_field source plugin.
|
||||
*
|
||||
* @group user
|
||||
*/
|
||||
class ProfileFieldTest extends MigrateSqlSourceTestCase {
|
||||
|
||||
const PLUGIN_CLASS = 'Drupal\user\Plugin\migrate\source\ProfileField';
|
||||
|
||||
protected $migrationConfiguration = [
|
||||
'id' => 'test_profile_fields',
|
||||
'source' => [
|
||||
'plugin' => 'd6_profile_field',
|
||||
],
|
||||
];
|
||||
|
||||
protected $expectedResults = [
|
||||
[
|
||||
'fid' => 1,
|
||||
'title' => 'First name',
|
||||
'name' => 'profile_first_name',
|
||||
'explanation' => 'First name user',
|
||||
'category' => 'profile',
|
||||
'page' => '',
|
||||
'type' => 'textfield',
|
||||
'weight' => 0,
|
||||
'required' => 1,
|
||||
'register' => 0,
|
||||
'visibility' => 2,
|
||||
'autocomplete' => 0,
|
||||
'options' => [],
|
||||
],
|
||||
[
|
||||
'fid' => 2,
|
||||
'title' => 'Last name',
|
||||
'name' => 'profile_last_name',
|
||||
'explanation' => 'Last name user',
|
||||
'category' => 'profile',
|
||||
'page' => '',
|
||||
'type' => 'textfield',
|
||||
'weight' => 0,
|
||||
'required' => 0,
|
||||
'register' => 0,
|
||||
'visibility' => 2,
|
||||
'autocomplete' => 0,
|
||||
'options' => [],
|
||||
],
|
||||
[
|
||||
'fid' => 3,
|
||||
'title' => 'Policy',
|
||||
'name' => 'profile_policy',
|
||||
'explanation' => 'A checkbox that say if you accept policy of website',
|
||||
'category' => 'profile',
|
||||
'page' => '',
|
||||
'type' => 'checkbox',
|
||||
'weight' => 0,
|
||||
'required' => 1,
|
||||
'register' => 1,
|
||||
'visibility' => 2,
|
||||
'autocomplete' => 0,
|
||||
'options' => [],
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
* Prepopulate contents with results.
|
||||
*/
|
||||
protected function setUp() {
|
||||
$this->databaseContents['profile_fields'] = $this->expectedResults;
|
||||
foreach ($this->databaseContents['profile_fields'] as &$row) {
|
||||
$row['options'] = serialize([]);
|
||||
}
|
||||
parent::setUp();
|
||||
}
|
||||
|
||||
}
|
|
@ -1,54 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\user\Unit\Migrate;
|
||||
|
||||
use Drupal\Tests\migrate\Unit\MigrateSqlSourceTestCase;
|
||||
use Drupal\user\Plugin\migrate\source\UserPictureInstance;
|
||||
|
||||
/**
|
||||
* Tests user_picture_instance source plugin.
|
||||
*
|
||||
* @group user
|
||||
*/
|
||||
class UserPictureInstanceTest extends MigrateSqlSourceTestCase {
|
||||
|
||||
const PLUGIN_CLASS = UserPictureInstance::class;
|
||||
|
||||
protected $migrationConfiguration = [
|
||||
'id' => 'test',
|
||||
'source' => [
|
||||
'plugin' => 'user_picture_instance',
|
||||
],
|
||||
];
|
||||
|
||||
protected $expectedResults = array(
|
||||
array(
|
||||
'id' => '',
|
||||
'file_directory' => 'pictures',
|
||||
'max_filesize' => '128KB',
|
||||
'max_resolution' => '128x128',
|
||||
),
|
||||
);
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function setUp() {
|
||||
$this->databaseContents['variable'] = array(
|
||||
array(
|
||||
'name' => 'file_directory',
|
||||
'value' => serialize(NULL),
|
||||
),
|
||||
array(
|
||||
'name' => 'user_picture_file_size',
|
||||
'value' => serialize(128),
|
||||
),
|
||||
array(
|
||||
'name' => 'user_picture_dimensions',
|
||||
'value' => serialize('128x128'),
|
||||
),
|
||||
);
|
||||
parent::setUp();
|
||||
}
|
||||
|
||||
}
|
|
@ -1,75 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\user\Unit\Migrate\d6;
|
||||
|
||||
use Drupal\Tests\migrate\Unit\MigrateSqlSourceTestCase;
|
||||
|
||||
/**
|
||||
* Tests D6 role source plugin.
|
||||
*
|
||||
* @group user
|
||||
*/
|
||||
class RoleTest extends MigrateSqlSourceTestCase {
|
||||
|
||||
const PLUGIN_CLASS = 'Drupal\user\Plugin\migrate\source\d6\Role';
|
||||
|
||||
protected $migrationConfiguration = array(
|
||||
'id' => 'test',
|
||||
'source' => array(
|
||||
'plugin' => 'd6_user_role',
|
||||
),
|
||||
);
|
||||
|
||||
protected $expectedResults = array(
|
||||
array(
|
||||
'rid' => 1,
|
||||
'name' => 'anonymous user',
|
||||
'permissions' => array(
|
||||
'access content',
|
||||
),
|
||||
),
|
||||
array(
|
||||
'rid' => 2,
|
||||
'name' => 'authenticated user',
|
||||
'permissions' => array(
|
||||
'access comments',
|
||||
'access content',
|
||||
'post comments',
|
||||
'post comments without approval',
|
||||
),
|
||||
),
|
||||
array(
|
||||
'rid' => 3,
|
||||
'name' => 'administrator',
|
||||
'permissions' => array(
|
||||
'access comments',
|
||||
'administer comments',
|
||||
'post comments',
|
||||
'post comments without approval',
|
||||
'access content',
|
||||
'administer content types',
|
||||
'administer nodes',
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function setUp() {
|
||||
foreach ($this->expectedResults as $row) {
|
||||
$this->databaseContents['permission'][] = array(
|
||||
'perm' => implode(', ', $row['permissions']),
|
||||
'rid' => $row['rid'],
|
||||
);
|
||||
unset($row['permissions']);
|
||||
$this->databaseContents['role'][] = $row;
|
||||
}
|
||||
$this->databaseContents['filter_formats'][] = array(
|
||||
'format' => 1,
|
||||
'roles' => '',
|
||||
);
|
||||
parent::setUp();
|
||||
}
|
||||
|
||||
}
|
|
@ -1,48 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\user\Unit\Migrate\d6;
|
||||
|
||||
use Drupal\Tests\migrate\Unit\MigrateSqlSourceTestCase;
|
||||
use Drupal\user\Plugin\migrate\source\d6\UserPictureFile;
|
||||
|
||||
/**
|
||||
* Tests the d6_user_picture_file source plugin.
|
||||
*
|
||||
* @group user
|
||||
*/
|
||||
class UserPictureFileTest extends MigrateSqlSourceTestCase {
|
||||
|
||||
const PLUGIN_CLASS = UserPictureFile::class;
|
||||
|
||||
protected $migrationConfiguration = array(
|
||||
'id' => 'test',
|
||||
'source' => array(
|
||||
'plugin' => 'd6_user_picture_file',
|
||||
),
|
||||
);
|
||||
|
||||
protected $expectedResults = array(
|
||||
array(
|
||||
'uid' => '2',
|
||||
'picture' => 'core/modules/simpletest/files/image-test.jpg',
|
||||
),
|
||||
);
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function setUp() {
|
||||
$this->databaseContents['users'] = array(
|
||||
array(
|
||||
'uid' => '2',
|
||||
'picture' => 'core/modules/simpletest/files/image-test.jpg',
|
||||
),
|
||||
array(
|
||||
'uid' => '15',
|
||||
'picture' => '',
|
||||
),
|
||||
);
|
||||
parent::setUp();
|
||||
}
|
||||
|
||||
}
|
|
@ -1,44 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\user\Unit\Migrate\d6;
|
||||
|
||||
use Drupal\Tests\migrate\Unit\MigrateSqlSourceTestCase;
|
||||
|
||||
/**
|
||||
* Tests D6 user picture source plugin.
|
||||
*
|
||||
* @group user
|
||||
*/
|
||||
class UserPictureTest extends MigrateSqlSourceTestCase {
|
||||
|
||||
const PLUGIN_CLASS = 'Drupal\user\Plugin\migrate\source\d6\UserPicture';
|
||||
|
||||
protected $migrationConfiguration = array(
|
||||
'id' => 'test_user_picture',
|
||||
'source' => array(
|
||||
'plugin' => 'd6_user_picture',
|
||||
),
|
||||
);
|
||||
|
||||
protected $expectedResults = array(
|
||||
array(
|
||||
'uid' => 1,
|
||||
'access' => 1382835435,
|
||||
'picture' => 'sites/default/files/pictures/picture-1.jpg',
|
||||
),
|
||||
array(
|
||||
'uid' => 2,
|
||||
'access' => 1382835436,
|
||||
'picture' => 'sites/default/files/pictures/picture-2.jpg',
|
||||
),
|
||||
);
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function setUp() {
|
||||
$this->databaseContents['users'] = $this->expectedResults;
|
||||
parent::setUp();
|
||||
}
|
||||
|
||||
}
|
|
@ -1,83 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\user\Unit\Migrate\d6;
|
||||
|
||||
use Drupal\Tests\migrate\Unit\MigrateSqlSourceTestCase;
|
||||
|
||||
/**
|
||||
* Tests D6 user source plugin.
|
||||
*
|
||||
* @group user
|
||||
*/
|
||||
class UserTest extends MigrateSqlSourceTestCase {
|
||||
|
||||
const PLUGIN_CLASS = 'Drupal\user\Plugin\migrate\source\d6\User';
|
||||
|
||||
protected $migrationConfiguration = array(
|
||||
'id' => 'test',
|
||||
'source' => array(
|
||||
'plugin' => 'd6_user',
|
||||
),
|
||||
);
|
||||
|
||||
protected $expectedResults = array(
|
||||
array(
|
||||
'uid' => 2,
|
||||
'name' => 'admin',
|
||||
// @todo d6 hash?
|
||||
'pass' => '1234',
|
||||
'mail' => 'admin@example.com',
|
||||
'theme' => '',
|
||||
'signature' => '',
|
||||
'signature_format' => 0,
|
||||
'created' => 1279402616,
|
||||
'access' => 1322981278,
|
||||
'login' => 1322699994,
|
||||
'status' => 0,
|
||||
'timezone' => 'America/Lima',
|
||||
'language' => 'en',
|
||||
// @todo Add the file when needed.
|
||||
'picture' => 'sites/default/files/pictures/picture-1.jpg',
|
||||
'init' => 'admin@example.com',
|
||||
'data' => NULL,
|
||||
),
|
||||
array(
|
||||
'uid' => 4,
|
||||
'name' => 'alice',
|
||||
// @todo d6 hash?
|
||||
'pass' => '1234',
|
||||
'mail' => 'alice@example.com',
|
||||
'theme' => '',
|
||||
'signature' => '',
|
||||
'signature_format' => 0,
|
||||
'created' => 1322981368,
|
||||
'access' => 1322982419,
|
||||
'login' => 132298140,
|
||||
'status' => 0,
|
||||
'timezone' => 'America/Lima',
|
||||
'language' => 'en',
|
||||
'picture' => '',
|
||||
'init' => 'alice@example.com',
|
||||
'data' => NULL,
|
||||
),
|
||||
);
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function setUp() {
|
||||
foreach ($this->expectedResults as $k => $row) {
|
||||
$this->databaseContents['users'][$k] = $row;
|
||||
}
|
||||
// getDatabase() will not create empty tables, so we need to insert data
|
||||
// even if it's irrelevant to the test.
|
||||
$this->databaseContents['users_roles'] = array(
|
||||
array(
|
||||
'uid' => 99,
|
||||
'rid' => 99,
|
||||
),
|
||||
);
|
||||
parent::setUp();
|
||||
}
|
||||
|
||||
}
|
|
@ -1,112 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\user\Unit\Plugin\migrate\source\d7;
|
||||
|
||||
use Drupal\Tests\migrate\Unit\MigrateSqlSourceTestCase;
|
||||
|
||||
/**
|
||||
* Tests D7 user source plugin.
|
||||
*
|
||||
* @group user
|
||||
*/
|
||||
class UserTest extends MigrateSqlSourceTestCase {
|
||||
|
||||
const PLUGIN_CLASS = 'Drupal\user\Plugin\migrate\source\d7\User';
|
||||
|
||||
protected $migrationConfiguration = [
|
||||
'id' => 'test',
|
||||
'source' => [
|
||||
'plugin' => 'd7_user',
|
||||
],
|
||||
];
|
||||
|
||||
protected $expectedResults = [
|
||||
[
|
||||
'uid' => '2',
|
||||
'name' => 'Odo',
|
||||
'pass' => '$S$DVpvPItXvnsmF3giVEe7Jy2lG.SCoEs8uKwpHsyPvdeNAaNZYxZ8',
|
||||
'mail' => 'odo@local.host',
|
||||
'signature' => '',
|
||||
'signature_format' => 'filtered_html',
|
||||
'created' => '1432750741',
|
||||
'access' => '0',
|
||||
'login' => '0',
|
||||
'status' => '1',
|
||||
'timezone' => 'America/Chicago',
|
||||
'language' => '',
|
||||
'picture' => '0',
|
||||
'init' => 'odo@local.host',
|
||||
'roles' => [2],
|
||||
'data' => [
|
||||
'contact' => 1,
|
||||
],
|
||||
'field_file' => [
|
||||
[
|
||||
'fid' => 99,
|
||||
'display' => 1,
|
||||
'description' => 'None',
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function setUp() {
|
||||
$this->databaseContents['users'][] = [
|
||||
'uid' => '2',
|
||||
'name' => 'Odo',
|
||||
'pass' => '$S$DVpvPItXvnsmF3giVEe7Jy2lG.SCoEs8uKwpHsyPvdeNAaNZYxZ8',
|
||||
'mail' => 'odo@local.host',
|
||||
'theme' => '',
|
||||
'signature' => '',
|
||||
'signature_format' => 'filtered_html',
|
||||
'created' => '1432750741',
|
||||
'access' => '0',
|
||||
'login' => '0',
|
||||
'status' => '1',
|
||||
'timezone' => 'America/Chicago',
|
||||
'language' => '',
|
||||
'picture' => '0',
|
||||
'init' => 'odo@local.host',
|
||||
'data' => 'a:1:{s:7:"contact";i:1;}',
|
||||
];
|
||||
$this->databaseContents['users_roles'][] = [
|
||||
'uid' => 2,
|
||||
'rid' => 2,
|
||||
];
|
||||
$this->databaseContents['role'][] = [
|
||||
'rid' => 2,
|
||||
'name' => 'authenticated user',
|
||||
'weight' => 0,
|
||||
];
|
||||
$this->databaseContents['field_config_instance'] = [
|
||||
[
|
||||
'id' => '33',
|
||||
'field_id' => '11',
|
||||
'field_name' => 'field_file',
|
||||
'entity_type' => 'user',
|
||||
'bundle' => 'user',
|
||||
'data' => 'a:0:{}',
|
||||
'deleted' => '0',
|
||||
],
|
||||
];
|
||||
$this->databaseContents['field_data_field_file'] = [
|
||||
[
|
||||
'entity_type' => 'user',
|
||||
'bundle' => 'user',
|
||||
'deleted' => 0,
|
||||
'entity_id' => 2,
|
||||
'revision_id' => NULL,
|
||||
'language' => 'und',
|
||||
'delta' => 0,
|
||||
'field_file_fid' => 99,
|
||||
'field_file_display' => 1,
|
||||
'field_file_description' => 'None',
|
||||
],
|
||||
];
|
||||
parent::setUp();
|
||||
}
|
||||
|
||||
}
|
Reference in a new issue