Skip to content
Snippets Groups Projects
AuthControllerTest.php 67 KiB
Newer Older
Patrick Barroca's avatar
Patrick Barroca committed
                                'login' => 'tomato',
                                'password' => 'pwd']));
    $this->dispatch('auth/newsletter-register/id/5', true);
  }


  /** @test */
  public function dispatchShouldRedirectToIndex() {
    $this->assertRedirectTo('/');
  }


  /** @test */
  public function flashMessengerShouldBeReadyWithExpectedMessage() {
    $this->assertFlashMessengerContentContains('Vous êtes inscrit à la liste de diffusion: Daily News');
  }


  /** @test */
  public function tomatoShouldBeInDailyNewsSubscribers() {
    $this->assertEquals('tomato' , Class_NewsletterSubscription::find(1)->getUser()->getLogin());
  }



class AuthControllerNewsletterUnsubscribeNoBodyTest extends AuthControllerNobodyLoggedTestCase {

Patrick Barroca's avatar
Patrick Barroca committed
  public function setUp() {
    parent::setUp();
Patrick Barroca's avatar
Patrick Barroca committed
    $this->fixture('Class_Newsletter',
                   ['id' => 1,
                    'titre' => 'Daily News']);
Patrick Barroca's avatar
Patrick Barroca committed
    $this->dispatch('auth/newsletter-unsubscribe/id/1', true);
  }
Patrick Barroca's avatar
Patrick Barroca committed
  /** @test */
  public function authMessageShouldBeDisplay() {
    $this->assertXPathContentContains('//p', 'Vous devez vous identifier pour vous désinscrire de la newsletter: Daily News');
  }
Patrick Barroca's avatar
Patrick Barroca committed
  /** @test */
  public function linkToLoginShouldBePresent() {
    $this->assertXPath('//a[contains(@href,"auth/ajax-login")]');
  }
}




class AuthControllerNewsletterUnsubscribeWrongIdTest extends AuthControllerNobodyLoggedTestCase {

Patrick Barroca's avatar
Patrick Barroca committed
  public function setUp() {
    parent::setUp();
    Class_Newsletter::beVolatile();
    $this->dispatch('auth/newsletter-unsubscribe/id/1', true);
  }
Patrick Barroca's avatar
Patrick Barroca committed
  /** @test */
  public function shouldRedirectToIndex() {
    $this->assertRedirectTo('/');
  }
Patrick Barroca's avatar
Patrick Barroca committed
  /** @test */
  public function flashMessageShouldBeAsExpected() {
    $this->assertFlashMessengerContentContains('Vous n\'êtes plus inscrit à la lettre d\'information, celle-ci n\'existe plus.');
  }
}




class AuthControllerNewsletterUnsubscribeTest extends AbstractControllerTestCase {

Patrick Barroca's avatar
Patrick Barroca committed
  public function setUp() {
    parent::setUp();
Patrick Barroca's avatar
Patrick Barroca committed
    $tomato = $this->fixture('Class_Users',
                             ['id' => 156,
                              'login' => 'tomato',
                              'password' => 'pwd']);
Patrick Barroca's avatar
Patrick Barroca committed
    ZendAfi_Auth::getInstance()
      ->logUser($tomato);
Patrick Barroca's avatar
Patrick Barroca committed
    $daily_news = $this->fixture('Class_Newsletter',
                                 ['id' => 1,
                                  'titre' => 'Daily News']);
Patrick Barroca's avatar
Patrick Barroca committed
    $subscription = $this->fixture('Class_NewsletterSubscription',
                                   ['id' => 1]);
Patrick Barroca's avatar
Patrick Barroca committed
    $subscription->setUser($tomato);
    $subscription->setNewsletter($daily_news);
    $subscription->save();
Patrick Barroca's avatar
Patrick Barroca committed
    $this->dispatch('auth/newsletter-unsubscribe/id/1', true);
  }
Patrick Barroca's avatar
Patrick Barroca committed
  /** @test */
  public function shouldRedirectToIndex() {
    $this->assertRedirectTo('/');
  }
Patrick Barroca's avatar
Patrick Barroca committed
  /** @test */
  public function flashMessageShouldBeAsExpected() {
    $this->assertFlashMessengerContentContains('Vous êtes désinscrit de la liste de diffusion: Daily News');
  }



class AuthControllerNewsletterRegisterSendMailWrongMailConfigurationTest extends AbstractControllerTestCase {
Patrick Barroca's avatar
Patrick Barroca committed
  public function setUp() {
    parent::setUp();
Patrick Barroca's avatar
Patrick Barroca committed
    ZendAfi_Auth::getInstance()->clearIdentity();
Patrick Barroca's avatar
Patrick Barroca committed
    $this->mock_transport = new MockMailTransport();
    Zend_Mail::setDefaultTransport($this->mock_transport);
    $this->mock_transport->onSendDo(function() { throw new Exception();
                                                });
Patrick Barroca's avatar
Patrick Barroca committed
    Class_Profil::getCurrentProfil()
      ->setMailSite('tom@afi.fr');
Patrick Barroca's avatar
Patrick Barroca committed
    Class_Users::beVolatile();
    Class_UsersNonValid::beVolatile();
Patrick Barroca's avatar
Patrick Barroca committed
    $this->fixture('Class_Newsletter', ['id' => 5, 'titre' => 'Daily News']);
Patrick Barroca's avatar
Patrick Barroca committed
    $this->postDispatch('/opac/auth/newsletter-register/id/5', ['email' => 'iwanttobespamed@abo.it',
                                                                'emailCheck' => '']);
  }
Patrick Barroca's avatar
Patrick Barroca committed
  /** @test */
  public function sendMailErrorShouldBePresent() {
    $this->assertXPathContentContains('//span[@class="error"]', 'Une erreur est survenue à l\'envoi du mail de confirmation. Veuillez réessayer. Si le problème persiste, veuillez contacter votre médiathèque.');
  }



class AuthControllerNewsletterRegisterWithAutoSubscribeNewsletterTest extends AbstractControllerTestCase {
Patrick Barroca's avatar
Patrick Barroca committed
  public function setUp() {
    parent::setUp();
    Class_NewsletterSubscription::beVolatile();
    Class_Users::beVolatile();
    $this->fixture('Class_UsersNonValid', [
                                           'id' => 1,
                                           'login' => 'future@i.am',
                                           'mail' => 'future@i.am',
                                           'password' => 'random',
                                           'cle' => '12345678']);
Patrick Barroca's avatar
Patrick Barroca committed
    $daily_news = $this->fixture('Class_Newsletter',
                                 ['id' => 1,
                                  'titre' => 'Daily News']);
Patrick Barroca's avatar
Patrick Barroca committed
    $daily_news->setAutoSubscribe(true)->save();
Patrick Barroca's avatar
Patrick Barroca committed
    $weekly_news = $this->fixture('Class_Newsletter',
                                  ['id' => 2,
                                   'titre' => 'Weekly News']);
Patrick Barroca's avatar
Patrick Barroca committed
    $this->dispatch('opac/auth/newsletter-active-user/c/12345678/id/1', true);
  }
Patrick Barroca's avatar
Patrick Barroca committed
  /** @test */
  public function onlyOneSubscriptionsShouldBeSaved() {
    $this->assertEquals(1, count(Class_NewsletterSubscription::findAll()));
Patrick Barroca's avatar
Patrick Barroca committed
  }
Patrick Barroca's avatar
Patrick Barroca committed
  /** @test */
  public function newsletterSubscriptionShouldContainsDailyNewsNews() {
    $this->assertEquals('Daily News', Class_NewsletterSubscription::find(1)->getNewsletter()->getTitre());
  }
Patrick Barroca's avatar
Patrick Barroca committed
  /** @test */
  public function messageShouldBeAsExpected() {
    $this->assertXPathContentContains('//p', "Vous avez bien été abonné à la newsletter");
  }