View source
<?php
namespace Drupal\Tests\simplenews\Functional;
use Drupal\Component\Utility\Html;
use Drupal\user\Entity\Role;
use Drupal\user\Entity\User;
class SimplenewsPersonalizationFormsTest extends SimplenewsTestBase {
protected $admin;
protected function setUp() {
parent::setUp();
$this
->addField('string', 'field_shared', 'user');
$this
->addField('string', 'field_shared', 'simplenews_subscriber');
Role::load('anonymous')
->grantPermission('subscribe to newsletters')
->grantPermission('access user profiles')
->save();
Role::load('authenticated')
->grantPermission('subscribe to newsletters')
->save();
$this->admin = $this
->drupalCreateUser([
'administer users',
]);
}
public function testSynchronizeSubscribeRegister() {
$email = $this
->randomEmail();
$this
->subscribe([], $email, [
'field_shared[0][value]' => $this
->randomString(10),
]);
$new_value = $this
->randomString(20);
$uid = $this
->registerUser($email, [
'field_shared[0][value]' => $new_value,
]);
$this
->drupalGet("user/{$uid}");
$this
->assertText(Html::escape($new_value));
$subscriber = $this
->getLatestSubscriber();
$this
->assertEqual($subscriber->subscriptions
->get(0)->status, SIMPLENEWS_SUBSCRIPTION_STATUS_UNCONFIRMED);
}
public function testSynchronizeRegisterSubscribe() {
$email = $this
->randomEmail();
$uid = $this
->registerUser($email, [
'field_shared[0][value]' => $this
->randomString(10),
]);
$user = User::load($uid);
$this
->config('simplenews.settings')
->set('subscription.skip_verification', TRUE)
->save();
$new_value = $this
->randomString(20);
$this
->subscribe([], $email, [
'field_shared[0][value]' => $new_value,
]);
$this
->resetPassLogin($user);
$this
->drupalGet("user/{$uid}");
$this
->assertText(Html::escape($new_value));
}
public function testSubscribeRequestPassword() {
$email = $this
->randomEmail();
$this
->subscribe([], $email);
$this
->assertFalse(user_load_by_mail($email));
}
public function testDisableAccount() {
$email = $this
->randomEmail();
$uid = $this
->registerUser($email);
$this
->resetPassLogin(User::load($uid));
$this
->subscribe('default', NULL, [], $uid);
$this
->drupalLogout();
$this
->drupalLogin($this->admin);
$this
->drupalGet("user/{$uid}/cancel");
$this
->submitForm([], 'Cancel account');
$subscriber = $this
->getLatestSubscriber();
$this
->assertFalse($subscriber
->getStatus());
}
public function testDeleteAccount() {
$email = $this
->randomEmail();
$uid = $this
->registerUser($email);
$this
->subscribe([], $email);
$this
->drupalLogin($this->admin);
$this
->drupalGet("user/{$uid}/cancel");
$this
->submitForm([
'user_cancel_method' => 'user_cancel_reassign',
], 'Cancel account');
$subscriber = $this
->getLatestSubscriber();
$this
->assertNull($subscriber, 'No subscriber found');
}
public function testBlockedSubscribe() {
$email = $this
->randomEmail();
$uid = $this
->registerUser($email);
$this
->drupalLogin($this->admin);
$this
->drupalGet("user/{$uid}/edit");
$this
->submitForm([
'status' => 0,
], 'Save');
$this
->drupalLogout();
$this
->subscribe([], $email);
$this
->assertRaw(t('The email address %mail belongs to a blocked user.', [
'%mail' => $email,
]));
}
}