Вход Регистрация
Файл: gapps/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/Esmtp/AuthHandlerTest.php
Строк: 158
<?php

class Swift_Transport_Esmtp_AuthHandlerTest extends SwiftMailerTestCase
{
    private 
$_agent;

    protected function 
setUp()
    {
        
$this->_agent $this->getMockery('Swift_Transport_SmtpAgent')->shouldIgnoreMissing();
    }

    public function 
testKeywordIsAuth()
    {
        
$auth $this->_createHandler(array());
        
$this->assertEquals('AUTH'$auth->getHandledKeyword());
    }

    public function 
testUsernameCanBeSetAndFetched()
    {
        
$auth $this->_createHandler(array());
        
$auth->setUsername('jack');
        
$this->assertEquals('jack'$auth->getUsername());
    }

    public function 
testPasswordCanBeSetAndFetched()
    {
        
$auth $this->_createHandler(array());
        
$auth->setPassword('pass');
        
$this->assertEquals('pass'$auth->getPassword());
    }

    public function 
testAuthModeCanBeSetAndFetched()
    {
        
$auth $this->_createHandler(array());
        
$auth->setAuthMode('PLAIN');
        
$this->assertEquals('PLAIN'$auth->getAuthMode());
    }

    public function 
testMixinMethods()
    {
        
$auth $this->_createHandler(array());
        
$mixins $auth->exposeMixinMethods();
        
$this->assertTrue(in_array('getUsername'$mixins),
            
'%s: getUsername() should be accessible via mixin'
            
);
        
$this->assertTrue(in_array('setUsername'$mixins),
            
'%s: setUsername() should be accessible via mixin'
            
);
        
$this->assertTrue(in_array('getPassword'$mixins),
            
'%s: getPassword() should be accessible via mixin'
            
);
        
$this->assertTrue(in_array('setPassword'$mixins),
            
'%s: setPassword() should be accessible via mixin'
            
);
        
$this->assertTrue(in_array('setAuthMode'$mixins),
            
'%s: setAuthMode() should be accessible via mixin'
            
);
        
$this->assertTrue(in_array('getAuthMode'$mixins),
            
'%s: getAuthMode() should be accessible via mixin'
            
);
    }

    public function 
testAuthenticatorsAreCalledAccordingToParamsAfterEhlo()
    {
        
$a1 $this->_createMockAuthenticator('PLAIN');
        
$a2 $this->_createMockAuthenticator('LOGIN');

        
$a1->shouldReceive('authenticate')
           ->
never()
           ->
with($this->_agent'jack''pass');
        
$a2->shouldReceive('authenticate')
           ->
once()
           ->
with($this->_agent'jack''pass')
           ->
andReturn(true);

        
$auth $this->_createHandler(array($a1$a2));
        
$auth->setUsername('jack');
        
$auth->setPassword('pass');

        
$auth->setKeywordParams(array('CRAM-MD5''LOGIN'));
        
$auth->afterEhlo($this->_agent);
    }

    public function 
testAuthenticatorsAreNotUsedIfNoUsernameSet()
    {
        
$a1 $this->_createMockAuthenticator('PLAIN');
        
$a2 $this->_createMockAuthenticator('LOGIN');

        
$a1->shouldReceive('authenticate')
           ->
never()
           ->
with($this->_agent'jack''pass');
        
$a2->shouldReceive('authenticate')
           ->
never()
           ->
with($this->_agent'jack''pass')
           ->
andReturn(true);

        
$auth $this->_createHandler(array($a1$a2));

        
$auth->setKeywordParams(array('CRAM-MD5''LOGIN'));
        
$auth->afterEhlo($this->_agent);
    }

    public function 
testSeveralAuthenticatorsAreTriedIfNeeded()
    {
        
$a1 $this->_createMockAuthenticator('PLAIN');
        
$a2 $this->_createMockAuthenticator('LOGIN');

        
$a1->shouldReceive('authenticate')
           ->
once()
           ->
with($this->_agent'jack''pass')
           ->
andReturn(false);
        
$a2->shouldReceive('authenticate')
           ->
once()
           ->
with($this->_agent'jack''pass')
           ->
andReturn(true);

        
$auth $this->_createHandler(array($a1$a2));
        
$auth->setUsername('jack');
        
$auth->setPassword('pass');

        
$auth->setKeywordParams(array('PLAIN''LOGIN'));
        
$auth->afterEhlo($this->_agent);
    }

    public function 
testFirstAuthenticatorToPassBreaksChain()
    {
        
$a1 $this->_createMockAuthenticator('PLAIN');
        
$a2 $this->_createMockAuthenticator('LOGIN');
        
$a3 $this->_createMockAuthenticator('CRAM-MD5');

        
$a1->shouldReceive('authenticate')
           ->
once()
           ->
with($this->_agent'jack''pass')
           ->
andReturn(false);
        
$a2->shouldReceive('authenticate')
           ->
once()
           ->
with($this->_agent'jack''pass')
           ->
andReturn(true);
        
$a3->shouldReceive('authenticate')
           ->
never()
           ->
with($this->_agent'jack''pass');

        
$auth $this->_createHandler(array($a1$a2));
        
$auth->setUsername('jack');
        
$auth->setPassword('pass');

        
$auth->setKeywordParams(array('PLAIN''LOGIN''CRAM-MD5'));
        
$auth->afterEhlo($this->_agent);
    }

    private function 
_createHandler($authenticators)
    {
        return new 
Swift_Transport_Esmtp_AuthHandler($authenticators);
    }

    private function 
_createMockAuthenticator($type)
    {
        
$authenticator $this->getMockery('Swift_Transport_Esmtp_Authenticator')->shouldIgnoreMissing();
        
$authenticator->shouldReceive('getAuthKeyword')
                      ->
zeroOrMoreTimes()
                      ->
andReturn($type);

        return 
$authenticator;
    }
}
Онлайн: 0
Реклама