View source
<?php
namespace Drupal\Tests\sharedemail\Functional;
use Drupal\Tests\BrowserTestBase;
use Drupal\user\UserInterface;
class SharedEmailTest extends BrowserTestBase {
protected $user;
public static $modules = [
'sharedemail',
];
protected $defaultTheme = 'stark';
protected function setUp() {
parent::setUp();
$this->user = $this
->drupalCreateUser([
'administer users',
'administer site configuration',
'administer shared email',
'create shared email account',
'access shared email message',
]);
}
public function testUpdateMessage() {
$this
->drupalLogin($this->user);
$this
->drupalGet('admin/config/people/shared-email');
$this
->assertSession()
->statusCodeEquals(200);
$this
->assertSession()
->fieldValueEquals('sharedemail_msg', $this
->config('sharedemail.settings')
->get('sharedemail_msg'));
$edit = [
'sharedemail_msg' => 'Test message',
];
$this
->drupalPostForm('admin/config/people/shared-email', $edit, t('Save configuration'));
$this
->drupalGet('admin/config/people/shared-email');
$this
->assertSession()
->statusCodeEquals(200);
$this
->assertSession()
->fieldValueEquals('sharedemail_msg', 'Test message');
}
public function testNonDuplicateEmail() {
$this
->drupalLogin($this->user);
$this
->config('user.settings')
->set('verify_mail', FALSE)
->set('register', UserInterface::REGISTER_VISITORS)
->save();
$duplicateUser = $this
->drupalCreateUser();
$edit = [
'name' => $this
->randomMachineName(),
'mail' => $this
->randomMachineName() . $duplicateUser
->getEmail(),
'pass[pass1]' => 'Test1Password',
'pass[pass2]' => 'Test1Password',
];
$this
->drupalPostForm('admin/people/create', $edit, t('Create new account'));
$this
->assertSession()
->pageTextContains(t('Created a new user account for @name. No email has been sent.', [
'@name' => $edit['name'],
]));
$this
->assertSession()
->pageTextNotContains($this
->config('sharedemail.settings')
->get('sharedemail_msg'));
}
public function testCannotDuplicateEmail() {
$notAllowedUser = $this
->drupalCreateUser([
'administer users',
]);
$this
->drupalLogin($notAllowedUser);
$duplicateUser = $this
->drupalCreateUser();
$edit = [
'name' => $this
->randomMachineName(),
'mail' => $duplicateUser
->getEmail(),
'pass[pass1]' => 'Test1Password',
'pass[pass2]' => 'Test1Password',
];
$this
->drupalPostForm('admin/people/create', $edit, t('Create new account'));
$this
->assertSession()
->pageTextContains(t('The email address @email is already taken.', [
'@email' => $duplicateUser
->getEmail(),
]));
}
public function testCanDuplicateEmail() {
$this
->drupalLogin($this->user);
$duplicateUser = $this
->drupalCreateUser();
$edit = [
'name' => $this
->randomMachineName(),
'mail' => $duplicateUser
->getEmail(),
'pass[pass1]' => 'Test1Password',
'pass[pass2]' => 'Test1Password',
];
$this
->drupalPostForm('admin/people/create', $edit, t('Create new account'));
$this
->assertSession()
->pageTextContains(t('Created a new user account for @name. No email has been sent.', [
'@name' => $edit['name'],
]));
}
public function testNotAllowedDuplicateEmail() {
$this
->drupalLogin($this->user);
$duplicateUser = $this
->drupalCreateUser();
$this
->config('sharedemail.settings')
->set('sharedemail_allowed', $this
->randomMachineName())
->save();
$edit = [
'name' => $this
->randomMachineName(),
'mail' => $duplicateUser
->getEmail(),
'pass[pass1]' => 'Test1Password',
'pass[pass2]' => 'Test1Password',
];
$this
->drupalPostForm('admin/people/create', $edit, t('Create new account'));
$this
->assertSession()
->pageTextContains(t('The email address @email is already taken.', [
'@email' => $duplicateUser
->getEmail(),
]));
}
public function testAllowedDuplicateEmail() {
$this
->drupalLogin($this->user);
$this
->config('user.settings')
->set('verify_mail', FALSE)
->set('register', UserInterface::REGISTER_VISITORS)
->save();
$duplicateUser = $this
->drupalCreateUser();
$this
->config('sharedemail.settings')
->set('sharedemail_allowed', $duplicateUser
->getEmail())
->save();
$edit = [
'name' => $this
->randomMachineName(),
'mail' => $duplicateUser
->getEmail(),
'pass[pass1]' => 'Test1Password',
'pass[pass2]' => 'Test1Password',
];
$this
->drupalPostForm('admin/people/create', $edit, t('Create new account'));
$this
->assertSession()
->pageTextContains(t('Created a new user account for @name. No email has been sent.', [
'@name' => $edit['name'],
]));
}
public function testDuplicateEmailWithMessage() {
$this
->drupalLogin($this->user);
$this
->config('user.settings')
->set('verify_mail', FALSE)
->set('register', UserInterface::REGISTER_VISITORS)
->save();
$duplicateUser = $this
->drupalCreateUser();
$edit = [
'name' => $this
->randomMachineName(),
'mail' => $duplicateUser
->getEmail(),
'pass[pass1]' => 'Test1Password',
'pass[pass2]' => 'Test1Password',
];
$this
->drupalPostForm('admin/people/create', $edit, t('Create new account'));
$this
->assertSession()
->pageTextContains(t('Created a new user account for @name. No email has been sent.', [
'@name' => $edit['name'],
]));
$this
->assertSession()
->pageTextContains($this
->config('sharedemail.settings')
->get('sharedemail_msg'));
}
public function testDuplicateEmailWithoutMessage() {
$noMessageUser = $this
->drupalCreateUser([
'administer users',
'administer shared email',
'create shared email account',
]);
$this
->drupalLogin($noMessageUser);
$this
->config('user.settings')
->set('verify_mail', FALSE)
->set('register', UserInterface::REGISTER_VISITORS)
->save();
$duplicateUser = $this
->drupalCreateUser();
$edit = [
'name' => $this
->randomMachineName(),
'mail' => $duplicateUser
->getEmail(),
'pass[pass1]' => 'Test1Password',
'pass[pass2]' => 'Test1Password',
];
$this
->drupalPostForm('admin/people/create', $edit, t('Create new account'));
$this
->assertSession()
->pageTextContains(t('Created a new user account for @name. No email has been sent.', [
'@name' => $edit['name'],
]));
$this
->assertSession()
->pageTextNotContains($this
->config('sharedemail.settings')
->get('sharedemail_msg'));
}
}