/** * Test Slim::etag only accepts 'strong' or 'weak' types * * Pre-conditions: * You have initialized a Slim application that sets an ETag * with an invalid type argument. * * Post-conditions: * An InvalidArgumentException is thrown */ public function testSlimETagThrowsExceptionForInvalidType(){ $this->setExpectedException('InvalidArgumentException'); Slim::init(); Slim::get('/', function () { Slim::etag('123','foo'); }); Slim::run(); }
/** * Test Slim returns 200 OK when ETag does not match `If-None-Match` request header * * Pre-conditions: * You have initialized a Slim application that sets an ETag for the requested * resource route. The HTTP `If-None-Match` header is set and does not match * the ETag identifier value. * * Post-conditions: * The Slim application will return an HTTP 200 OK response. */ public function testSlimEtagDoesNotMatch() { Slim::init(); Slim::get('/', function () { Slim::etag('xyz789'); }); Slim::run(); $this->assertEquals(200, Slim::response()->status()); }
/** * Test ETag with invalid type */ public function testETagWithInvalidType() { $this->setExpectedException('InvalidArgumentException'); Slim_Environment::mock(array('SCRIPT_NAME' => '/foo', 'PATH_INFO' => '/bar', 'IF_NONE_MATCH' => '"abc1234"')); $s = new Slim(); $s->get('/bar', function () use($s) { $s->etag('123', 'foo'); }); $s->call(); }
/** * Test Slim::etag only accepts 'strong' or 'weak' types * * Pre-conditions: * Slim app instantiated; * Define route that matches current HTTP request; * Route sets ETag header with an invalid argument; * * Post-conditions: * Slim app response status is 500; */ public function testSlimETagThrowsExceptionForInvalidType() { $app = new Slim(); $app->get('/', function () use($app) { $app->etag('123', 'foo'); }); $app->run(); $this->assertEquals(500, $app->response()->status()); }
/** * Test ETag with invalid type */ public function testETagWithInvalidType() { $this->setExpectedException('InvalidArgumentException'); 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_IF_NONE_MATCH' => '"abc1234"', 'slim.url_scheme' => 'http', 'slim.input' => '', 'slim.errors' => @fopen('php://stderr', 'w'))); $s = new Slim(); $s->get('/bar', function () use($s) { $s->etag('123', 'foo'); }); $env = $s->environment(); list($status, $header, $body) = $s->call($env); }
<?php require_once 'Views/Twig/Autoloader.php'; Twig_Autoloader::register(); require 'Slim/Slim.php'; require 'Views/TwigView.php'; require 'lib/database.php'; $app = new Slim(array('view' => 'TwigView', 'http.version' => '1.0')); $app->get('/', function () use($app) { $app->redirect('wishlist'); }); $app->get('/wishlist(/:order)', function ($order = 'year') use($app) { $app->etag('wishlist'); $albums = Database::getAlbums('wishlist', $order); $data = array('albums' => $albums, 'page' => 'wishlist', 'order' => $order); $app->render('index.html', $data); }); $app->get('/coleccao(/:order)', function ($order = 'year') use($app) { $app->etag('coleccao'); $albums = Database::getAlbums('collection', $order); $data = array('albums' => $albums, 'page' => 'coleccao', 'order' => $order); $app->render('index.html', $data); }); $app->run();