示例#1
0
 function testAuth()
 {
     $m = new Manager();
     $s = new Session(new MockArraySessionStorage());
     $r = Request::create('/');
     $r->setSession($s);
     $a = new TestAuth($m, $r);
     $this->assertFalse($a->getUser(), 'Пользователь не залогинен');
     $t = $a->login('admin', 1234);
     $this->assertInstanceOf('TestUser', $a->getUser(), 'Объект пользователя');
     $this->assertEquals('1-abc', $t, 'Токен получен');
     $this->assertEquals('1-abc', $s->get($a->getTokenVar()), 'Токен сохранен в сессии');
     $this->assertInstanceOf('Symfony\\Component\\HttpFoundation\\Cookie', $a->getCookieForResponse(), 'Подготовлены куки');
     $a->logout();
     $this->assertFalse($a->getUser(), 'Нет пользователя');
     $this->assertFalse($s->has($a->getTokenVar()), 'Сессия очистилась');
     $u = new TestUser();
     $u->addRole('guest');
     $u->setId(2);
     $t = $a->loginUser($u);
     $this->assertEquals($u, $a->getUser(), 'Пользователь авторизован');
     $this->assertEquals('2-abc', $t, 'Токен получен');
     $this->assertEquals('2-abc', $s->get($a->getTokenVar()), 'Токен сохранен в сессии');
     $c = $a->getCookieForResponse();
     $this->assertEquals($a->getTokenVar(), $c->getName(), 'Имя переменной в сессии');
     $this->assertEquals('2-abc', $c->getValue(), 'Значение токена');
     $a = new TestAuth($m, $r);
     $this->assertInstanceOf('TestUser', $a->getUser(), 'Пользователь залогинился из сессии');
     $s->remove($a->getTokenVar());
     $r = Request::create('/', 'GET', array(), array($c->getName() => $c->getValue()));
     $r->setSession($s);
     $a = new TestAuth($m, $r);
     $this->assertInstanceOf('TestUser', $a->getUser(), 'Пользователь залогинился из cookies');
 }