Commit 59ae60d2 authored by Taylor Otwell's avatar Taylor Otwell

fixing release script.

parent 8f22071e
<?php
// --------------------------------------------------------------
// Define the directory separator for the environment.
// --------------------------------------------------------------
define('DS', DIRECTORY_SEPARATOR);
// --------------------------------------------------------------
// Set the core Laravel path constants.
// --------------------------------------------------------------
require 'paths.php';
// --------------------------------------------------------------
// Override the application paths when testing the core.
// --------------------------------------------------------------
$path = path('base').'tests'.DS;
set_path('app', $path.'application'.DS);
set_path('bundle', $path.'bundles'.DS);
set_path('storage', $path.'storage'.DS);
// --------------------------------------------------------------
// Bootstrap the Laravel core.
// --------------------------------------------------------------
require path('sys').'core.php';
// --------------------------------------------------------------
// Start the default bundle.
// --------------------------------------------------------------
Laravel\Bundle::start(DEFAULT_BUNDLE);
\ No newline at end of file
<phpunit colors="true"
bootstrap="phpunit.php"
backupGlobals="false">
<testsuites>
<testsuite name="Test Suite">
<directory suffix=".test.php">tests/cases</directory>
</testsuite>
</testsuites>
</phpunit>
\ No newline at end of file
......@@ -71,6 +71,7 @@ class DevelopHotfixer extends Command {
*/
public function execute(InputInterface $input, OutputInterface $output)
{
passthru('git checkout develop');
File::cpdir(__DIR__.'/tests', __DIR__.'/tests_bkp');
File::copy(__DIR__.'/phpunit.php', __DIR__.'/phpunit_bkp.php');
File::copy(__DIR__.'/phpunit.xml', __DIR__.'/phpunit_bkp.xml');
......
<?php
/*
|--------------------------------------------------------------------------
| Bundle Configuration
|--------------------------------------------------------------------------
|
| Bundles allow you to conveniently extend and organize your application.
| Think of bundles as self-contained applications. They can have routes,
| controllers, models, views, configuration, etc. You can even create
| your own bundles to share with the Laravel community.
|
| This is a list of the bundles installed for your application and tells
| Laravel the location of the bundle's root directory, as well as the
| root URI the bundle responds to.
|
| For example, if you have an "admin" bundle located in "bundles/admin"
| that you want to handle requests with URIs that begin with "admin",
| simply add it to the array like this:
|
| 'admin' => array(
| 'location' => 'admin',
| 'handles' => 'admin',
| ),
|
| Note that the "location" is relative to the "bundles" directory.
| Now the bundle will be recognized by Laravel and will be able
| to respond to requests beginning with "admin"!
|
| Have a bundle that lives in the root of the bundle directory
| and doesn't respond to any requests? Just add the bundle
| name to the array and we'll take care of the rest.
|
*/
return array('dashboard' => array('handles' => 'dashboard'), 'dummy');
\ No newline at end of file
<?php
return array(
/*
|--------------------------------------------------------------------------
| Application URL
|--------------------------------------------------------------------------
|
| The URL used to access your application without a trailing slash. The URL
| does nto have to be set. If it isn't we'll try our best to guess the URL
| of your application.
|
*/
'url' => '',
/*
|--------------------------------------------------------------------------
| Application Index
|--------------------------------------------------------------------------
|
| If you are including the "index.php" in your URLs, you can ignore this.
|
| However, if you are using mod_rewrite to get cleaner URLs, just set
| this option to an empty string and we'll take care of the rest.
|
*/
'index' => 'index.php',
/*
|--------------------------------------------------------------------------
| Application Key
|--------------------------------------------------------------------------
|
| This key is used by the encryption and cookie classes to generate secure
| encrypted strings and hashes. It is extremely important that this key
| remain secret and should not be shared with anyone. Make it about 32
| characters of random gibberish.
|
*/
'key' => '',
/*
|--------------------------------------------------------------------------
| Application Character Encoding
|--------------------------------------------------------------------------
|
| The default character encoding used by your application. This encoding
| will be used by the Str, Text, Form, and any other classes that need
| to know what type of encoding to use for your awesome application.
|
*/
'encoding' => 'UTF-8',
/*
|--------------------------------------------------------------------------
| Application Language
|--------------------------------------------------------------------------
|
| The default language of your application. This language will be used by
| Lang library as the default language when doing string localization.
|
*/
'language' => 'en',
/*
|--------------------------------------------------------------------------
| SSL Link Generation
|--------------------------------------------------------------------------
|
| Many sites use SSL to protect their users data. However, you may not
| always be able to use SSL on your development machine, meaning all HTTPS
| will be broken during development.
|
| For this reason, you may wish to disable the generation of HTTPS links
| throughout your application. This option does just that. All attempts to
| generate HTTPS links will generate regular HTTP links instead.
|
*/
'ssl' => true,
/*
|--------------------------------------------------------------------------
| Application Timezone
|--------------------------------------------------------------------------
|
| The default timezone of your application. This timezone will be used when
| Laravel needs a date, such as when writing to a log file or travelling
| to a distant star at warp speed.
|
*/
'timezone' => 'UTC',
/*
|--------------------------------------------------------------------------
| Class Aliases
|--------------------------------------------------------------------------
|
| Here, you can specify any class aliases that you would like registered
| when Laravel loads. Aliases are lazy-loaded, so add as many as you want.
|
| Aliases make it more convenient to use namespaced classes. Instead of
| referring to the class using its full namespace, you may simply use
| the alias defined here.
|
| We have already aliased common Laravel classes to make your life easier.
|
*/
'aliases' => array(
'Auth' => 'Laravel\\Auth',
'Asset' => 'Laravel\\Asset',
'Autoloader' => 'Laravel\\Autoloader',
'Blade' => 'Laravel\\Blade',
'Bundle' => 'Laravel\\Bundle',
'Cache' => 'Laravel\\Cache',
'Config' => 'Laravel\\Config',
'Controller' => 'Laravel\\Routing\\Controller',
'Cookie' => 'Laravel\\Cookie',
'Crypter' => 'Laravel\\Crypter',
'DB' => 'Laravel\\Database',
'Event' => 'Laravel\\Event',
'File' => 'Laravel\\File',
'Filter' => 'Laravel\\Routing\\Filter',
'Form' => 'Laravel\\Form',
'Hash' => 'Laravel\\Hash',
'HTML' => 'Laravel\\HTML',
'Input' => 'Laravel\\Input',
'IoC' => 'Laravel\\IoC',
'Lang' => 'Laravel\\Lang',
'Log' => 'Laravel\\Log',
'Memcached' => 'Laravel\\Memcached',
'Paginator' => 'Laravel\\Paginator',
'URL' => 'Laravel\\URL',
'Redirect' => 'Laravel\\Redirect',
'Redis' => 'Laravel\\Redis',
'Request' => 'Laravel\\Request',
'Response' => 'Laravel\\Response',
'Route' => 'Laravel\\Routing\\Route',
'Router' => 'Laravel\\Routing\\Router',
'Schema' => 'Laravel\\Database\\Schema',
'Section' => 'Laravel\\Section',
'Session' => 'Laravel\\Session',
'Str' => 'Laravel\\Str',
'Task' => 'Laravel\\CLI\\Tasks\\Task',
'URI' => 'Laravel\\URI',
'Validator' => 'Laravel\\Validator',
'View' => 'Laravel\\View',
),
);
<?php
return array(
/*
|--------------------------------------------------------------------------
| Retrieve The Current User
|--------------------------------------------------------------------------
|
| This closure is called by the Auth class' "user" method when trying to
| retrieve a user by the ID that is stored in their session. If you find
| the user, just return the user object, but make sure it has an "id"
| property. If you can't find the user, just return null.
|
| Of course, a simple and elegant authentication solution has already
| been provided for you using the query builder and hashing engine.
| We love making your life as easy as possible.
|
*/
'user' => function($id)
{
if (filter_var($id, FILTER_VALIDATE_INT) !== false)
{
return DB::table('users')->find($id);
}
},
/*
|--------------------------------------------------------------------------
| Authenticate User Credentials
|--------------------------------------------------------------------------
|
| This closure is called by the Auth::attempt() method when attempting to
| authenticate a user that is logging into your application. It's like a
| super buff bouncer to your application.
|
| If the provided credentials are correct, simply return an object that
| represents the user being authenticated. As long as it has a property
| for the "id", any object will work. If the credentials are not valid,
| you don't meed to return anything.
|
*/
'attempt' => function($username, $password)
{
$user = DB::table('users')->where_username($username)->first();
if ( ! is_null($user) and Hash::check($password, $user->password))
{
return $user;
}
},
/*
|--------------------------------------------------------------------------
| Logout The Current User
|--------------------------------------------------------------------------
|
| Here you may do anything that needs to be done when a user logs out of
| your application, such as call the logout method on a third-party API
| you are using for authentication or anything else you desire.
|
*/
'logout' => function($user) {},
/*
|--------------------------------------------------------------------------
| "Remember Me" Cookie Name
|--------------------------------------------------------------------------
|
| Here you may specify the cookie name that will be used for the cookie
| that serves as the "remember me" token. Of course, a sensible default
| has been set for you, so you probably don't need to change it.
|
*/
'cookie' => 'laravel_remember',
);
\ No newline at end of file
<?php
return array(
/*
|--------------------------------------------------------------------------
| Cache Driver
|--------------------------------------------------------------------------
|
| The name of the default cache driver for your application. Caching can
| be used to increase the performance of your application by storing any
| commonly accessed data in memory, a file, or some other storage.
|
| A variety of awesome drivers are available for you to use with Laravel.
| Some, like APC, are extremely fast. However, if that isn't an option
| in your environment, try file or database caching.
|
| Drivers: 'file', 'memcached', 'apc', 'redis', 'database'.
|
*/
'driver' => 'file',
/*
|--------------------------------------------------------------------------
| Cache Key
|--------------------------------------------------------------------------
|
| This key will be prepended to item keys stored using Memcached and APC
| to prevent collisions with other applications on the server. Since the
| memory based stores could be shared by other applications, we need to
| be polite and use a prefix to uniquely identifier our items.
|
*/
'key' => 'laravel',
/*
|--------------------------------------------------------------------------
| Cache Database
|--------------------------------------------------------------------------
|
| When using the database cache driver, this database table will be used
| to store the cached item. You may also add a "connection" option to
| the array to specify which database connection should be used.
|
*/
'database' => array('table' => 'laravel_cache'),
/*
|--------------------------------------------------------------------------
| Memcached Servers
|--------------------------------------------------------------------------
|
| The Memcached servers used by your application. Memcached is a free and
| open source, high-performance, distributed memory caching system. It is
| generic in nature but intended for use in speeding up web applications
| by alleviating database load.
|
| For more information, check out: http://memcached.org
|
*/
'memcached' => array(
array('host' => '127.0.0.1', 'port' => 11211, 'weight' => 100),
),
);
\ No newline at end of file
<?php
return array(
/*
|--------------------------------------------------------------------------
| Default Database Connection
|--------------------------------------------------------------------------
|
| The name of your default database connection. This connection will used
| as the default for all database operations unless a different name is
| given when performing said operation. This connection name should be
| listed in the array of connections below.
|
*/
'default' => 'sqlite',
/*
|--------------------------------------------------------------------------
| PDO Fetch Style
|--------------------------------------------------------------------------
|
| By default, database results will be returned as instances of the PHP
| stdClass object; however, you may wish to retrieve records as arrays
| instead of objects. Here you can control the PDO fetch style of the
| database queries run by your application.
|
*/
'fetch' => PDO::FETCH_CLASS,
/*
|--------------------------------------------------------------------------
| Database Connections
|--------------------------------------------------------------------------
|
| All of the database connections used by your application. Many of your
| applications will no doubt only use one connection; however, you have
| the freedom to specify as many connections as you can handle.
|
| All database work in Laravel is done through the PHP's PDO facilities,
| so make sure you have the PDO drivers for your particlar database of
| choice installed on your machine.
|
| Drivers: 'mysql', 'pgsql', 'sqlsrv', 'sqlite'.
|
*/
'connections' => array(
'sqlite' => array(
'driver' => 'sqlite',
'database' => 'application',
'prefix' => '',
),
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'database',
'username' => 'root',
'password' => 'password',
'charset' => 'utf8',
'prefix' => '',
),
'pgsql' => array(
'driver' => 'pgsql',
'host' => 'localhost',
'database' => 'database',
'username' => 'root',
'password' => 'password',
'charset' => 'utf8',
'prefix' => '',
),
'sqlsrv' => array(
'driver' => 'sqlsrv',
'host' => 'localhost',
'database' => 'database',
'username' => 'root',
'password' => 'password',
'prefix' => '',
),
),
/*
|--------------------------------------------------------------------------
| Redis Databases
|--------------------------------------------------------------------------
|
| Redis is an open source, fast, and advanced key-value store. However, it
| provides a richer set of commands than a typical key-value store such as
| APC or memcached. All the cool kids are using it.
|
| To get the scoop on Redis, check out: http://redis.io
|
*/
'redis' => array(
'default' => array('host' => '127.0.0.1', 'port' => 6379),
),
);
\ No newline at end of file
<?php
return array(
/*
|--------------------------------------------------------------------------
| Ignored Error Levels
|--------------------------------------------------------------------------
|
| Here you simply specify the error levels that should be ignored by the
| Laravel error handler. These levels will still be logged; however, no
| information about about them will be displayed.
|
*/
'ignore' => array(E_NOTICE, E_USER_NOTICE, E_DEPRECATED, E_USER_DEPRECATED),
/*
|--------------------------------------------------------------------------
| Error Detail
|--------------------------------------------------------------------------
|
| Detailed error messages contain information about the file in which an
| error occurs, as well as a PHP stack trace containing the call stack.
| You'll want them when you're trying to debug your application.
|
| If your application is in production, you'll want to turn off the error
| details for enhanced security and user experience since the exception
| stack trace could contain sensitive information.
|
*/
'detail' => true,
/*
|--------------------------------------------------------------------------
| Error Logging
|--------------------------------------------------------------------------
|
| When error logging is enabled, the "logger" Closure defined below will
| be called for every error in your application. You are free to log the
| errors however you want. Enjoy the flexibility.
|
*/
'log' => false,
/*
|--------------------------------------------------------------------------
| Error Logger
|--------------------------------------------------------------------------
|
| Because of the various ways of managing error logging, you get complete
| flexibility to manage error logging as you see fit. This function will
| be called anytime an error occurs within your application and error
| logging is enabled.
|
| You may log the error message however you like; however, a simple log
| solution has been setup for you which will log all error messages to
| text files within the application storage directory.
|
*/
'logger' => function($exception)
{
Log::exception($exception);
},
);
\ No newline at end of file
<?php
return array(
'default' => 'sqlite',
);
\ No newline at end of file
<?php
return array(
'hqx' => 'application/mac-binhex40',
'cpt' => 'application/mac-compactpro',
'csv' => array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream'),
'bin' => 'application/macbinary',
'dms' => 'application/octet-stream',
'lha' => 'application/octet-stream',
'lzh' => 'application/octet-stream',
'exe' => array('application/octet-stream', 'application/x-msdownload'),
'class' => 'application/octet-stream',
'psd' => 'application/x-photoshop',
'so' => 'application/octet-stream',
'sea' => 'application/octet-stream',
'dll' => 'application/octet-stream',
'oda' => 'application/oda',
'pdf' => array('application/pdf', 'application/x-download'),
'ai' => 'application/postscript',
'eps' => 'application/postscript',
'ps' => 'application/postscript',
'smi' => 'application/smil',
'smil' => 'application/smil',
'mif' => 'application/vnd.mif',
'xls' => array('application/excel', 'application/vnd.ms-excel', 'application/msexcel'),
'ppt' => array('application/powerpoint', 'application/vnd.ms-powerpoint'),
'wbxml' => 'application/wbxml',
'wmlc' => 'application/wmlc',
'dcr' => 'application/x-director',
'dir' => 'application/x-director',
'dxr' => 'application/x-director',
'dvi' => 'application/x-dvi',
'gtar' => 'application/x-gtar',
'gz' => 'application/x-gzip',
'php' => array('application/x-httpd-php', 'text/x-php'),
'php4' => 'application/x-httpd-php',
'php3' => 'application/x-httpd-php',
'phtml' => 'application/x-httpd-php',
'phps' => 'application/x-httpd-php-source',
'js' => 'application/x-javascript',
'swf' => 'application/x-shockwave-flash',
'sit' => 'application/x-stuffit',
'tar' => 'application/x-tar',
'tgz' => array('application/x-tar', 'application/x-gzip-compressed'),
'xhtml' => 'application/xhtml+xml',
'xht' => 'application/xhtml+xml',
'zip' => array('application/x-zip', 'application/zip', 'application/x-zip-compressed'),
'mid' => 'audio/midi',
'midi' => 'audio/midi',
'mpga' => 'audio/mpeg',
'mp2' => 'audio/mpeg',
'mp3' => array('audio/mpeg', 'audio/mpg', 'audio/mpeg3', 'audio/mp3'),
'aif' => 'audio/x-aiff',
'aiff' => 'audio/x-aiff',
'aifc' => 'audio/x-aiff',
'ram' => 'audio/x-pn-realaudio',
'rm' => 'audio/x-pn-realaudio',
'rpm' => 'audio/x-pn-realaudio-plugin',
'ra' => 'audio/x-realaudio',
'rv' => 'video/vnd.rn-realvideo',
'wav' => 'audio/x-wav',
'bmp' => 'image/bmp',
'gif' => 'image/gif',
'jpeg' => array('image/jpeg', 'image/pjpeg'),
'jpg' => array('image/jpeg', 'image/pjpeg'),
'jpe' => array('image/jpeg', 'image/pjpeg'),
'png' => 'image/png',
'tiff' => 'image/tiff',
'tif' => 'image/tiff',
'css' => 'text/css',
'html' => 'text/html',
'htm' => 'text/html',
'shtml' => 'text/html',
'txt' => 'text/plain',
'text' => 'text/plain',
'log' => array('text/plain', 'text/x-log'),
'rtx' => 'text/richtext',
'rtf' => 'text/rtf',
'xml' => 'text/xml',
'xsl' => 'text/xml',
'mpeg' => 'video/mpeg',
'mpg' => 'video/mpeg',
'mpe' => 'video/mpeg',
'qt' => 'video/quicktime',
'mov' => 'video/quicktime',
'avi' => 'video/x-msvideo',
'movie' => 'video/x-sgi-movie',
'doc' => 'application/msword',
'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
'word' => array('application/msword', 'application/octet-stream'),
'xl' => 'application/excel',
'eml' => 'message/rfc822',
'json' => array('application/json', 'text/json'),
);
\ No newline at end of file
<?php
return array(
/*
|--------------------------------------------------------------------------
| Session Driver
|--------------------------------------------------------------------------
|
| The name of the session driver used by your application. Since HTTP is
| stateless, sessions are used to simulate "state" across requests made
| by the same user of your application. In other words, it's how an
| application knows who the heck you are.
|
| Drivers: 'cookie', 'file', 'database', 'memcached', 'apc', 'redis'.
|
*/
'driver' => '',
/*
|--------------------------------------------------------------------------
| Session Database
|--------------------------------------------------------------------------
|
| The database table on which the session should be stored. It probably
| goes without saying that this option only matters if you are using
| the super slick database session driver.
|
*/
'table' => 'sessions',
/*
|--------------------------------------------------------------------------
| Session Garbage Collection Probability
|--------------------------------------------------------------------------
|
| Some session drivers require the manual clean-up of expired sessions.
| This option specifies the probability of session garbage collection
| occuring for any given request.
|
| For example, the default value states that garbage collection has a
| 2% chance of occuring for any given request to the application.
| Feel free to tune this to your application's size and speed.
|
*/
'sweepage' => array(2, 100),
/*
|--------------------------------------------------------------------------
| Session Lifetime
|--------------------------------------------------------------------------
|
| The number of minutes a session can be idle before expiring.
|
*/
'lifetime' => 60,
/*
|--------------------------------------------------------------------------
| Session Expiration On Close
|--------------------------------------------------------------------------
|
| Determines if the session should expire when the user's web browser closes.
|
*/
'expire_on_close' => false,
/*
|--------------------------------------------------------------------------
| Session Cookie Name
|--------------------------------------------------------------------------
|
| The name that should be given to the session cookie.
|
*/
'cookie' => 'laravel_session',
/*
|--------------------------------------------------------------------------
| Session Cookie Path
|--------------------------------------------------------------------------
|
| The path for which the session cookie is available.
|
*/
'path' => '/',
/*
|--------------------------------------------------------------------------
| Session Cookie Domain
|--------------------------------------------------------------------------
|
| The domain for which the session cookie is available.
|
*/
'domain' => null,
/*
|--------------------------------------------------------------------------
| HTTPS Only Session Cookie
|--------------------------------------------------------------------------
|
| Determines if the cookie should only be sent over HTTPS.
|
*/
'secure' => false,
);
\ No newline at end of file
<?php
return array(
/*
|--------------------------------------------------------------------------
| String Inflection
|--------------------------------------------------------------------------
|
| This array contains the singular and plural forms of words. It's used by
| the "singular" and "plural" methods on the Str class to convert a given
| word from singular to plural and vice versa.
|
| Note that the regular expressions are only for inflecting English words.
| To inflect a non-English string, simply add its singular and plural
| form to the array of "irregular" word forms.
|
*/
'plural' => array(
'/(quiz)$/i' => "$1zes",
'/^(ox)$/i' => "$1en",
'/([m|l])ouse$/i' => "$1ice",
'/(matr|vert|ind)ix|ex$/i' => "$1ices",
'/(x|ch|ss|sh)$/i' => "$1es",
'/([^aeiouy]|qu)y$/i' => "$1ies",
'/(hive)$/i' => "$1s",
'/(?:([^f])fe|([lr])f)$/i' => "$1$2ves",
'/(shea|lea|loa|thie)f$/i' => "$1ves",
'/sis$/i' => "ses",
'/([ti])um$/i' => "$1a",
'/(tomat|potat|ech|her|vet)o$/i' => "$1oes",
'/(bu)s$/i' => "$1ses",
'/(alias)$/i' => "$1es",
'/(octop)us$/i' => "$1i",
'/(ax|test)is$/i' => "$1es",
'/(us)$/i' => "$1es",
'/s$/i' => "s",
'/$/' => "s"
),
'singular' => array(
'/(quiz)zes$/i' => "$1",
'/(matr)ices$/i' => "$1ix",
'/(vert|ind)ices$/i' => "$1ex",
'/^(ox)en$/i' => "$1",
'/(alias)es$/i' => "$1",
'/(octop|vir)i$/i' => "$1us",
'/(cris|ax|test)es$/i' => "$1is",
'/(shoe)s$/i' => "$1",
'/(o)es$/i' => "$1",
'/(bus)es$/i' => "$1",
'/([m|l])ice$/i' => "$1ouse",
'/(x|ch|ss|sh)es$/i' => "$1",
'/(m)ovies$/i' => "$1ovie",
'/(s)eries$/i' => "$1eries",
'/([^aeiouy]|qu)ies$/i' => "$1y",
'/([lr])ves$/i' => "$1f",
'/(tive)s$/i' => "$1",
'/(hive)s$/i' => "$1",
'/(li|wi|kni)ves$/i' => "$1fe",
'/(shea|loa|lea|thie)ves$/i' => "$1f",
'/(^analy)ses$/i' => "$1sis",
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i' => "$1$2sis",
'/([ti])a$/i' => "$1um",
'/(n)ews$/i' => "$1ews",
'/(h|bl)ouses$/i' => "$1ouse",
'/(corpse)s$/i' => "$1",
'/(us)es$/i' => "$1",
'/(us|ss)$/i' => "$1",
'/s$/i' => "",
),
'irregular' => array(
'child' => 'children',
'foot' => 'feet',
'goose' => 'geese',
'man' => 'men',
'move' => 'moves',
'person' => 'people',
'sex' => 'sexes',
'tooth' => 'teeth',
),
'uncountable' => array(
'audio',
'equipment',
'deer',
'fish',
'gold',
'information',
'money',
'rice',
'police',
'series',
'sheep',
'species',
),
/*
|--------------------------------------------------------------------------
| ASCII Characters
|--------------------------------------------------------------------------
|
| This array contains foreign characters and their 7-bit ASCII equivalents.
| The array is used by the "ascii" method on the Str class to get strings
| ready for inclusion in a URL slug.
|
| Of course, the "ascii" method may also be used by you for whatever your
| application requires. Feel free to add any characters we missed, and be
| sure to let us know about them!
|
*/
'ascii' => array(
'/æ|ǽ/' => 'ae',
'/œ/' => 'oe',
'/À|Á|Â|Ã|Ä|Å|Ǻ|Ā|Ă|Ą|Ǎ|А/' => 'A',
'/à|á|â|ã|ä|å|ǻ|ā|ă|ą|ǎ|ª|а/' => 'a',
'/Б/' => 'B',
'/б/' => 'b',
'/Ç|Ć|Ĉ|Ċ|Č|Ц/' => 'C',
'/ç|ć|ĉ|ċ|č|ц/' => 'c',
'/Ð|Ď|Đ|Д/' => 'Dj',
'/ð|ď|đ|д/' => 'dj',
'/È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě|Е|Ё|Э/' => 'E',
'/è|é|ê|ë|ē|ĕ|ė|ę|ě|е|ё|э/' => 'e',
'/Ф/' => 'F',
'/ƒ|ф/' => 'f',
'/Ĝ|Ğ|Ġ|Ģ|Г/' => 'G',
'/ĝ|ğ|ġ|ģ|г/' => 'g',
'/Ĥ|Ħ|Х/' => 'H',
'/ĥ|ħ|х/' => 'h',
'/Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ|И/' => 'I',
'/ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı|и/' => 'i',
'/Ĵ|Й/' => 'J',
'/ĵ|й/' => 'j',
'/Ķ|К/' => 'K',
'/ķ|к/' => 'k',
'/Ĺ|Ļ|Ľ|Ŀ|Ł|Л/' => 'L',
'/ĺ|ļ|ľ|ŀ|ł|л/' => 'l',
'/М/' => 'M',
'/м/' => 'm',
'/Ñ|Ń|Ņ|Ň|Н/' => 'N',
'/ñ|ń|ņ|ň|ʼn|н/' => 'n',
'/Ö|Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ|О/' => 'O',
'/ö|ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º|о/' => 'o',
'/П/' => 'P',
'/п/' => 'p',
'/Ŕ|Ŗ|Ř|Р/' => 'R',
'/ŕ|ŗ|ř|р/' => 'r',
'/Ś|Ŝ|Ş|Ș|Š|С/' => 'S',
'/ś|ŝ|ş|ș|š|ſ|с/' => 's',
'/Ţ|Ț|Ť|Ŧ|Т/' => 'T',
'/ţ|ț|ť|ŧ|т/' => 't',
'/Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ü|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ|У/' => 'U',
'/ù|ú|û|ũ|ū|ŭ|ů|ü|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ|у/' => 'u',
'/В/' => 'V',
'/в/' => 'v',
'/Ý|Ÿ|Ŷ|Ы/' => 'Y',
'/ý|ÿ|ŷ|ы/' => 'y',
'/Ŵ/' => 'W',
'/ŵ/' => 'w',
'/Ź|Ż|Ž|З/' => 'Z',
'/ź|ż|ž|з/' => 'z',
'/Æ|Ǽ/' => 'AE',
'/ß/'=> 'ss',
'/IJ/' => 'IJ',
'/ij/' => 'ij',
'/Œ/' => 'OE',
'/Ч/' => 'Ch',
'/ч/' => 'ch',
'/Ю/' => 'Ju',
'/ю/' => 'ju',
'/Я/' => 'Ja',
'/я/' => 'ja',
'/Ш/' => 'Sh',
'/ш/' => 'sh',
'/Щ/' => 'Shch',
'/щ/' => 'shch',
'/Ж/' => 'Zh',
'/ж/' => 'zh',
),
);
\ No newline at end of file
<?php
class Admin_Panel_Controller extends Controller {
public function action_index()
{
return 'Admin_Panel_Index';
}
}
\ No newline at end of file
<?php
class Auth_Controller extends Controller {
public function action_index()
{
return __FUNCTION__;
}
public function action_login()
{
return __FUNCTION__;
}
public function action_profile($name)
{
return $name;
}
}
\ No newline at end of file
<?php
class Filter_Controller extends Controller {
public function __construct()
{
Filter::register('test-all-before', function() { $_SERVER['test-all-before'] = true; });
Filter::register('test-all-after', function() { $_SERVER['test-all-after'] = true; });
Filter::register('test-profile-before', function() { $_SERVER['test-profile-before'] = true; });
Filter::register('test-except', function() { $_SERVER['test-except'] = true; });
Filter::register('test-on-post', function() { $_SERVER['test-on-post'] = true; });
Filter::register('test-on-get-put', function() { $_SERVER['test-on-get-put'] = true; });
Filter::register('test-before-filter', function() { return 'Filtered!'; });
Filter::register('test-param', function($var1, $var2) { return $var1.$var2; });
Filter::register('test-multi-1', function() { $_SERVER['test-multi-1'] = true; });
Filter::register('test-multi-2', function() { $_SERVER['test-multi-2'] = true; });
$this->filter('before', 'test-all-before');
$this->filter('after', 'test-all-after');
$this->filter('before', 'test-profile-before')->only(array('profile'));
$this->filter('before', 'test-except')->except(array('index', 'profile'));
$this->filter('before', 'test-on-post')->on(array('post'));
$this->filter('before', 'test-on-get-put')->on(array('get', 'put'));
$this->filter('before', 'test-before-filter')->only('login');
$this->filter('after', 'test-before-filter')->only('logout');
$this->filter('before', 'test-param:1,2')->only('edit');
$this->filter('before', 'test-multi-1|test-multi-2')->only('save');
}
public function action_index()
{
return __FUNCTION__;
}
public function action_profile()
{
return __FUNCTION__;
}
public function action_show()
{
return __FUNCTION__;
}
public function action_edit()
{
return __FUNCTION__;
}
public function action_save()
{
return __FUNCTION__;
}
public function action_login()
{
return __FUNCTION__;
}
public function action_logout()
{
return __FUNCTION__;
}
}
\ No newline at end of file
<?php
class Home_Controller extends Controller {
/*
|--------------------------------------------------------------------------
| The Default Controller
|--------------------------------------------------------------------------
|
| Instead of using RESTful routes and anonymous functions, you might wish
| to use controllers to organize your application API. You'll love them.
|
| To start using this controller simply remove the default route from the
| application "routes.php" file. Laravel is smart enough to locate this
| controller and call the default method, which is "action_index".
|
| This controller responds to URIs beginning with "home", and it also
| serves as the default controller for the application, meaning it
| handles requests to the root of the application.
|
| You can respond to GET requests to "/home/profile" like so:
|
| public function action_profile()
| {
| return "This is your profile!";
| }
|
| Any extra segments are passed to the method as parameters:
|
| public function action_profile($id)
| {
| return "This is the profile for user {$id}.";
| }
|
*/
public function action_index()
{
return View::make('home.index');
}
}
\ No newline at end of file
<?php
class Restful_Controller extends Controller {
public $restful = true;
public function get_index()
{
return __FUNCTION__;
}
public function post_index()
{
return __FUNCTION__;
}
}
\ No newline at end of file
<?php
class Template_Basic_Controller extends Controller {
public $layout = 'home.index';
public function action_index()
{
//
}
}
\ No newline at end of file
<?php
class Template_Named_Controller extends Controller {
public $layout = 'name: home';
public function action_index()
{
//
}
}
\ No newline at end of file
<?php
class TemplateStub {
public function __toString()
{
return 'TemplateStub';
}
}
class Template_Override_Controller extends Controller {
public $layout = 'home.index';
public function action_index()
{
//
}
public function layout()
{
return 'Layout';
}
}
\ No newline at end of file
<?php namespace Dashboard;
/**
* This class is used for testing the auto-loading of classes
* that are mapped by namesapce.
*/
class Repository {}
\ No newline at end of file
<?php
return array(
/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the pagination links. You're free to change them to anything you want.
| If you come up with something more exciting, let us know.
|
*/
'previous' => '&laquo; Previous',
'next' => 'Next &raquo;',
);
\ No newline at end of file
<?php
return array(
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used
| by the validator class. Some of the rules contain multiple versions,
| such as the size (max, min, between) rules. These versions are used
| for different input types such as strings and files.
|
| These language lines may be easily changed to provide custom error
| messages in your application. Error messages for custom validation
| rules may also be added to this file.
|
*/
"accepted" => "The :attribute must be accepted.",
"active_url" => "The :attribute is not a valid URL.",
"alpha" => "The :attribute may only contain letters.",
"alpha_dash" => "The :attribute may only contain letters, numbers, and dashes.",
"alpha_num" => "The :attribute may only contain letters and numbers.",
"between" => array(
"numeric" => "The :attribute must be between :min - :max.",
"file" => "The :attribute must be between :min - :max kilobytes.",
"string" => "The :attribute must be between :min - :max characters.",
),
"confirmed" => "The :attribute confirmation does not match.",
"different" => "The :attribute and :other must be different.",
"email" => "The :attribute format is invalid.",
"exists" => "The selected :attribute is invalid.",
"image" => "The :attribute must be an image.",
"in" => "The selected :attribute is invalid.",
"integer" => "The :attribute must be an integer.",
"ip" => "The :attribute must be a valid IP address.",
"max" => array(
"numeric" => "The :attribute must be less than :max.",
"file" => "The :attribute must be less than :max kilobytes.",
"string" => "The :attribute must be less than :max characters.",
),
"mimes" => "The :attribute must be a file of type: :values.",
"min" => array(
"numeric" => "The :attribute must be at least :min.",
"file" => "The :attribute must be at least :min kilobytes.",
"string" => "The :attribute must be at least :min characters.",
),
"not_in" => "The selected :attribute is invalid.",
"numeric" => "The :attribute must be a number.",
"required" => "The :attribute field is required.",
"same" => "The :attribute and :other must match.",
"size" => array(
"numeric" => "The :attribute must be :size.",
"file" => "The :attribute must be :size kilobyte.",
"string" => "The :attribute must be :size characters.",
),
"unique" => "The :attribute has already been taken.",
"url" => "The :attribute format is invalid.",
/*
|--------------------------------------------------------------------------
| Custom Validation Language Lines
|--------------------------------------------------------------------------
|
| Here you may specify custom validation messages for attributes using the
| convention "attribute_rule" to name the lines. This helps keep your
| custom validation clean and tidy.
|
| So, say you want to use a custom validation message when validating that
| the "email" attribute is unique. Just add "email_unique" to this array
| with your custom message. The Validator will handle the rest!
|
*/
'custom' => array('custom_required' => 'This field is required!'),
/*
|--------------------------------------------------------------------------
| Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap attribute place-holders
| with something more reader friendly such as "E-Mail Address" instead
| of "email". Your users will thank you.
|
| The Validator class will automatically search this array of lines it
| is attempting to replace the :attribute place-holder in messages.
| It's pretty slick. We think you'll like it.
|
*/
'attributes' => array('test_attribute' => 'attribute'),
);
\ No newline at end of file
<?php
return array(
'required' => 'El campo de atributo es necesario.',
);
\ No newline at end of file
<?php
class Autoloader_HardCoded {}
\ No newline at end of file
<?php namespace Repositories;
class User {}
\ No newline at end of file
<?php
class User {}
\ No newline at end of file
<?php
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Simply tell Laravel the HTTP verbs and URIs it should respond to. It is a
| breeze to setup your applications using Laravel's RESTful routing, and it
| is perfectly suited for building both large applications and simple APIs.
| Enjoy the fresh air and simplicity of the framework.
|
| Let's respond to a simple GET request to http://example.com/hello:
|
| Router::register('GET /hello', function()
| {
| return 'Hello World!';
| });
|
| You can even respond to more than one URI:
|
| Router::register('GET /hello, GET /world', function()
| {
| return 'Hello World!';
| });
|
| It's easy to allow URI wildcards using (:num) or (:any):
|
| Router::register('GET /hello/(:any)', function($name)
| {
| return "Welcome, $name.";
| });
|
*/
Route::get('/, home', array('as' => 'home', function()
{
return View::make('home.index');
}));
Route::controller(array(
'auth', 'filter', 'home', 'restful',
'template.basic', 'template.name', 'template.override',
'admin.panel',
));
/*
|--------------------------------------------------------------------------
| Route Filters
|--------------------------------------------------------------------------
|
| Filters provide a convenient method for attaching functionality to your
| routes. The built-in "before" and "after" filters are called before and
| after every request to your application, and you may even create other
| filters that can be attached to individual routes.
|
| Let's walk through an example...
|
| First, define a filter:
|
| Filter::register('filter', function()
| {
| return 'Filtered!';
| });
|
| Next, attach the filter to a route:
|
| Router::register('GET /', array('before' => 'filter', function()
| {
| return 'Hello World!';
| }));
|
*/
Filter::register('before', function()
{
$_SERVER['before'] = true;
});
Filter::register('after', function()
{
$_SERVER['after'] = true;
});
Filter::register('csrf', function()
{
if (Request::forged()) return Response::error('500');
});
Filter::register('auth', function()
{
if (Auth::guest()) return Redirect::to('login');
});
\ No newline at end of file
<?php
/*
|--------------------------------------------------------------------------
| PHP Display Errors Configuration
|--------------------------------------------------------------------------
|
| Since Laravel intercepts and displays all errors with a detailed stack
| trace, we can turn off the display_errors ini directive. However, you
| may want to enable this option if you ever run into a dreaded white
| screen of death, as it can provide some clues.
|
*/
ini_set('display_errors', 'On');
/*
|--------------------------------------------------------------------------
| Laravel Configuration Loader
|--------------------------------------------------------------------------
|
| The Laravel configuration loader is responsible for returning an array
| of configuration options for a given bundle and file. By default, we
| use the files provided with Laravel; however, you are free to use
| your own storage mechanism for configuration arrays.
|
*/
Laravel\Event::listen(Laravel\Config::loader, function($bundle, $file)
{
return Laravel\Config::file($bundle, $file);
});
/*
|--------------------------------------------------------------------------
| Register Class Aliases
|--------------------------------------------------------------------------
|
| Aliases allow you to use classes without always specifying their fully
| namespaced path. This is convenient for working with any library that
| makes a heavy use of namespace for class organization. Here we will
| simply register the configured class aliases.
|
*/
$aliases = Laravel\Config::get('application.aliases');
Laravel\Autoloader::$aliases = $aliases;
/*
|--------------------------------------------------------------------------
| Auto-Loader Mappings
|--------------------------------------------------------------------------
|
| Registering a mapping couldn't be easier. Just pass an array of class
| to path maps into the "map" function of Autoloader. Then, when you
| want to use that class, just use it. It's simple!
|
*/
Autoloader::map(array(
'Base_Controller' => path('app').'controllers/base.php',
));
/*
|--------------------------------------------------------------------------
| Auto-Loader Directories
|--------------------------------------------------------------------------
|
| The Laravel auto-loader can search directories for files using the PSR-0
| naming convention. This convention basically organizes classes by using
| the class namespace to indicate the directory structure.
|
*/
Autoloader::directories(array(
path('app').'models',
path('app').'libraries',
));
/*
|--------------------------------------------------------------------------
| Laravel View Loader
|--------------------------------------------------------------------------
|
| The Laravel view loader is responsible for returning the full file path
| for the given bundle and view. Of course, a default implementation is
| provided to load views according to typical Laravel conventions but
| you may change this to customize how your views are organized.
|
*/
Event::listen(View::loader, function($bundle, $view)
{
return View::file($bundle, $view, Bundle::path($bundle).'views');
});
/*
|--------------------------------------------------------------------------
| Laravel Language Loader
|--------------------------------------------------------------------------
|
| The Laravel language loader is responsible for returning the array of
| language lines for a given bundle, language, and "file". A default
| implementation has been provided which uses the default language
| directories included with Laravel.
|
*/
Event::listen(Lang::loader, function($bundle, $language, $file)
{
return Lang::file($bundle, $language, $file);
});
/*
|--------------------------------------------------------------------------
| Enable The Blade View Engine
|--------------------------------------------------------------------------
|
| The Blade view engine provides a clean, beautiful templating language
| for your application, including syntax for echoing data and all of
| the typical PHP control structures. We'll simply enable it here.
|
*/
Blade::sharpen();
/*
|--------------------------------------------------------------------------
| Set The Default Timezone
|--------------------------------------------------------------------------
|
| We need to set the default timezone for the application. This controls
| the timezone that will be used by any of the date methods and classes
| utilized by Laravel or your application. The timezone may be set in
| your application configuration file.
|
*/
date_default_timezone_set(Config::get('application.timezone'));
/*
|--------------------------------------------------------------------------
| Start / Load The User Session
|--------------------------------------------------------------------------
|
| Sessions allow the web, which is stateless, to simulate state. In other
| words, sessions allow you to store information about the current user
| and state of your application. Here we'll just fire up the session
| if a session driver has been configured.
|
*/
if ( ! Request::cli() and Config::get('session.driver') !== '')
{
Session::load();
}
\ No newline at end of file
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Error 404 - Not Found</title>
<style>
@import url(http://fonts.googleapis.com/css?family=Ubuntu);
body {
background: #eee;
color: #6d6d6d;
font: normal normal normal 14px/1.253 Ubuntu, sans-serif;
margin: 0 0 25px 0;
min-width: 800px;
padding: 0;
}
#main {
background-clip: padding-box;
background-color: #fff;
border:1px solid #ccc;
border-radius: 5px;
box-shadow: 0 0 10px #cdcdcd;
margin: 25px auto 0;
padding: 30px;
width: 700px;
position: relative;
}
#main h1 {
font-family: 'Ubuntu';
font-size: 38px;
letter-spacing: 2px;
margin: 0 0 10px 0;
padding: 0;
}
#main h2 {
color: #999;
font-size: 18px;
letter-spacing: 3px;
margin: 0 0 25px 0;
padding: 0 0 0 0;
}
#main h3 {
color: #999;
margin-top: 24px;
padding: 0 0 0 0;
}
#main h3 {
font-size: 18px;
}
#main p {
line-height: 25px;
margin: 10px 0;
}
#main pre {
background-color: #333;
border-left: 1px solid #d8d8d8;
border-top: 1px solid #d8d8d8;
border-radius: 5px;
color: #eee;
padding: 10px;
}
#main ul {
margin: 10px 0;
padding: 0 30px;
}
#main li {
margin: 5px 0;
}
</style>
</head>
<body>
<div id="main">
<?php $messages = array('We need a map.', 'I think we\'re lost.', 'We took a wrong turn.'); ?>
<h1><?php echo $messages[mt_rand(0, 2)]; ?></h1>
<h2>Server Error: 404 (Not Found)</h2>
<h3>What does this mean?</h3>
<p>
We couldn't find the page you requested on our servers. We're really sorry
about that. It's our fault, not yours. We'll work hard to get this page
back online as soon as possible.
</p>
<p>
Perhaps you would like to go to our <?php echo HTML::link('/', 'home page'); ?>?
</p>
</div>
</body>
</html>
\ No newline at end of file
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Error 500 - Internal Server Error</title>
<style>
@import url(http://fonts.googleapis.com/css?family=Ubuntu);
body {
background: #eee;
color: #6d6d6d;
font: normal normal normal 14px/1.253 Ubuntu, sans-serif;
margin: 0 0 25px 0;
min-width: 800px;
padding: 0;
}
#main {
background-clip: padding-box;
background-color: #fff;
border:1px solid #ccc;
border-radius: 5px;
box-shadow: 0 0 10px #cdcdcd;
margin: 25px auto 0;
padding: 30px;
width: 700px;
position: relative;
}
#main h1 {
font-family: 'Ubuntu';
font-size: 38px;
letter-spacing: 2px;
margin: 0 0 10px 0;
padding: 0;
}
#main h2 {
color: #999;
font-size: 18px;
letter-spacing: 3px;
margin: 0 0 25px 0;
padding: 0 0 0 0;
}
#main h3 {
color: #999;
margin-top: 24px;
padding: 0 0 0 0;
}
#main h3 {
font-size: 18px;
}
#main p {
line-height: 25px;
margin: 10px 0;
}
#main pre {
background-color: #333;
border-left: 1px solid #d8d8d8;
border-top: 1px solid #d8d8d8;
border-radius: 5px;
color: #eee;
padding: 10px;
}
#main ul {
margin: 10px 0;
padding: 0 30px;
}
#main li {
margin: 5px 0;
}
</style>
</head>
<body>
<div id="main">
<?php $messages = array('Ouch.', 'Oh no!', 'Whoops!'); ?>
<h1><?php echo $messages[mt_rand(0, 2)]; ?></h1>
<h2>Server Error: 500 (Internal Server Error)</h2>
<h3>What does this mean?</h3>
<p>
Something went wrong on our servers while we were processing your request.
We're really sorry about this, and will work hard to get this resolved as
soon as possible.
</p>
<p>
Perhaps you would like to go to our <?php echo HTML::link('/', 'home page'); ?>?
</p>
</div>
</body>
</html>
\ No newline at end of file
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Laravel - A Framework For Web Artisans</title>
<style>
@import url(http://fonts.googleapis.com/css?family=Ubuntu);
body {
background: #eee;
color: #6d6d6d;
font: normal normal normal 14px/1.253 Ubuntu, sans-serif;
margin: 0 0 25px 0;
min-width: 800px;
padding: 0;
}
#main {
background-clip: padding-box;
background-color: #fff;
border:1px solid #ccc;
border-radius: 5px;
box-shadow: 0 0 10px #cdcdcd;
margin: 25px auto 0;
padding: 30px;
width: 700px;
position: relative;
}
#main h1 {
font-family: 'Ubuntu';
font-size: 38px;
letter-spacing: 2px;
margin: 0 0 10px 0;
padding: 0;
}
#main h2 {
color: #999;
font-size: 18px;
letter-spacing: 3px;
margin: 0 0 25px 0;
padding: 0 0 0 0;
}
#main h3 {
color: #999;
margin-top: 24px;
padding: 0 0 0 0;
}
#main h3 {
font-size: 18px;
}
#main p {
line-height: 25px;
margin: 10px 0;
}
#main pre {
background-color: #333;
border-left: 1px solid #d8d8d8;
border-top: 1px solid #d8d8d8;
border-radius: 5px;
color: #eee;
padding: 10px;
}
#main ul {
margin: 10px 0;
padding: 0 30px;
}
#main li {
margin: 5px 0;
}
</style>
</head>
<body>
<div id="main">
<h1>Welcome To Laravel</h1>
<h2>A Framework For Web Artisans</h2>
<p>
You have successfully installed the Laravel framework. Laravel is a simple framework
that helps web artisans create beautiful, creative applications using elegant, expressive
syntax. You'll love using it.
</p>
<h3>Learn the terrain.</h3>
<p>
You've landed yourself on our default home page. The route that
is generating this page lives at:
</p>
<pre><code>APP_PATH/routes.php</code></pre>
<p>And the view sitting before you can be found at:</p>
<pre><code>APP_PATH/views/home/index.php</code></pre>
<h3>Create something beautiful.</h3>
<p>
Now that you're up and running, it's time to start creating!
Here are some links to help you get started:
</p>
<ul>
<li><a href="http://laravel.com">Official Website</a></li>
<li><a href="http://forums.laravel.com">Laravel Forums</a></li>
<li><a href="http://github.com/laravel/laravel">GitHub Repository</a></li>
</ul>
</div>
</body>
</html>
\ No newline at end of file
<?php echo $name; ?> is <?php echo $age; ?>
\ No newline at end of file
Taylor
\ No newline at end of file
<?php
return array(
'bundle' => 'dashboard',
);
\ No newline at end of file
<?php
class Dashboard_Panel_Controller extends Controller {
public function action_index()
{
return 'Dashboard_Panel_Index';
}
}
\ No newline at end of file
<?php namespace Dashboard;
/**
* This class is used for testing the auto-loading of classes
* that are mapped by namesapce.
*/
class Repository {}
\ No newline at end of file
<?php
Route::get('dashboard', array('as' => 'dashboard', function()
{
//
}));
Route::controller('dashboard::panel');
\ No newline at end of file
<?php
if (isset($_SERVER['bundle.dummy.routes']))
{
$_SERVER['bundle.dummy.routes']++;
}
\ No newline at end of file
<?php
$_SERVER['bundle.dummy.start']++;
\ No newline at end of file
<?php
class AssetTest extends PHPUnit_Framework_TestCase {
/**
* Initialize the test environment.
*/
public function setUp()
{
Config::$items = array();
Config::$cache = array();
Asset::$containers = array();
}
/**
* Test the Asset::container method.
*
* @group laravel
*/
public function testContainersCanBeCreated()
{
$container = Asset::container('foo');
$this->assertTrue($container === Asset::container('foo'));
$this->assertInstanceOf('\\Laravel\\Asset_Container', $container);
}
/**
* Test the Asset::container method for default container creation.
*
* @group laravel
*/
public function testDefaultContainerCreatedByDefault()
{
$this->assertEquals('default', Asset::container()->name);
}
/**
* Test the Asset::__callStatic method.
*
* @group laravel
*/
public function testContainerMethodsCanBeDynamicallyCalled()
{
Asset::style('common', 'common.css');
$this->assertEquals('common.css', Asset::container()->assets['style']['common']['source']);
}
/**
* Test the Asset_Container constructor.
*
* @group laravel
*/
public function testNameIsSetOnAssetContainerConstruction()
{
$container = $this->getContainer();
$this->assertEquals('foo', $container->name);
}
/**
* Test the Asset_Container::add method.
*
* @group laravel
*/
public function testAddMethodProperlySniffsAssetType()
{
$container = $this->getContainer();
$container->add('jquery', 'jquery.js');
$container->add('common', 'common.css');
$this->assertEquals('jquery.js', $container->assets['script']['jquery']['source']);
$this->assertEquals('common.css', $container->assets['style']['common']['source']);
}
/**
* Test the Asset_Container::style method.
*
* @group laravel
*/
public function testStyleMethodProperlyRegistersAnAsset()
{
$container = $this->getContainer();
$container->style('common', 'common.css');
$this->assertEquals('common.css', $container->assets['style']['common']['source']);
}
/**
* Test the Asset_Container::style method sets media attribute.
*
* @group laravel
*/
public function testStyleMethodProperlySetsMediaAttributeIfNotSet()
{
$container = $this->getContainer();
$container->style('common', 'common.css');
$this->assertEquals('all', $container->assets['style']['common']['attributes']['media']);
}
/**
* Test the Asset_Container::style method sets media attribute.
*
* @group laravel
*/
public function testStyleMethodProperlyIgnoresMediaAttributeIfSet()
{
$container = $this->getContainer();
$container->style('common', 'common.css', array(), array('media' => 'print'));
$this->assertEquals('print', $container->assets['style']['common']['attributes']['media']);
}
/**
* Test the Asset_Container::script method.
*
* @group laravel
*/
public function testScriptMethodProperlyRegistersAnAsset()
{
$container = $this->getContainer();
$container->script('jquery', 'jquery.js');
$this->assertEquals('jquery.js', $container->assets['script']['jquery']['source']);
}
/**
* Test the Asset_Container::add method properly sets dependencies.
*
* @group laravel
*/
public function testAddMethodProperlySetsDependencies()
{
$container = $this->getContainer();
$container->add('common', 'common.css', 'jquery');
$container->add('jquery', 'jquery.js', array('jquery-ui'));
$this->assertEquals(array('jquery'), $container->assets['style']['common']['dependencies']);
$this->assertEquals(array('jquery-ui'), $container->assets['script']['jquery']['dependencies']);
}
/**
* Test the Asset_Container::add method properly sets attributes.
*
* @group laravel
*/
public function testAddMethodProperlySetsAttributes()
{
$container = $this->getContainer();
$container->add('common', 'common.css', array(), array('media' => 'print'));
$container->add('jquery', 'jquery.js', array(), array('defer'));
$this->assertEquals(array('media' => 'print'), $container->assets['style']['common']['attributes']);
$this->assertEquals(array('defer'), $container->assets['script']['jquery']['attributes']);
}
/**
* Test the Asset_Container::bundle method.
*
* @group laravel
*/
public function testBundleMethodCorrectlySetsTheAssetBundle()
{
$container = $this->getContainer();
$container->bundle('eloquent');
$this->assertEquals('eloquent', $container->bundle);
}
/**
* Test the Asset_Container::path method.
*
* @group laravel
*/
public function testPathMethodReturnsCorrectPathForABundleAsset()
{
Config::set('application.url', 'http://localhost');
$container = $this->getContainer();
$container->bundle('eloquent');
$this->assertEquals('http://localhost/bundles/eloquent/foo.jpg', $container->path('foo.jpg'));
}
/**
* Test the Asset_Container::path method.
*
* @group laravel
*/
public function testPathMethodReturnsCorrectPathForAnApplicationAsset()
{
Config::set('application.url', 'http://localhost');
$container = $this->getContainer();
$this->assertEquals('http://localhost/foo.jpg', $container->path('foo.jpg'));
}
/**
* Test the Asset_Container::scripts method.
*
* @group laravel
*/
public function testScriptsCanBeRetrieved()
{
$container = $this->getContainer();
$container->script('dojo', 'dojo.js', array('jquery-ui'));
$container->script('jquery', 'jquery.js', array('jquery-ui', 'dojo'));
$container->script('jquery-ui', 'jquery-ui.js');
$scripts = $container->scripts();
$this->assertTrue(strpos($scripts, 'jquery.js') > 0);
$this->assertTrue(strpos($scripts, 'jquery.js') > strpos($scripts, 'jquery-ui.js'));
$this->assertTrue(strpos($scripts, 'dojo.js') > strpos($scripts, 'jquery-ui.js'));
}
/**
* Test the Asset_Container::styles method.
*
* @group laravel
*/
public function testStylesCanBeRetrieved()
{
$container = $this->getContainer();
$container->style('dojo', 'dojo.css', array('jquery-ui'), array('media' => 'print'));
$container->style('jquery', 'jquery.css', array('jquery-ui', 'dojo'));
$container->style('jquery-ui', 'jquery-ui.css');
$styles = $container->styles();
$this->assertTrue(strpos($styles, 'jquery.css') > 0);
$this->assertTrue(strpos($styles, 'media="print"') > 0);
$this->assertTrue(strpos($styles, 'jquery.css') > strpos($styles, 'jquery-ui.css'));
$this->assertTrue(strpos($styles, 'dojo.css') > strpos($styles, 'jquery-ui.css'));
}
/**
* Get an asset container instance.
*
* @param string $name
* @return Asset_Container
*/
private function getContainer($name = 'foo')
{
return new Laravel\Asset_Container($name);
}
}
\ No newline at end of file
<?php
use Laravel\Str;
use Laravel\Auth;
use Laravel\Cookie;
use Laravel\Session;
use Laravel\Crypter;
use Laravel\Session\Payload;
class AuthTest extends PHPUnit_Framework_TestCase {
/**
* Setup teh test environment.
*/
public function setUp()
{
$_SERVER['auth.login.stub'] = null;
Cookie::$jar = array();
Config::$items = array();
Auth::$user = null;
Session::$instance = null;
Config::set('database.default', 'sqlite');
}
/**
* Tear down the test environment.
*/
public function tearDown()
{
$_SERVER['auth.login.stub'] = null;
Cookie::$jar = array();
Config::$items = array();
Auth::$user = null;
Session::$instance = null;
Config::set('database.default', 'mysql');
}
/**
* Test the Auth::user method.
*
* @group laravel
*/
public function testUserMethodReturnsCurrentUser()
{
Auth::$user = 'Taylor';
$this->assertEquals('Taylor', Auth::user());
}
/**
* Test the Auth::check method.
*
* @group laravel
*/
public function testCheckMethodReturnsTrueWhenUserIsSet()
{
$this->assertTrue(AuthUserReturnsDummy::check());
}
/**
* Test the Auth::check method.
*
* @group laravel
*/
public function testCheckMethodReturnsFalseWhenNoUserIsSet()
{
$this->assertFalse(AuthUserReturnsNull::check());
}
/**
* Test the Auth::guest method.
*
* @group laravel
*/
public function testGuestReturnsTrueWhenNoUserIsSet()
{
$this->assertTrue(AuthUserReturnsNull::guest());
}
/**
* Test the Auth::guest method.
*
* @group laravel
*/
public function testGuestReturnsFalseWhenUserIsSet()
{
$this->assertFalse(AuthUserReturnsDummy::guest());
}
/**
* Test the Auth::user method.
*
* @group laravel
*/
public function testUserMethodReturnsNullWhenNoUserExistsAndNoRecallerExists()
{
Session::$instance = new Payload($this->getMock('Laravel\\Session\\Drivers\\Driver'));
$this->assertNull(Auth::user());
}
/**
* Test the Auth::user method.
*
* @group laravel
*/
public function testUserReturnsUserByID()
{
Session::$instance = new Payload($this->getMock('Laravel\\Session\\Drivers\\Driver'));
Session::$instance->session['data'][Auth::user_key] = 1;
$this->assertEquals('Taylor Otwell', Auth::user()->name);
}
/**
* Test the Auth::user method.
*
* @group laravel
*/
public function testNullReturnedWhenUserIDNotValidInteger()
{
Session::$instance = new Payload($this->getMock('Laravel\\Session\\Drivers\\Driver'));
Session::$instance->session['data'][Auth::user_key] = 'asdlkasd';
$this->assertNull(Auth::user());
}
/**
* Test the Auth::recall method.
*
* @group laravel
*/
public function testUserCanBeRecalledViaCookie()
{
Session::$instance = new Payload($this->getMock('Laravel\\Session\\Drivers\\Driver'));
$cookie = Crypter::encrypt('1|'.Str::random(40));
Cookie::forever(Config::get('auth.cookie'), $cookie);
$this->assertEquals('Taylor Otwell', AuthLoginStub::user()->name);
$this->assertTrue(AuthLoginStub::user() === $_SERVER['auth.login.stub']['user']);
}
/**
* Test the Auth::attempt method.
*
* @group laravel
*/
public function testAttemptMethodReturnsFalseWhenCredentialsAreInvalid()
{
$this->assertFalse(Auth::attempt('foo', 'foo'));
$this->assertFalse(Auth::attempt('foo', null));
$this->assertFalse(Auth::attempt(null, null));
$this->assertFalse(Auth::attempt('taylor', 'password'));
$this->assertFalse(Auth::attempt('taylor', 232));
}
/**
* Test the Auth::attempt method.
*
* @group laravel
*/
public function testAttemptReturnsTrueWhenCredentialsAreCorrect()
{
$this->assertTrue(AuthLoginStub::attempt('taylor', 'password1'));
$this->assertEquals('Taylor Otwell', $_SERVER['auth.login.stub']['user']->name);
$this->assertFalse($_SERVER['auth.login.stub']['remember']);
$this->assertTrue(AuthLoginStub::attempt('taylor', 'password1', true));
$this->assertEquals('Taylor Otwell', $_SERVER['auth.login.stub']['user']->name);
$this->assertTrue($_SERVER['auth.login.stub']['remember']);
}
/**
* Test Auth::login method.
*
* @group laravel
*/
public function testLoginMethodStoresUserKeyInSession()
{
Session::$instance = new Payload($this->getMock('Laravel\\Session\\Drivers\\Driver'));
$user = new StdClass;
$user->id = 10;
Auth::login($user);
$this->assertEquals(10, Session::$instance->session['data'][Auth::user_key]);
Auth::login(5);
$this->assertEquals(5, Session::$instance->session['data'][Auth::user_key]);
}
/**
* Test the Auth::login method.
*
* @group laravel
*/
public function testLoginStoresRememberCookieWhenNeeded()
{
Session::$instance = new Payload($this->getMock('Laravel\\Session\\Drivers\\Driver'));
// Set the session vars to make sure remember cookie uses them
Config::set('session.path', 'foo');
Config::set('session.domain', 'bar');
Config::set('session.secure', true);
Auth::login(10, true);
$this->assertTrue(isset(Cookie::$jar[Config::get('auth.cookie')]));
$cookie = Cookie::$jar[Config::get('auth.cookie')]['value'];
$cookie = explode('|', Crypter::decrypt($cookie));
$this->assertEquals(10, $cookie[0]);
$this->assertEquals('foo', Cookie::$jar[Config::get('auth.cookie')]['path']);
$this->assertEquals('bar', Cookie::$jar[Config::get('auth.cookie')]['domain']);
$this->assertTrue(Cookie::$jar[Config::get('auth.cookie')]['secure']);
}
/**
* Test the Auth::logout method.
*
* @group laravel
*/
public function testLogoutMethodLogsOutUser()
{
Session::$instance = new Payload($this->getMock('Laravel\\Session\\Drivers\\Driver'));
Session::$instance->session['data'][Auth::user_key] = 10;
Config::set('auth.logout', function($user) { $_SERVER['auth.logout.stub'] = $user; });
Auth::$user = 'Taylor';
Auth::logout();
$this->assertEquals('Taylor', $_SERVER['auth.logout.stub']);
$this->assertNull(Auth::$user);
$this->assertFalse(isset(Session::$instance->session['data'][Auth::user_key]));
$this->assertTrue(Cookie::$jar[Config::get('auth.cookie')]['minutes'] < 0);
}
}
class AuthUserReturnsNull extends Laravel\Auth {
public static function user() {}
}
class AuthUserReturnsDummy extends Laravel\Auth {
public static function user() { return 'Taylor'; }
}
class AuthLoginStub extends Laravel\Auth {
public static function login($user, $remember = false)
{
$_SERVER['auth.login.stub'] = compact('user', 'remember');
}
}
\ No newline at end of file
<?php
class AutoloaderTest extends PHPUnit_Framework_TestCase {
/**
* Test the Autoloader::map method.
*
* @group laravel
*/
public function testMapsCanBeRegistered()
{
Autoloader::map(array(
'Foo' => path('app').'models/foo.php',
));
$this->assertEquals(path('app').'models/foo.php', Autoloader::$mappings['Foo']);
}
/**
* Test the Autoloader::alias method.
*
* @group laravel
*/
public function testAliasesCanBeRegistered()
{
Autoloader::alias('Foo\\Bar', 'Foo');
$this->assertEquals('Foo\\Bar', Autoloader::$aliases['Foo']);
}
/**
* Test the Autoloader::directories method.
*
* @group laravel
*/
public function testPsrDirectoriesCanBeRegistered()
{
Autoloader::directories(array(
path('app').'foo'.DS.'bar',
path('app').'foo'.DS.'baz'.DS.DS,
));
$this->assertTrue(in_array(path('app').'foo'.DS.'bar'.DS, Autoloader::$directories));
$this->assertTrue(in_array(path('app').'foo'.DS.'baz'.DS, Autoloader::$directories));
}
/**
* Test the Autoloader::namespaces method.
*
* @group laravel
*/
public function testNamespacesCanBeRegistered()
{
Autoloader::namespaces(array(
'Autoloader_1' => path('bundle').'autoload'.DS.'models',
'Autoloader_2' => path('bundle').'autoload'.DS.'libraries'.DS.DS,
));
$this->assertEquals(path('bundle').'autoload'.DS.'models'.DS, Autoloader::$namespaces['Autoloader_1\\']);
$this->assertEquals(path('bundle').'autoload'.DS.'libraries'.DS, Autoloader::$namespaces['Autoloader_2\\']);
}
/**
* Test the loading of PSR-0 models and libraries.
*
* @group laravel
*/
public function testPsrLibrariesAndModelsCanBeLoaded()
{
$this->assertInstanceOf('User', new User);
$this->assertInstanceOf('Repositories\\User', new Repositories\User);
}
/**
* Test the loading of hard-coded classes.
*
* @group laravel
*/
public function testHardcodedClassesCanBeLoaded()
{
Autoloader::map(array(
'Autoloader_HardCoded' => path('app').'models'.DS.'autoloader.php',
));
$this->assertInstanceOf('Autoloader_HardCoded', new Autoloader_HardCoded);
}
/**
* Test the loading of classes mapped by namespaces.
*
* @group laravel
*/
public function testClassesMappedByNamespaceCanBeLoaded()
{
Autoloader::namespaces(array(
'Dashboard' => path('bundle').'dashboard'.DS.'models',
));
$this->assertInstanceOf('Dashboard\\Repository', new Dashboard\Repository);
}
}
\ No newline at end of file
<?php
use Laravel\Blade;
class BladeTest extends PHPUnit_Framework_TestCase {
/**
* Test the compilation of echo statements.
*
* @group laravel
*/
public function testEchosAreConvertedProperly()
{
$blade1 = '{{$a}}';
$blade2 = '{{e($a)}}';
$this->assertEquals('<?php echo $a; ?>', Blade::compile_string($blade1));
$this->assertEquals('<?php echo e($a); ?>', Blade::compile_string($blade2));
}
/**
* Test the compilation of control structures.
*
* @group laravel
*/
public function testControlStructuresAreCreatedCorrectly()
{
$blade1 = "@if (true)\nfoo\n@endif";
$blade2 = "@if (count(".'$something'.") > 0)\nfoo\n@endif";
$blade3 = "@if (true)\nfoo\n@elseif (false)\nbar\n@endif";
$blade4 = "@if (true)\nfoo\n@else\nbar\n@endif";
$this->assertEquals("<?php if (true): ?>\nfoo\n<?php endif; ?>", Blade::compile_string($blade1));
$this->assertEquals("<?php if (count(".'$something'.") > 0): ?>\nfoo\n<?php endif; ?>", Blade::compile_string($blade2));
$this->assertEquals("<?php if (true): ?>\nfoo\n<?php elseif (false): ?>\nbar\n<?php endif; ?>", Blade::compile_string($blade3));
$this->assertEquals("<?php if (true): ?>\nfoo\n<?php else: ?>\nbar\n<?php endif; ?>", Blade::compile_string($blade4));
}
/**
* Test the compilation of yield statements.
*
* @group laravel
*/
public function testYieldsAreCompiledCorrectly()
{
$blade = "@yield('something')";
$this->assertEquals("<?php echo \\Laravel\\Section::yield('something'); ?>", Blade::compile_string($blade));
}
/**
* Test the compilation of section statements.
*
* @group laravel
*/
public function testSectionsAreCompiledCorrectly()
{
$blade = "@section('something')\nfoo\n@endsection";
$this->assertEquals("<?php \\Laravel\\Section::start('something'); ?>\nfoo\n<?php \\Laravel\\Section::stop(); ?>", Blade::compile_string($blade));
}
}
\ No newline at end of file
<?php
class BundleTest extends PHPUnit_Framework_TestCase {
/**
* Setup the test environment.
*/
public function setUp()
{
Bundle::$started = array();
Bundle::$elements = array();
unset(Bundle::$bundles['foo']);
}
/**
* Tear down the test environment.
*/
public function tearDown()
{
Bundle::$started = array();
Bundle::$elements = array();
unset(Bundle::$bundles['foo']);
}
/**
* Test Bundle::register method.
*
* @group laravel
*/
public function testRegisterMethodCorrectlyRegistersBundle()
{
Bundle::register('foo-baz', array('handles' => 'foo-baz'));
$this->assertEquals('foo-baz', Bundle::$bundles['foo-baz']['handles']);
$this->assertFalse(Bundle::$bundles['foo-baz']['auto']);
Bundle::register('foo-bar', array());
$this->assertFalse(Bundle::$bundles['foo-baz']['auto']);
$this->assertNull(Bundle::$bundles['foo-bar']['handles']);
unset(Bundle::$bundles['foo-baz']);
unset(Bundle::$bundles['foo-bar']);
}
/**
* Test the Bundle::start method.
*
* @group laravel
*/
public function testStartMethodStartsBundle()
{
$_SERVER['bundle.dummy.start'] = 0;
$_SERVER['bundle.dummy.routes'] = 0;
$_SERVER['started.dummy'] = false;
Event::listen('laravel.started: dummy', function()
{
$_SERVER['started.dummy'] = true;
});
Bundle::register('dummy');
Bundle::start('dummy');
$this->assertTrue($_SERVER['started.dummy']);
$this->assertEquals(1, $_SERVER['bundle.dummy.start']);
$this->assertEquals(1, $_SERVER['bundle.dummy.routes']);
Bundle::start('dummy');
$this->assertEquals(1, $_SERVER['bundle.dummy.start']);
$this->assertEquals(1, $_SERVER['bundle.dummy.routes']);
}
/**
* Test Bundle::handles method.
*
* @group laravel
*/
public function testHandlesMethodReturnsBundleThatHandlesURI()
{
Bundle::register('foo', array('handles' => 'foo-bar'));
$this->assertEquals('foo', Bundle::handles('foo-bar/admin'));
unset(Bundle::$bundles['foo']);
}
/**
* Test the Bundle::exist method.
*
* @group laravel
*/
public function testExistMethodIndicatesIfBundleExist()
{
$this->assertTrue(Bundle::exists('dashboard'));
$this->assertFalse(Bundle::exists('foo'));
}
/**
* Test the Bundle::started method.
*
* @group laravel
*/
public function testStartedMethodIndicatesIfBundleIsStarted()
{
Bundle::register('dummy');
Bundle::start('dummy');
$this->assertTrue(Bundle::started('dummy'));
}
/**
* Test the Bundle::prefix method.
*
* @group laravel
*/
public function testPrefixMethodReturnsCorrectPrefix()
{
$this->assertEquals('dummy::', Bundle::prefix('dummy'));
$this->assertEquals('', Bundle::prefix(DEFAULT_BUNDLE));
}
/**
* Test the Bundle::class_prefix method.
*
* @group laravel
*/
public function testClassPrefixMethodReturnsProperClassPrefixForBundle()
{
$this->assertEquals('Dummy_', Bundle::class_prefix('dummy'));
$this->assertEquals('', Bundle::class_prefix(DEFAULT_BUNDLE));
}
/**
* Test the Bundle::path method.
*
* @group laravel
*/
public function testPathMethodReturnsCorrectPath()
{
$this->assertEquals(path('app'), Bundle::path(null));
$this->assertEquals(path('app'), Bundle::path(DEFAULT_BUNDLE));
$this->assertEquals(path('bundle').'dashboard'.DS, Bundle::path('dashboard'));
}
/**
* Test the Bundle::asset method.
*
* @group laravel
*/
public function testAssetPathReturnsPathToBundlesAssets()
{
Config::set('application.url', 'http://localhost');
$this->assertEquals('http://localhost/bundles/dashboard/', Bundle::assets('dashboard'));
$this->assertEquals('http://localhost/', Bundle::assets(DEFAULT_BUNDLE));
Config::set('application.url', '');
}
/**
* Test the Bundle::name method.
*
* @group laravel
*/
public function testBundleNameCanBeRetrievedFromIdentifier()
{
$this->assertEquals(DEFAULT_BUNDLE, Bundle::name('something'));
$this->assertEquals(DEFAULT_BUNDLE, Bundle::name('something.else'));
$this->assertEquals('bundle', Bundle::name('bundle::something.else'));
}
/**
* Test the Bundle::element method.
*
* @group laravel
*/
public function testElementCanBeRetrievedFromIdentifier()
{
$this->assertEquals('something', Bundle::element('something'));
$this->assertEquals('something.else', Bundle::element('something.else'));
$this->assertEquals('something.else', Bundle::element('bundle::something.else'));
}
/**
* Test the Bundle::identifier method.
*
* @group laravel
*/
public function testIdentifierCanBeConstructed()
{
$this->assertEquals('something.else', Bundle::identifier(DEFAULT_BUNDLE, 'something.else'));
$this->assertEquals('dashboard::something', Bundle::identifier('dashboard', 'something'));
$this->assertEquals('dashboard::something.else', Bundle::identifier('dashboard', 'something.else'));
}
/**
* Test the Bundle::resolve method.
*
* @group laravel
*/
public function testBundleNamesCanBeResolved()
{
$this->assertEquals(DEFAULT_BUNDLE, Bundle::resolve('foo'));
$this->assertEquals('dashboard', Bundle::resolve('dashboard'));
}
/**
* Test the Bundle::parse method.
*
* @group laravel
*/
public function testParseMethodReturnsElementAndIdentifier()
{
$this->assertEquals(array('application', 'something'), Bundle::parse('something'));
$this->assertEquals(array('application', 'something.else'), Bundle::parse('something.else'));
$this->assertEquals(array('dashboard', 'something'), Bundle::parse('dashboard::something'));
$this->assertEquals(array('dashboard', 'something.else'), Bundle::parse('dashboard::something.else'));
}
/**
* Test the Bundle::get method.
*
* @group laravel
*/
public function testOptionMethodReturnsBundleOption()
{
$this->assertFalse(Bundle::option('dashboard', 'auto'));
$this->assertEquals('dashboard', Bundle::option('dashboard', 'location'));
}
/**
* Test the Bundle::all method.
*
* @group laravel
*/
public function testAllMethodReturnsBundleArray()
{
Bundle::register('foo');
$this->assertEquals(Bundle::$bundles, Bundle::all());
unset(Bundle::$bundles['foo']);
}
/**
* Test the Bundle::names method.
*
* @group laravel
*/
public function testNamesMethodReturnsBundleNames()
{
Bundle::register('foo');
$this->assertEquals(array('dashboard', 'dummy', 'foo'), Bundle::names());
unset(Bundle::$bundles['foo']);
}
}
\ No newline at end of file
<?php
class ConfigTest extends PHPUnit_Framework_TestCase {
/**
* Tear down the testing environment.
*/
public function tearDown()
{
Config::$items = array();
Config::$cache = array();
}
/**
* Test the Config::get method.
*
* @group laravel
*/
public function testItemsCanBeRetrievedFromConfigFiles()
{
$this->assertEquals('UTF-8', Config::get('application.encoding'));
$this->assertEquals('mysql', Config::get('database.connections.mysql.driver'));
$this->assertEquals('dashboard', Config::get('dashboard::meta.bundle'));
}
/**
* Test the Config::has method.
*
* @group laravel
*/
public function testHasMethodIndicatesIfConfigItemExists()
{
$this->assertFalse(Config::has('application.foo'));
$this->assertTrue(Config::has('application.encoding'));
}
/**
* Test the Config::set method.
*
* @group laravel
*/
public function testConfigItemsCanBeSet()
{
Config::set('application.encoding', 'foo');
Config::set('dashboard::meta.bundle', 'bar');
$this->assertEquals('foo', Config::get('application.encoding'));
$this->assertEquals('bar', Config::get('dashboard::meta.bundle'));
}
/**
* Test that environment configurations are loaded correctly.
*
* @group laravel
*/
public function testEnvironmentConfigsOverrideNormalConfigurations()
{
$_SERVER['LARAVEL_ENV'] = 'local';
$this->assertEquals('sqlite', Config::get('database.default'));
unset($_SERVER['LARAVEL_ENV']);
}
/**
* Test that items can be set after the entire file has already been loaded.
*
* @group laravel
*/
public function testItemsCanBeSetAfterEntireFileIsLoaded()
{
Config::get('application');
Config::set('application.key', 'taylor');
$application = Config::get('application');
$this->assertEquals('taylor', $application['key']);
}
}
\ No newline at end of file
<?php
class ControllerTest extends PHPUnit_Framework_TestCase {
/**
* Setup the testing environment.
*/
public function setUp()
{
$_SERVER['REQUEST_METHOD'] = 'GET';
}
/**
* Tear down the testing environment.
*/
public function tearDown()
{
unset(Filter::$filters['test-all-before']);
unset(Filter::$filters['test-all-after']);
unset(Filter::$filters['test-profile-before']);
unset($_SERVER['REQUEST_METHOD']);
}
/**
* Test the Controller::call method.
*
* @group laravel
*/
public function testBasicControllerActionCanBeCalled()
{
$this->assertEquals('action_index', Controller::call('auth@index')->content);
$this->assertEquals('Admin_Panel_Index', Controller::call('admin.panel@index')->content);
$this->assertEquals('Taylor', Controller::call('auth@profile', array('Taylor'))->content);
$this->assertEquals('Dashboard_Panel_Index', Controller::call('dashboard::panel@index')->content);
}
/**
* Test basic controller filters are called.
*
* @group laravel
*/
public function testAssignedBeforeFiltersAreRun()
{
$_SERVER['test-all-after'] = false;
$_SERVER['test-all-before'] = false;
Controller::call('filter@index');
$this->assertTrue($_SERVER['test-all-after']);
$this->assertTrue($_SERVER['test-all-before']);
}
/**
* Test that "only" filters only apply to their assigned methods.
*
* @group laravel
*/
public function testOnlyFiltersOnlyApplyToTheirAssignedMethods()
{
$_SERVER['test-profile-before'] = false;
Controller::call('filter@index');
$this->assertFalse($_SERVER['test-profile-before']);
Controller::call('filter@profile');
$this->assertTrue($_SERVER['test-profile-before']);
}
/**
* Test that "except" filters only apply to the excluded methods.
*
* @group laravel
*/
public function testExceptFiltersOnlyApplyToTheExlucdedMethods()
{
$_SERVER['test-except'] = false;
Controller::call('filter@index');
Controller::call('filter@profile');
$this->assertFalse($_SERVER['test-except']);
Controller::call('filter@show');
$this->assertTrue($_SERVER['test-except']);
}
/**
* Test that filters can be constrained by the request method.
*
* @group laravel
*/
public function testFiltersCanBeConstrainedByRequestMethod()
{
$_SERVER['test-on-post'] = false;
$_SERVER['REQUEST_METHOD'] = 'GET';
Controller::call('filter@index');
$this->assertFalse($_SERVER['test-on-post']);
$_SERVER['REQUEST_METHOD'] = 'POST';
Controller::call('filter@index');
$this->assertTrue($_SERVER['test-on-post']);
$_SERVER['test-on-get-put'] = false;
$_SERVER['REQUEST_METHOD'] = 'POST';
Controller::call('filter@index');
$this->assertFalse($_SERVER['test-on-get-put']);
$_SERVER['REQUEST_METHOD'] = 'PUT';
Controller::call('filter@index');
$this->assertTrue($_SERVER['test-on-get-put']);
}
public function testGlobalBeforeFilterIsNotCalledByController()
{
$_SERVER['before'] = false;
$_SERVER['after'] = false;
Controller::call('auth@index');
$this->assertFalse($_SERVER['before']);
$this->assertFalse($_SERVER['after']);
}
/**
* Test that before filters can override the controller response.
*
* @group laravel
*/
public function testBeforeFiltersCanOverrideResponses()
{
$this->assertEquals('Filtered!', Controller::call('filter@login')->content);
}
/**
* Test that after filters do not affect the response.
*
* @group laravel
*/
public function testAfterFiltersDoNotAffectControllerResponse()
{
$this->assertEquals('action_logout', Controller::call('filter@logout')->content);
}
/**
* Test that filter parameters are passed to the filter.
*
* @group laravel
*/
public function testFilterParametersArePassedToTheFilter()
{
$this->assertEquals('12', Controller::call('filter@edit')->content);
}
/**
* Test that multiple filters can be assigned to a single method.
*
* @group laravel
*/
public function testMultipleFiltersCanBeAssignedToAnAction()
{
$_SERVER['test-multi-1'] = false;
$_SERVER['test-multi-2'] = false;
Controller::call('filter@save');
$this->assertTrue($_SERVER['test-multi-1']);
$this->assertTrue($_SERVER['test-multi-2']);
}
/**
* Test Restful controllers respond by request method.
*
* @group laravel
*/
public function testRestfulControllersRespondWithRestfulMethods()
{
$_SERVER['REQUEST_METHOD'] = 'GET';
$this->assertEquals('get_index', Controller::call('restful@index')->content);
$_SERVER['REQUEST_METHOD'] = 'PUT';
$this->assertEquals(404, Controller::call('restful@index')->status);
$_SERVER['REQUEST_METHOD'] = 'POST';
$this->assertEquals('post_index', Controller::call('restful@index')->content);
}
/**
* Test that the template is returned by template controllers.
*
* @group laravel
*/
public function testTemplateControllersReturnTheTemplate()
{
$response = Controller::call('template.basic@index');
$home = file_get_contents(path('app').'views/home/index.php');
$this->assertEquals($home, $response->content);
}
/**
* Test that controller templates can be named views.
*
* @group laravel
*/
public function testControllerTemplatesCanBeNamedViews()
{
View::name('home.index', 'home');
$response = Controller::call('template.named@index');
$home = file_get_contents(path('app').'views/home/index.php');
$this->assertEquals($home, $response->content);
View::$names = array();
}
/**
* Test that the "layout" method is called on the controller.
*
* @group laravel
*/
public function testTheTemplateCanBeOverriden()
{
$this->assertEquals('Layout', Controller::call('template.override@index')->content);
}
/**
* Test the Controller::resolve method.
*
* @group laravel
*/
public function testResolveMethodChecksTheIoCContainer()
{
IoC::controller('home', function()
{
require_once path('app').'controllers/home.php';
$controller = new Home_Controller;
$controller->foo = 'bar';
return $controller;
});
$controller = Controller::resolve(DEFAULT_BUNDLE, 'home');
$this->assertEquals('bar', $controller->foo);
}
}
\ No newline at end of file
<?php namespace Laravel;
/**
* Stub the global setcookie method into the Laravel namespace.
*/
function setcookie($name, $value, $time, $path, $domain, $secure)
{
$_SERVER['cookie.stub'][$name] = compact('name', 'value', 'time', 'path', 'domain', 'secure');
}
function headers_sent()
{
return $_SERVER['function.headers_sent'];
}
class CookieTest extends \PHPUnit_Framework_TestCase {
/**
* Setup the test environment.
*/
public function setUp()
{
Cookie::$jar = array();
}
/**
* Tear down the test environment.
*/
public function tearDown()
{
Cookie::$jar = array();
}
/**
* Test Cookie::has method.
*
* @group laravel
*/
public function testHasMethodIndicatesIfCookieInSet()
{
Cookie::$jar['foo'] = array('value' => 'bar');
$this->assertTrue(Cookie::has('foo'));
$this->assertFalse(Cookie::has('bar'));
Cookie::put('baz', 'foo');
$this->assertTrue(Cookie::has('baz'));
}
/**
* Test the Cookie::get method.
*
* @group laravel
*/
public function testGetMethodCanReturnValueOfCookies()
{
Cookie::$jar['foo'] = array('value' => 'bar');
$this->assertEquals('bar', Cookie::get('foo'));
Cookie::put('bar', 'baz');
$this->assertEquals('baz', Cookie::get('bar'));
}
/**
* Test the Cookie::get method respects signatures.
*
* @group laravel
*/
public function testTamperedCookiesAreReturnedAsNull()
{
$_COOKIE['foo'] = Cookie::sign('foo', 'bar');
$this->assertEquals('bar', Cookie::get('foo'));
$_COOKIE['foo'] .= '-baz';
$this->assertNull(Cookie::get('foo'));
$_COOKIE['foo'] = Cookie::sign('foo', 'bar');
$_COOKIE['foo'] = 'aslk'.$_COOKIE['foo'];
$this->assertNull(Cookie::get('foo'));
}
/**
* Test Cookie::forever method.
*
* @group laravel
*/
public function testForeverShouldUseATonOfMinutes()
{
Cookie::forever('foo', 'bar');
$this->assertEquals('bar', Cookie::$jar['foo']['value']);
$this->assertEquals(525600, Cookie::$jar['foo']['minutes']);
Cookie::forever('bar', 'baz', 'path', 'domain', true);
$this->assertEquals('path', Cookie::$jar['bar']['path']);
$this->assertEquals('domain', Cookie::$jar['bar']['domain']);
$this->assertTrue(Cookie::$jar['bar']['secure']);
}
/**
* Test the Cookie::forget method.
*
* @group laravel
*/
public function testForgetSetsCookieWithExpiration()
{
Cookie::forget('bar', 'path', 'domain', true);
$this->assertEquals(-2000, Cookie::$jar['bar']['minutes']);
$this->assertEquals('path', Cookie::$jar['bar']['path']);
$this->assertEquals('domain', Cookie::$jar['bar']['domain']);
$this->assertTrue(Cookie::$jar['bar']['secure']);
}
/**
* Test the Cookie::send method.
*
* @group laravel
*/
public function testSendMethodSetsProperValuesOnCookie()
{
$_SERVER['cookie.stub'] = array();
$_SERVER['function.headers_sent'] = false;
Cookie::send();
$this->assertTrue(count($_SERVER['cookie.stub']) == 0);
Cookie::put('foo', 'bar', 20, 'path', 'domain', true);
Cookie::send();
$this->assertTrue(count($_SERVER['cookie.stub']) == 1);
$this->assertEquals('foo', $_SERVER['cookie.stub']['foo']['name']);
$this->assertEquals(Cookie::sign('foo', 'bar'), $_SERVER['cookie.stub']['foo']['value']);
$this->assertEquals('path', $_SERVER['cookie.stub']['foo']['path']);
$this->assertEquals('domain', $_SERVER['cookie.stub']['foo']['domain']);
$this->assertEquals((time() + (20 * 60)), $_SERVER['cookie.stub']['foo']['time']);
$this->assertTrue($_SERVER['cookie.stub']['foo']['secure']);
Cookie::put('bar', 'baz', 0);
Cookie::send();
$this->assertEquals(0, $_SERVER['cookie.stub']['bar']['time']);
}
}
\ No newline at end of file
<?php
class DatabaseTest extends PHPUnit_Framework_TestCase {
/**
* Set up the test environment.
*/
public function setUp()
{
DB::$connections = array();
}
/**
* Tear down the test environment.
*/
public function tearDown()
{
DB::$connections = array();
}
/**
* Test the DB::connection method.
*
* @group laravel
*/
public function testConnectionMethodReturnsConnection()
{
$connection = DatabaseConnectStub::connection();
$this->assertTrue(isset(DB::$connections[Config::get('database.default')]));
$connection = DatabaseConnectStub::connection('mysql');
$this->assertTrue(isset(DB::$connections['mysql']));
$this->assertEquals(DB::$connections['mysql']->pdo->laravel_config, Config::get('database.connections.mysql'));
}
/**
* Test the DB::profile method.
*
* @group laravel
*/
public function testProfileMethodReturnsQueries()
{
Laravel\Database\Connection::$queries = array('Taylor');
$this->assertEquals(array('Taylor'), DB::profile());
Laravel\Database\Connection::$queries = array();
}
/**
* Test the __callStatic method.
*
* @group laravel
*/
public function testConnectionMethodsCanBeCalledStaticly()
{
$this->assertEquals('sqlite', DB::driver());
}
}
class DatabaseConnectStub extends Laravel\Database {
protected static function connect($config) { return new PDOStub($config); }
}
class PDOStub extends PDO {
public $laravel_config;
public function __construct($config) { $this->laravel_config = $config; }
public function foo() { return 'foo'; }
}
\ No newline at end of file
<?php
class EventTest extends PHPUnit_Framework_TestCase {
/**
* Tear down the testing environment.
*/
public function tearDown()
{
unset(Event::$events['test.event']);
}
/**
* Test basic event firing.
*
* @group laravel
*/
public function testListenersAreFiredForEvents()
{
Event::listen('test.event', function() { return 1; });
Event::listen('test.event', function() { return 2; });
$responses = Event::fire('test.event');
$this->assertEquals(1, $responses[0]);
$this->assertEquals(2, $responses[1]);
}
/**
* Test parameters can be passed to event listeners.
*
* @group laravel
*/
public function testParametersCanBePassedToEvents()
{
Event::listen('test.event', function($var) { return $var; });
$responses = Event::fire('test.event', array('Taylor'));
$this->assertEquals('Taylor', $responses[0]);
}
}
\ No newline at end of file
<?php
use Laravel\Fluent;
class FluentTest extends PHPUnit_Framework_TestCase {
/**
* Test the Fluent constructor.
*
* @group laravel
*/
public function testAttributesAreSetByConstructor()
{
$array = array('name' => 'Taylor', 'age' => 25);
$fluent = new FLuent($array);
$this->assertEquals($array, $fluent->attributes);
}
/**
* Test the Fluent::get method.
*
* @group laravel
*/
public function testGetMethodReturnsAttribute()
{
$fluent = new Fluent(array('name' => 'Taylor'));
$this->assertEquals('Taylor', $fluent->get('name'));
$this->assertEquals('Default', $fluent->get('foo', 'Default'));
$this->assertEquals('Taylor', $fluent->name);
$this->assertNull($fluent->foo);
}
public function testMagicMethodsCanBeUsedToSetAttributes()
{
$fluent = new FLuent;
$fluent->name = 'Taylor';
$fluent->developer();
$fluent->age(25);
$this->assertEquals('Taylor', $fluent->name);
$this->assertTrue($fluent->developer);
$this->assertEquals(25, $fluent->age);
$this->assertInstanceOf('Laravel\\Fluent', $fluent->programmer());
}
}
\ No newline at end of file
<?php
class HashTest extends PHPUnit_Framework_TestCase {
/**
* Test the Hash::make method.
*
* @group laravel
*/
public function testHashProducesValidBcryptHash()
{
$this->assertTrue(strlen(Hash::make('taylor')) == 60);
}
/**
* Test the Hash::check method.
*
* @group laravel
*/
public function testHashCheckFailsWhenNotMatching()
{
$hash = Hash::make('taylor');
$this->assertFalse(Hash::check('foo', $hash));
}
/**
* Test the Hash::check method.
*
* @group laravel
*/
public function testHashCheckPassesWhenMatches()
{
$this->assertTrue(Hash::check('taylor', Hash::make('taylor')));
}
}
\ No newline at end of file
<?php
class InputTest extends PHPUnit_Framework_TestCase {
/**
* Setup the testing environment.
*/
public function setUp()
{
Config::set('application.key', 'foo');
}
/**
* Tear down the testing environemnt.
*/
public function tearDown()
{
Input::$input = array();
Config::set('application.key', '');
Session::$instance = null;
}
/**
* Test the Input::all method.
*
* @group laravel
*/
public function testAllMethodReturnsInputAndFiles()
{
Input::$input = array('name' => 'Taylor');
$_FILES = array('age' => 25);
$this->assertEquals(Input::all(), array('name' => 'Taylor', 'age' => 25));
}
/**
* Test the Input::has method.
*
* @group laravel
*/
public function testHasMethodIndicatesTheExistenceOfInput()
{
$this->assertFalse(Input::has('foo'));
Input::$input = array('name' => 'Taylor');
$this->assertTrue(Input::has('name'));
}
/**
* Test the Input::get method.
*
* @group laravel
*/
public function testGetMethodReturnsInputValue()
{
Input::$input = array('name' => 'Taylor');
$this->assertEquals('Taylor', Input::get('name'));
$this->assertEquals('Default', Input::get('foo', 'Default'));
}
/**
* Test the Input::only method.
*
* @group laravel
*/
public function testOnlyMethodReturnsSubsetOfInput()
{
Input::$input = array('name' => 'Taylor', 'age' => 25);
$this->assertEquals(array('name' => 'Taylor'), Input::only(array('name')));
}
/**
* Test the Input::except method.
*
* @group laravel
*/
public function testExceptMethodReturnsSubsetOfInput()
{
Input::$input = array('name' => 'Taylor', 'age' => 25);
$this->assertEquals(array('age' => 25), Input::except(array('name')));
}
/**
* Test the Input::old method.
*
* @group laravel
*/
public function testOldInputCanBeRetrievedFromSession()
{
$this->setSession();
Session::$instance->session['data']['laravel_old_input'] = array('name' => 'Taylor');
$this->assertNull(Input::old('foo'));
$this->assertTrue(Input::had('name'));
$this->assertFalse(Input::had('foo'));
$this->assertEquals('Taylor', Input::old('name'));
}
/**
* Test the Input::file method.
*
* @group laravel
*/
public function testFileMethodReturnsFromFileArray()
{
$_FILES['foo'] = array('name' => 'Taylor', 'size' => 100);
$this->assertEquals('Taylor', Input::file('foo.name'));
$this->assertEquals(array('name' => 'Taylor', 'size' => 100), Input::file('foo'));
}
/**
* Test the Input::flash method.
*
* @group laravel
*/
public function testFlashMethodFlashesInputToSession()
{
$this->setSession();
Input::$input = $input = array('name' => 'Taylor', 'age' => 25);
Input::flash();
$this->assertEquals($input, Session::$instance->session['data'][':new:']['laravel_old_input']);
Input::flash('only', array('name'));
$this->assertEquals(array('name' => 'Taylor'), Session::$instance->session['data'][':new:']['laravel_old_input']);
Input::flash('except', array('name'));
$this->assertEquals(array('age' => 25), Session::$instance->session['data'][':new:']['laravel_old_input']);
}
/**
* Test the Input::flush method.
*
* @group laravel
*/
public function testFlushMethodClearsFlashedInput()
{
$this->setSession();
Input::$input = $input = array('name' => 'Taylor');
Input::flash();
$this->assertEquals($input, Session::$instance->session['data'][':new:']['laravel_old_input']);
Input::flush();
$this->assertEquals(array(), Session::$instance->session['data'][':new:']['laravel_old_input']);
}
/**
* Set the session payload instance.
*/
protected function setSession()
{
$driver = $this->getMock('Laravel\\Session\\Drivers\\Driver');
Session::$instance = new Laravel\Session\Payload($driver);
}
}
\ No newline at end of file
<?php
class IoCTest extends PHPUnit_Framework_TestCase {
/**
* Test IoC::register and IoC::resolve.
*
* @group laravel
*/
public function testRegisteredClassCanBeResolved()
{
IoC::register('foo', function()
{
return 'Taylor';
});
$this->assertEquals('Taylor', IoC::resolve('foo'));
}
/**
* Test that singletons are created once.
*
* @group laravel
*/
public function testSingletonsAreCreatedOnce()
{
IoC::singleton('foo', function()
{
return new StdClass;
});
$object = IoC::resolve('foo');
$this->assertTrue($object === IoC::resolve('foo'));
}
/**
* Test the IoC::instance method.
*
* @group laravel
*/
public function testInstancesAreReturnedBySingleton()
{
$object = new StdClass;
IoC::instance('bar', $object);
$this->assertTrue($object === IoC::resolve('bar'));
}
/**
* Test the IoC::registered method.
*/
public function testRegisteredMethodIndicatesIfRegistered()
{
IoC::register('foo', function() {});
$this->assertTrue(IoC::registered('foo'));
$this->assertFalse(IoC::registered('baz'));
}
/**
* Test the IoC::controller method.
*
* @group laravel
*/
public function testControllerMethodRegistersAController()
{
IoC::controller('ioc.test', function() {});
$this->assertTrue(IoC::registered('controller: ioc.test'));
}
/**
* Test the IoC::core method.
*
* @group laravel
*/
public function testCoreMethodReturnsFromLaravel()
{
IoC::register('laravel.ioc.test', function() { return 'Taylor'; });
$this->assertEquals('Taylor', IoC::core('ioc.test'));
}
}
\ No newline at end of file
<?php
class LangTest extends PHPUnit_Framework_TestCase {
/**
* Test the Lang::line method.
*
* @group laravel
*/
public function testGetMethodCanGetFromDefaultLanguage()
{
$validation = require path('app').'language/en/validation.php';
$this->assertEquals($validation['required'], Lang::line('validation.required')->get());
$this->assertEquals('Taylor', Lang::line('validation.foo')->get(null, 'Taylor'));
}
/**
* Test the Lang::line method.
*
* @group laravel
*/
public function testGetMethodCanGetLinesForAGivenLanguage()
{
$validation = require path('app').'language/sp/validation.php';
$this->assertEquals($validation['required'], Lang::line('validation.required')->get('sp'));
}
/**
* Test the __toString method.
*
* @group laravel
*/
public function testLineCanBeCastAsString()
{
$validation = require path('app').'language/en/validation.php';
$this->assertEquals($validation['required'], (string) Lang::line('validation.required'));
}
/**
* Test that string replacements are made on lines.
*
* @group laravel
*/
public function testReplacementsAreMadeOnLines()
{
$validation = require path('app').'language/en/validation.php';
$line = str_replace(':attribute', 'e-mail', $validation['required']);
$this->assertEquals($line, Lang::line('validation.required', array('attribute' => 'e-mail'))->get());
}
/**
* Test the Lang::has method.
*
* @group laravel
*/
public function testHasMethodIndicatesIfLangaugeLineExists()
{
$this->assertTrue(Lang::has('validation'));
$this->assertTrue(Lang::has('validation.required'));
$this->assertFalse(Lang::has('validation.foo'));
}
}
\ No newline at end of file
<?php
class MessagesTest extends PHPUnit_Framework_TestCase {
/**
* The Messages instance.
*
* @var Messages
*/
public $messages;
/**
* Setup the test environment.
*/
public function setUp()
{
$this->messages = new Laravel\Messages;
}
/**
* Test the Messages::add method.
*
* @group laravel
*/
public function testAddingMessagesDoesNotCreateDuplicateMessages()
{
$this->messages->add('email', 'test');
$this->messages->add('email', 'test');
$this->assertCount(1, $this->messages->messages);
}
/**
* Test the Messages::add method.
*
* @group laravel
*/
public function testAddMethodPutsMessageInMessagesArray()
{
$this->messages->add('email', 'test');
$this->assertArrayHasKey('email', $this->messages->messages);
$this->assertEquals('test', $this->messages->messages['email'][0]);
}
/**
* Test the Messages::has method.
*
* @group laravel
*/
public function testHasMethodReturnsTrue()
{
$this->messages->add('email', 'test');
$this->assertTrue($this->messages->has('email'));
}
/**
* Test the Messages::has method.
*
* @group laravel
*/
public function testHasMethodReturnsFalse()
{
$this->assertFalse($this->messages->has('something'));
}
/**
* Test the Messages::first method.
*
* @group laravel
*/
public function testFirstMethodReturnsSingleString()
{
$this->messages->add('email', 'test');
$this->assertEquals('test', $this->messages->first('email'));
$this->assertEquals('', $this->messages->first('something'));
}
/**
* Test the Messages::get method.
*
* @group laravel
*/
public function testGetMethodReturnsAllMessagesForAttribute()
{
$messages = array('email' => array('something', 'else'));
$this->messages->messages = $messages;
$this->assertEquals(array('something', 'else'), $this->messages->get('email'));
}
/**
* Test the Messages::all method.
*
* @group laravel
*/
public function testAllMethodReturnsAllErrorMessages()
{
$messages = array('email' => array('something', 'else'), 'name' => array('foo'));
$this->messages->messages = $messages;
$this->assertEquals(array('something', 'else', 'foo'), $this->messages->all());
}
/**
* Test the Messages::get method.
*
* @group laravel
*/
public function testMessagesRespectFormat()
{
$this->messages->add('email', 'test');
$this->assertEquals('<p>test</p>', $this->messages->first('email', '<p>:message</p>'));
$this->assertEquals(array('<p>test</p>'), $this->messages->get('email', '<p>:message</p>'));
$this->assertEquals(array('<p>test</p>'), $this->messages->all('<p>:message</p>'));
}
}
\ No newline at end of file
<?php
class QueryTest extends PHPUnit_Framework_TestCase {
/**
* Test the "find" method.
*
* @group laravel
*/
public function testFindMethodCanReturnByID()
{
$this->assertEquals('taylor@example.com', $this->query()->find(1)->email);
}
/**
* Test the select method.
*
* @group laravel
*/
public function testSelectMethodLimitsColumns()
{
$result = $this->query()->select(array('email'))->first();
$this->assertTrue(isset($result->email));
$this->assertFalse(isset($result->name));
}
/**
* Test the raw_where method.
*
* @group laravel
*/
public function testRawWhereCanBeUsed()
{
}
/**
* Get the query instance for the test case.
*
* @return Query
*/
protected function query()
{
return DB::table('query_test');
}
}
\ No newline at end of file
<?php
use Laravel\Routing\Router;
class RedirectTest extends PHPUnit_Framework_TestCase {
/**
* Setup the test environment.
*/
public function setUp()
{
Config::set('session.driver', 'foo');
Router::$routes = array();
Router::$names = array();
Config::set('application.url', 'http://localhost');
Config::set('application.index', '');
}
/**
* Destroy the test environment.
*/
public function tearDown()
{
Input::$input = array();
Config::set('session.driver', '');
Router::$routes = array();
Router::$names = array();
Config::set('application.url', '');
Config::set('application.index', 'index.php');
Session::$instance = null;
}
/**
* Test the Redirect::to method.
*
* @group laravel
*/
public function testSimpleRedirectSetsCorrectHeaders()
{
$redirect = Redirect::to('user/profile');
$this->assertEquals(302, $redirect->status);
$this->assertEquals('http://localhost/user/profile', $redirect->headers['location']);
$redirect = Redirect::to('user/profile', 301, true);
$this->assertEquals(301, $redirect->status);
$this->assertEquals('https://localhost/user/profile', $redirect->headers['location']);
$redirect = Redirect::to_secure('user/profile', 301);
$this->assertEquals(301, $redirect->status);
$this->assertEquals('https://localhost/user/profile', $redirect->headers['location']);
}
/**
* Test the Redirect::to_route method.
*
* @group laravel
*/
public function testRedirectsCanBeGeneratedForNamedRoutes()
{
Route::get('redirect', array('as' => 'redirect'));
Route::get('redirect/(:any)/(:any)', array('as' => 'redirect-2'));
Route::get('secure/redirect', array('https' => true, 'as' => 'redirect-3'));
$this->assertEquals(301, Redirect::to_route('redirect', array(), 301, true)->status);
$this->assertEquals('http://localhost/redirect', Redirect::to_route('redirect')->headers['location']);
$this->assertEquals('https://localhost/secure/redirect', Redirect::to_route('redirect-3', array(), 302)->headers['location']);
$this->assertEquals('http://localhost/redirect/1/2', Redirect::to_route('redirect-2', array('1', '2'))->headers['location']);
}
/**
* Test the Redirect::with method.
*
* @group laravel
*/
public function testWithMethodFlashesItemToSession()
{
$this->setSession();
$redirect = Redirect::to('')->with('name', 'Taylor');
$this->assertEquals('Taylor', Session::$instance->session['data'][':new:']['name']);
}
/**
* Test the Redirect::with_input function.
*
* @group laravel
*/
public function testWithInputMethodFlashesInputToTheSession()
{
$this->setSession();
Input::$input = $input = array('name' => 'Taylor', 'age' => 25);
$redirect = Redirect::to('')->with_input();
$this->assertEquals($input, Session::$instance->session['data'][':new:']['laravel_old_input']);
$redirect = Redirect::to('')->with_input('only', array('name'));
$this->assertEquals(array('name' => 'Taylor'), Session::$instance->session['data'][':new:']['laravel_old_input']);
$redirect = Redirect::to('')->with_input('except', array('name'));
$this->assertEquals(array('age' => 25), Session::$instance->session['data'][':new:']['laravel_old_input']);
}
/**
* Test the Redirect::with_errors method.
*
* @group laravel
*/
public function testWithErrorsFlashesErrorsToTheSession()
{
$this->setSession();
Redirect::to('')->with_errors(array('name' => 'Taylor'));
$this->assertEquals(array('name' => 'Taylor'), Session::$instance->session['data'][':new:']['errors']);
$validator = Validator::make(array(), array());
$validator->errors = array('name' => 'Taylor');
Redirect::to('')->with_errors($validator);
$this->assertEquals(array('name' => 'Taylor'), Session::$instance->session['data'][':new:']['errors']);
}
/**
* Set the session payload instance.
*/
protected function setSession()
{
$driver = $this->getMock('Laravel\\Session\\Drivers\\Driver');
Session::$instance = new Laravel\Session\Payload($driver);
}
}
\ No newline at end of file
<?php
class SessionPayloadTokenStub {
public function token() { return 'Taylor'; }
}
class RequestTest extends PHPUnit_Framework_TestCase {
/**
* Tear down the test environment.
*/
public function tearDown()
{
$_POST = array();
$_SERVER = array();
Request::$route = null;
Session::$instance = null;
}
/**
* Test the Request::method method.
*
* @group laravel
*/
public function testMethodReturnsTheHTTPRequestMethod()
{
$_SERVER['REQUEST_METHOD'] = 'POST';
$this->assertEquals('POST', Request::method());
$_POST[Request::spoofer] = 'PUT';
$this->assertEquals('PUT', Request::method());
}
/**
* Test the Request::server method.
*
* @group laravel
*/
public function testServerMethodReturnsFromServerArray()
{
$_SERVER = array('TEST' => 'something', 'USER' => array('NAME' => 'taylor'));
$this->assertEquals('something', Request::server('test'));
$this->assertEquals('taylor', Request::server('user.name'));
}
/**
* Test the Request::ip method.
*
* @group laravel
*/
public function testIPMethodReturnsClientIPAddress()
{
$_SERVER['REMOTE_ADDR'] = 'something';
$this->assertEquals('something', Request::ip());
$_SERVER['HTTP_CLIENT_IP'] = 'something';
$this->assertEquals('something', Request::ip());
$_SERVER['HTTP_X_FORWARDED_FOR'] = 'something';
$this->assertEquals('something', Request::ip());
$_SERVER = array();
$this->assertEquals('0.0.0.0', Request::ip());
}
/**
* Test the Request::protocol method.
*
* @group laravel
*/
public function testProtocolMethodReturnsProtocol()
{
$_SERVER['SERVER_PROTOCOL'] = 'taylor';
$this->assertEquals('taylor', Request::protocol());
unset($_SERVER['SERVER_PROTOCOL']);
$this->assertEquals('HTTP/1.1', Request::protocol());
}
/**
* Test the Request::secure method.
*
* @group laravel
*/
public function testSecureMethodsIndicatesIfHTTPS()
{
$_SERVER['HTTPS'] = 'on';
$this->assertTrue(Request::secure());
$_SERVER['HTTPS'] = 'off';
$this->assertFalse(Request::secure());
}
/**
* Test the Request::ajax method.
*
* @group laravel
*/
public function testAjaxMethodIndicatesWhenAjax()
{
$this->assertFalse(Request::ajax());
$_SERVER['HTTP_X_REQUESTED_WITH'] = 'xmlhttprequest';
$this->assertTrue(Request::ajax());
}
/**
* Test the Request::forged method.
*
* @group laravel
*/
public function testForgedMethodIndicatesIfRequestWasForged()
{
Session::$instance = new SessionPayloadTokenStub;
Input::$input = array(Session::csrf_token => 'Foo');
$this->assertTrue(Request::forged());
Input::$input = array(Session::csrf_token => 'Taylor');
$this->assertFalse(Request::forged());
}
/**
* Test the Request::route method.
*
* @group laravel
*/
public function testRouteMethodReturnsStaticRoute()
{
Request::$route = 'Taylor';
$this->assertEquals('Taylor', Request::route());
}
}
\ No newline at end of file
<?php
class ResponseTest extends PHPUnit_Framework_TestCase {
/**
* Test the Response::make method.
*
* @group laravel
*/
public function testMakeMethodProperlySetsContent()
{
$response = Response::make('foo', 201, array('bar' => 'baz'));
$this->assertEquals('foo', $response->content);
$this->assertEquals(201, $response->status);
$this->assertEquals(array('bar' => 'baz'), $response->headers);
}
/**
* Test the Response::view method.
*
* @group laravel
*/
public function testViewMethodSetsContentToView()
{
$response = Response::view('home.index', array('name' => 'Taylor'));
$this->assertEquals('home.index', $response->content->view);
$this->assertEquals('Taylor', $response->content->data['name']);
}
/**
* Test the Response::error method.
*
* @group laravel
*/
public function testErrorMethodSetsContentToErrorView()
{
$response = Response::error('404', array('name' => 'Taylor'));
$this->assertEquals(404, $response->status);
$this->assertEquals('error.404', $response->content->view);
$this->assertEquals('Taylor', $response->content->data['name']);
}
/**
* Test the Response::prepare method.
*
* @group laravel
*/
public function testPrepareMethodCreatesAResponseInstanceFromGivenValue()
{
$response = Response::prepare('Taylor');
$this->assertInstanceOf('Laravel\\Response', $response);
$this->assertEquals('Taylor', $response->content);
$response = Response::prepare(new Response('Taylor'));
$this->assertInstanceOf('Laravel\\Response', $response);
$this->assertEquals('Taylor', $response->content);
}
/**
* Test the Response::message method.
*
* @group laravel
*/
public function testMessageReturnsStatusCodeMessage()
{
$this->assertEquals('OK', Response::make('')->message());
}
/**
* Test the Response::header method.
*
* @group laravel
*/
public function testHeaderMethodSetsValueInHeaderArray()
{
$response = Response::make('')->header('foo', 'bar');
$this->assertEquals('bar', $response->headers['foo']);
}
/**
* Test the Response::status method.
*
* @group laravel
*/
public function testStatusMethodSetsStatusCode()
{
$response = Response::make('')->status(404);
$this->assertEquals(404, $response->status);
}
}
\ No newline at end of file
<?php
use Laravel\Routing\Route;
class RouteTest extends PHPUnit_Framework_TestCase {
/**
* Tear down the testing environment.
*/
public static function tearDownAfterClass()
{
unset($_SERVER['REQUEST_METHOD']);
unset(Filter::$filters['test-after']);
unset(Filter::$filters['test-before']);
unset(Filter::$filters['test-params']);
unset(Filter::$filters['test-multi-1']);
unset(Filter::$filters['test-multi-2']);
}
/**
* Destroy the testing environment.
*/
public function tearDown()
{
Request::$route = null;
}
/**
* Tests the Route::is method.
*
* @group laravel
*/
public function testIsMethodIndicatesIfTheRouteHasAGivenName()
{
$route = new Route('GET', '/', array('as' => 'profile'));
$this->assertTrue($route->is('profile'));
$this->assertFalse($route->is('something'));
}
/**
* Test the basic execution of a route.
*
* @group laravel
*/
public function testBasicRoutesCanBeExecutedProperly()
{
$route = new Route('GET', '', array(function() { return 'Route!'; }));
$this->assertEquals('Route!', $route->call()->content);
$this->assertInstanceOf('Laravel\\Response', $route->call());
}
/**
* Test that route parameters are passed into the handlers.
*
* @group laravel
*/
public function testRouteParametersArePassedIntoTheHandler()
{
$route = new Route('GET', '', array(function($var) { return $var; }), array('Taylor'));
$this->assertEquals('Taylor', $route->call()->content);
$this->assertInstanceOf('Laravel\\Response', $route->call());
}
/**
* Test that calling a route calls the global before and after filters.
*
* @group laravel
*/
public function testCallingARouteCallsTheBeforeAndAfterFilters()
{
$route = new Route('GET', '', array(function() { return 'Hi!'; }));
$_SERVER['before'] = false;
$_SERVER['after'] = false;
$route->call();
$this->assertTrue($_SERVER['before']);
$this->assertTrue($_SERVER['after']);
}
/**
* Test that before filters override the route response.
*
* @group laravel
*/
public function testBeforeFiltersOverrideTheRouteResponse()
{
Filter::register('test-before', function()
{
return 'Filtered!';
});
$route = new Route('GET', '', array('before' => 'test-before', function() {
return 'Route!';
}));
$this->assertEquals('Filtered!', $route->call()->content);
}
/**
* Test that after filters do not affect the route response.
*
* @group laravel
*/
public function testAfterFilterDoesNotAffectTheResponse()
{
$_SERVER['test-after'] = false;
Filter::register('test-after', function()
{
$_SERVER['test-after'] = true;
return 'Filtered!';
});
$route = new Route('GET', '', array('after' => 'test-after', function()
{
return 'Route!';
}));
$this->assertEquals('Route!', $route->call()->content);
$this->assertTrue($_SERVER['test-after']);
}
/**
* Test that the route calls the appropriate controller method when delegating.
*
* @group laravel
*/
public function testControllerActionCalledWhenDelegating()
{
$_SERVER['REQUEST_METHOD'] = 'GET';
$route = new Route('GET', '', array('uses' => 'auth@index'));
$this->assertEquals('action_index', $route->call()->content);
}
/**
* Test that filter parameters are passed to the filter.
*
* @group laravel
*/
public function testFilterParametersArePassedToFilter()
{
Filter::register('test-params', function($var1, $var2)
{
return $var1.$var2;
});
$route = new Route('GET', '', array('before' => 'test-params:1,2'));
$this->assertEquals('12', $route->call()->content);
}
/**
* Test that multiple filters can be assigned to a route.
*
* @group laravel
*/
public function testMultipleFiltersCanBeAssignedToARoute()
{
$_SERVER['test-multi-1'] = false;
$_SERVER['test-multi-2'] = false;
Filter::register('test-multi-1', function() { $_SERVER['test-multi-1'] = true; });
Filter::register('test-multi-2', function() { $_SERVER['test-multi-2'] = true; });
$route = new Route('GET', '', array('before' => 'test-multi-1|test-multi-2'));
$route->call();
$this->assertTrue($_SERVER['test-multi-1']);
$this->assertTrue($_SERVER['test-multi-2']);
}
}
\ No newline at end of file
<?php
use Laravel\Routing\Router;
class RoutingTest extends PHPUnit_Framework_TestCase {
/**
* Destroy the testing environment.
*/
public function setUp()
{
Bundle::$started = array();
Bundle::$routed = array();
Router::$names = array();
Router::$routes = array();
}
/**
* Destroy the testing environment.
*/
public function tearDown()
{
Bundle::$started = array();
Bundle::$routed = array();
Router::$names = array();
Router::$routes = array();
}
/**
* Test the Router::find method.
*
* @group laravel
*/
public function testNamedRoutesCanBeLocatedByTheRouter()
{
Route::get('/', array('as' => 'home'));
Route::get('dashboard', array('as' => 'dashboard'));
$home = Router::find('home');
$dashboard = Router::find('dashboard');
$this->assertTrue(isset($home['/']));
$this->assertTrue(isset($dashboard['dashboard']));
}
/**
* Test the basic routing mechanism.
*
* @group laravel
*/
public function testBasicRouteCanBeRouted()
{
Route::get('/', function() {});
Route::get('home, main', function() {});
$this->assertEquals('/', Router::route('GET', '/')->uri);
$this->assertEquals('home', Router::route('GET', 'home')->uri);
$this->assertEquals('main', Router::route('GET', 'main')->uri);
}
/**
* Test that the router can handle basic wildcards.
*
* @group laravel
*/
public function testWildcardRoutesCanBeRouted()
{
Route::get('user/(:num)', function() {});
Route::get('profile/(:any)/(:num)', function() {});
$this->assertNull(Router::route('GET', 'user/1.5'));
$this->assertNull(Router::route('GET', 'user/taylor'));
$this->assertEquals(array(25), Router::route('GET', 'user/25')->parameters);
$this->assertEquals('user/(:num)', Router::route('GET', 'user/1')->uri);
$this->assertNull(Router::route('GET', 'profile/1/otwell'));
$this->assertNull(Router::route('POST', 'profile/taylor/1'));
$this->assertNull(Router::route('GET', 'profile/taylor/otwell'));
$this->assertNull(Router::route('GET', 'profile/taylor/1/otwell'));
$this->assertEquals(array('taylor', 25), Router::route('GET', 'profile/taylor/25')->parameters);
$this->assertEquals('profile/(:any)/(:num)', Router::route('GET', 'profile/taylor/1')->uri);
}
/**
* Test that optional wildcards can be routed.
*
* @group laravel
*/
public function testOptionalWildcardsCanBeRouted()
{
Route::get('user/(:num?)', function() {});
Route::get('profile/(:any)/(:any?)', function() {});
$this->assertNull(Router::route('GET', 'user/taylor'));
$this->assertEquals('user/(:num?)', Router::route('GET', 'user')->uri);
$this->assertEquals(array(25), Router::route('GET', 'user/25')->parameters);
$this->assertEquals('user/(:num?)', Router::route('GET', 'user/1')->uri);
$this->assertNull(Router::route('GET', 'profile/taylor/otwell/test'));
$this->assertEquals('profile/(:any)/(:any?)', Router::route('GET', 'profile/taylor')->uri);
$this->assertEquals('profile/(:any)/(:any?)', Router::route('GET', 'profile/taylor/25')->uri);
$this->assertEquals('profile/(:any)/(:any?)', Router::route('GET', 'profile/taylor/otwell')->uri);
$this->assertEquals(array('taylor', 'otwell'), Router::route('GET', 'profile/taylor/otwell')->parameters);
}
/**
* Test that basic controller routing is working.
*
* @group laravel
*/
public function testBasicRouteToControllerIsRouted()
{
$this->assertEquals('auth@(:1)', Router::route('GET', 'auth')->action['uses']);
$this->assertEquals('home@(:1)', Router::route('GET', 'home/index')->action['uses']);
$this->assertEquals('home@(:1)', Router::route('GET', 'home/profile')->action['uses']);
$this->assertEquals('admin.panel@(:1)', Router::route('GET', 'admin/panel')->action['uses']);
$this->assertEquals('admin.panel@(:1)', Router::route('GET', 'admin/panel/show')->action['uses']);
}
/**
* Test basic bundle route resolution.
*
* @group laravel
*/
public function testRoutesToBundlesCanBeResolved()
{
$this->assertNull(Router::route('GET', 'dashboard/foo'));
$this->assertEquals('dashboard', Router::route('GET', 'dashboard')->uri);
}
/**
* Test bundle controller route resolution.
*
* @group laravel
*/
public function testBundleControllersCanBeResolved()
{
$this->assertEquals('dashboard::panel@(:1)', Router::route('GET', 'dashboard/panel')->action['uses']);
$this->assertEquals('dashboard::panel@(:1)', Router::route('GET', 'dashboard/panel/show')->action['uses']);
}
/**
* Test foreign characters can be used in routes.
*
* @group laravel
*/
public function testForeignCharsInRoutes()
{
Route::get(urlencode('مدرس_رياضيات').'/(:any)', function() {});
Route::get(urlencode('مدرس_رياضيات'), function() {});
Route::get(urlencode('ÇœŪ'), function() {});
Route::get(urlencode('私は料理が大好き'), function() {});
$this->assertEquals(array(urlencode('مدرس_رياضيات')), Router::route('GET', urlencode('مدرس_رياضيات').'/'.urlencode('مدرس_رياضيات'))->parameters);
$this->assertEquals(urlencode('مدرس_رياضيات'), Router::route('GET', urlencode('مدرس_رياضيات'))->uri);
$this->assertEquals(urlencode('ÇœŪ'), Router::route('GET', urlencode('ÇœŪ'))->uri);
$this->assertEquals(urlencode('私は料理が大好き'), Router::route('GET', urlencode('私は料理が大好き'))->uri);
}
}
\ No newline at end of file
This diff is collapsed.
<?php
class StrTest extends PHPUnit_Framework_TestCase {
/**
* Test the Str::encoding method.
*
* @group laravel
*/
public function testEncodingShouldReturnApplicationEncoding()
{
$this->assertEquals('UTF-8', Config::get('application.encoding'));
Config::set('application.encoding', 'foo');
$this->assertEquals('foo', Config::get('application.encoding'));
Config::set('application.encoding', 'UTF-8');
}
/**
* Test the Str::length method.
*
* @group laravel
*/
public function testStringLengthIsCorrect()
{
$this->assertEquals(6, Str::length('Taylor'));
$this->assertEquals(5, Str::length('ラドクリフ'));
}
/**
* Test the Str::lower method.
*
* @group laravel
*/
public function testStringCanBeConvertedToLowercase()
{
$this->assertEquals('taylor', Str::lower('TAYLOR'));
$this->assertEquals('άχιστη', Str::lower('ΆΧΙΣΤΗ'));
}
/**
* Test the Str::upper method.
*
* @group laravel
*/
public function testStringCanBeConvertedToUppercase()
{
$this->assertEquals('TAYLOR', Str::upper('taylor'));
$this->assertEquals('ΆΧΙΣΤΗ', Str::upper('άχιστη'));
}
/**
* Test the Str::title method.
*
* @group laravel
*/
public function testStringCanBeConvertedToTitleCase()
{
$this->assertEquals('Taylor', Str::title('taylor'));
$this->assertEquals('Άχιστη', Str::title('άχιστη'));
}
/**
* Test the Str::limit method.
*
* @group laravel
*/
public function testStringCanBeLimitedByCharacters()
{
$this->assertEquals('Tay...', Str::limit('Taylor', 3));
$this->assertEquals('Taylor', Str::limit('Taylor', 6));
$this->assertEquals('Tay___', Str::limit('Taylor', 3, '___'));
}
/**
* Test the Str::words method.
*
* @group laravel
*/
public function testStringCanBeLimitedByWords()
{
$this->assertEquals('Taylor...', Str::words('Taylor Otwell', 1));
$this->assertEquals('Taylor___', Str::words('Taylor Otwell', 1, '___'));
$this->assertEquals('Taylor Otwell', Str::words('Taylor Otwell', 3));
}
/**
* Test the Str::plural and Str::singular methods.
*
* @group laravel
*/
public function testStringsCanBeSingularOrPlural()
{
$this->assertEquals('user', Str::singular('users'));
$this->assertEquals('users', Str::plural('user'));
$this->assertEquals('User', Str::singular('Users'));
$this->assertEquals('Users', Str::plural('User'));
$this->assertEquals('user', Str::plural('user', 1));
$this->assertEquals('users', Str::plural('user', 2));
}
/**
* Test the Str::slug method.
*
* @group laravel
*/
public function testStringsCanBeSlugged()
{
$this->assertEquals('my-new-post', Str::slug('My nEw post!!!'));
$this->assertEquals('my_new_post', Str::slug('My nEw post!!!', '_'));
}
/**
* Test the Str::classify method.
*
* @group laravel
*/
public function testStringsCanBeClassified()
{
$this->assertEquals('Something_Else', Str::classify('something.else'));
$this->assertEquals('Something_Else', Str::classify('something_else'));
}
/**
* Test the Str::random method.
*
* @group laravel
*/
public function testRandomStringsCanBeGenerated()
{
$this->assertEquals(40, strlen(Str::random(40)));
}
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment