/** * Test Slim sets cookie with default time * * Pre-conditions: * Slim app initialized; * Case A: Cookie time not set; * Case B: Cookie time set as seconds from now (integer); * Case C: Cookie time set as string; * Case D: Cookie time is set to 0; * * Post-conditions: * Cookie available in response; * Case A: Cookie time set using default value; * Case C: Cookie time set using `strtotime()`; * Case D: Cookie time is 0; */ public function testSlimSetsCookie() { Slim::init(); $cj = Slim::response()->getCookieJar(); //Case A $timeA = time(); Slim::setCookie('myCookie1', 'myValue1'); $cookieA = $cj->getResponseCookie('myCookie1'); $this->assertEquals('myCookie1', $cookieA->getName()); $this->assertEquals('myValue1', $cookieA->getValue()); $this->assertEquals($timeA + 1200, $cookieA->getExpires()); //default duration is 20 minutes $this->assertEquals('/', $cookieA->getPath()); $this->assertEquals('', $cookieA->getDomain()); $this->assertFalse($cookieA->getSecure()); $this->assertFalse($cookieA->getHttpOnly()); //Case C $timeC = time(); Slim::setCookie('myCookie3', 'myValue3', '1 hour'); $cookieC = $cj->getResponseCookie('myCookie3'); $this->assertEquals($timeC + 3600, $cookieC->getExpires()); //Case D $timeD = time(); Slim::setCookie('myCookie4', 'myValue4', 0); $cookieD = $cj->getResponseCookie('myCookie4'); $this->assertEquals(0, $cookieD->getExpires()); }
return $argument; }); // End FILTERS /* == * * * ROUTES * * ==============================================*/ $app->map('/', function () use($app) { if ($app->request()->isPost() && sizeof($app->request()->post()) == 2) { // if valid login, set auth cookie and redirect $testp = sha1('uAX8+Tdv23/3YQ=='); $post = (object) $app->request()->post(); if (isset($post->username) && isset($post->password) && sha1($post->password) == $testp && $post->username == 'bppenne') { //$app->setEncryptedCookie('bppasscook', $post->password, 0); $app->setCookie('user_cook', $post->username, 0); $app->setCookie('pass_cook', $post->password, 0); $app->redirect('./review'); } else { $app->redirect('.'); } } $app->render('login.html'); })->via('GET', 'POST')->name('login'); $authUser = function ($role = 'member') use($app) { return function () use($role) { $app = Slim::getInstance(); // Check for password in the cookie if ($app->getCookie('pass_cook') != 'uAX8+Tdv23/3YQ==' || $app->getCookie('user_cook') != 'bppenne') { //if ( $app->getEncryptedCookie('bppasscook', false) != 'uAX8+Tdv23/3YQ==') { $app->redirect('..');
/** * Test delete cookie * * This method ensures that the `Set-Cookie:` HTTP response * header is set. The implementation of setting the response * cookie is tested separately in another file. */ public function testDeleteCookie() { Slim_Environment::mock(array('SCRIPT_NAME' => '/foo', 'PATH_INFO' => '/bar', 'COOKIE' => 'foo=bar; foo2=bar2')); $s = new Slim(); $s->get('/bar', function () use($s) { $s->setCookie('foo', 'bar'); $s->deleteCookie('foo'); }); $s->call(); list($status, $header, $body) = $s->response()->finalize(); $cookies = explode("\n", $header['Set-Cookie']); $this->assertEquals(1, count($cookies)); $this->assertEquals(1, preg_match('@^foo=;@', $cookies[0])); }
/** * Test Slim deletes cookies * * Pre-conditions: * Case A: Classic cookie * Case B: Encrypted cookie * * Post-conditions: * Response Cookies replaced with empty, auto-expiring Cookies */ public function testSlimDeletesCookies() { $app = new Slim(); $cj = $app->response()->getCookieJar(); //Case A $app->setCookie('foo1', 'bar1'); $this->assertEquals('bar1', $cj->getResponseCookie('foo1')->getValue()); $this->assertTrue($cj->getResponseCookie('foo1')->getExpires() > time()); $app->deleteCookie('foo1'); $this->assertEquals('', $app->getCookie('foo1')); $this->assertTrue($cj->getResponseCookie('foo1')->getExpires() < time()); //Case B $app->setEncryptedCookie('foo2', 'bar2'); $this->assertTrue(strlen($cj->getResponseCookie('foo2')->getValue()) > 0); $this->assertTrue($cj->getResponseCookie('foo2')->getExpires() > time()); $app->deleteCookie('foo2'); $this->assertEquals('', $cj->getResponseCookie('foo2')->getValue()); $this->assertTrue($cj->getResponseCookie('foo2')->getExpires() < time()); }
/** * Test delete cookie * * This method ensures that the `Set-Cookie:` HTTP response * header is set. The implementation of setting the response * cookie is tested separately in another file. */ public function testDeleteCookie() { Slim_Environment::mock(array('REQUEST_METHOD' => 'GET', 'REMOTE_ADDR' => '127.0.0.1', 'SCRIPT_NAME' => '/foo', 'PATH_INFO' => '/bar', 'QUERY_STRING' => 'one=foo&two=bar', 'SERVER_NAME' => 'slimframework.com', 'SERVER_PORT' => 80, 'HTTP_COOKIE' => 'foo=bar; foo2=bar2', 'slim.url_scheme' => 'http', 'slim.input' => '', 'slim.errors' => @fopen('php://stderr', 'w'))); $s = new Slim(); $s->get('/bar', function () use($s) { $s->setCookie('foo', 'bar'); $s->deleteCookie('foo'); }); $env = $s->environment(); list($status, $header, $body) = $s->call($env); $cookies = explode("\n", $header['Set-Cookie']); $this->assertEquals(1, count($cookies)); $this->assertEquals(1, preg_match('@^foo=;@', $cookies[0])); }
/** * Test Slim deletes cookies * * Pre-conditions: * Case A: Classic cookie * Case B: Encrypted cookie * * Post-conditions: * Response Cookies replaced with empty, auto-expiring Cookies */ public function testSlimDeletesCookies() { Slim::init(); $cj = Slim::response()->getCookieJar(); //Case A Slim::setCookie('foo1', 'bar1'); $this->assertEquals('bar1', $cj->getResponseCookie('foo1')->getValue()); $this->assertTrue($cj->getResponseCookie('foo1')->getExpires() > time()); Slim::deleteCookie('foo1'); $this->assertEquals('', Slim::getCookie('foo1')); $this->assertTrue($cj->getResponseCookie('foo1')->getExpires() < time()); //Case B Slim::setEncryptedCookie('foo2', 'bar2'); $this->assertTrue(strlen($cj->getResponseCookie('foo2')->getValue()) > 0); $this->assertTrue($cj->getResponseCookie('foo2')->getExpires() > time()); Slim::deleteCookie('foo2'); $this->assertEquals('', $cj->getResponseCookie('foo2')->getValue()); $this->assertTrue($cj->getResponseCookie('foo2')->getExpires() < time()); }