diff --git a/.travis.yml b/.travis.yml index d066747db..8311f7d20 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,5 +23,7 @@ before_script: - php artisan migrate --force -n --database=mysql_testing - php artisan db:seed --force -n --class=DummyContentSeeder --database=mysql_testing +script: vendor/bin/phpunit --configuration phpunit.xml + after_failure: - cat storage/logs/laravel.log diff --git a/app/Auth/Access/SocialAuthService.php b/app/Auth/Access/SocialAuthService.php index 0d46b9f88..9c8d1a81f 100644 --- a/app/Auth/Access/SocialAuthService.php +++ b/app/Auth/Access/SocialAuthService.php @@ -5,6 +5,7 @@ use BookStack\Auth\UserRepo; use BookStack\Exceptions\SocialDriverNotConfigured; use BookStack\Exceptions\SocialSignInAccountNotUsed; use BookStack\Exceptions\UserRegistrationException; +use Illuminate\Support\Str; use Laravel\Socialite\Contracts\Factory as Socialite; use Laravel\Socialite\Contracts\User as SocialUser; @@ -104,6 +105,7 @@ class SocialAuthService $socialAccount = $this->socialAccount->where('driver_id', '=', $socialId)->first(); $isLoggedIn = auth()->check(); $currentUser = user(); + $titleCaseDriver = Str::title($socialDriver); // When a user is not logged in and a matching SocialAccount exists, // Simply log the user into the application. @@ -117,26 +119,26 @@ class SocialAuthService if ($isLoggedIn && $socialAccount === null) { $this->fillSocialAccount($socialDriver, $socialUser); $currentUser->socialAccounts()->save($this->socialAccount); - session()->flash('success', trans('settings.users_social_connected', ['socialAccount' => title_case($socialDriver)])); + session()->flash('success', trans('settings.users_social_connected', ['socialAccount' => $titleCaseDriver])); return redirect($currentUser->getEditUrl()); } // When a user is logged in and the social account exists and is already linked to the current user. if ($isLoggedIn && $socialAccount !== null && $socialAccount->user->id === $currentUser->id) { - session()->flash('error', trans('errors.social_account_existing', ['socialAccount' => title_case($socialDriver)])); + session()->flash('error', trans('errors.social_account_existing', ['socialAccount' => $titleCaseDriver])); return redirect($currentUser->getEditUrl()); } // When a user is logged in, A social account exists but the users do not match. if ($isLoggedIn && $socialAccount !== null && $socialAccount->user->id != $currentUser->id) { - session()->flash('error', trans('errors.social_account_already_used_existing', ['socialAccount' => title_case($socialDriver)])); + session()->flash('error', trans('errors.social_account_already_used_existing', ['socialAccount' => $titleCaseDriver])); return redirect($currentUser->getEditUrl()); } // Otherwise let the user know this social account is not used by anyone. - $message = trans('errors.social_account_not_used', ['socialAccount' => title_case($socialDriver)]); + $message = trans('errors.social_account_not_used', ['socialAccount' => $titleCaseDriver]); if (setting('registration-enabled')) { - $message .= trans('errors.social_account_register_instructions', ['socialAccount' => title_case($socialDriver)]); + $message .= trans('errors.social_account_register_instructions', ['socialAccount' => $titleCaseDriver]); } throw new SocialSignInAccountNotUsed($message, '/login'); @@ -157,7 +159,7 @@ class SocialAuthService abort(404, trans('errors.social_driver_not_found')); } if (!$this->checkDriverConfigured($driver)) { - throw new SocialDriverNotConfigured(trans('errors.social_driver_not_configured', ['socialAccount' => title_case($socialDriver)])); + throw new SocialDriverNotConfigured(trans('errors.social_driver_not_configured', ['socialAccount' => Str::title($socialDriver)])); } return $driver; @@ -244,7 +246,7 @@ class SocialAuthService public function detachSocialAccount($socialDriver) { user()->socialAccounts()->where('driver', '=', $socialDriver)->delete(); - session()->flash('success', trans('settings.users_social_disconnected', ['socialAccount' => title_case($socialDriver)])); + session()->flash('success', trans('settings.users_social_disconnected', ['socialAccount' => Str::title($socialDriver)])); return redirect(user()->getEditUrl()); } diff --git a/app/Auth/Access/UserTokenService.php b/app/Auth/Access/UserTokenService.php index 34f3b2851..09a2f761b 100644 --- a/app/Auth/Access/UserTokenService.php +++ b/app/Auth/Access/UserTokenService.php @@ -5,6 +5,7 @@ use BookStack\Exceptions\UserTokenExpiredException; use BookStack\Exceptions\UserTokenNotFoundException; use Carbon\Carbon; use Illuminate\Database\Connection as Database; +use Illuminate\Support\Str; use stdClass; class UserTokenService @@ -73,9 +74,9 @@ class UserTokenService */ protected function generateToken() : string { - $token = str_random(24); + $token = Str::random(24); while ($this->tokenExists($token)) { - $token = str_random(25); + $token = Str::random(25); } return $token; } diff --git a/app/Auth/Permissions/PermissionsRepo.php b/app/Auth/Permissions/PermissionsRepo.php index 18d5089be..e7840ff76 100644 --- a/app/Auth/Permissions/PermissionsRepo.php +++ b/app/Auth/Permissions/PermissionsRepo.php @@ -3,6 +3,7 @@ use BookStack\Auth\Permissions; use BookStack\Auth\Role; use BookStack\Exceptions\PermissionsException; +use Illuminate\Support\Str; class PermissionsRepo { @@ -66,7 +67,7 @@ class PermissionsRepo $role->name = str_replace(' ', '-', strtolower($roleData['display_name'])); // Prevent duplicate names while ($this->role->where('name', '=', $role->name)->count() > 0) { - $role->name .= strtolower(str_random(2)); + $role->name .= strtolower(Str::random(2)); } $role->save(); diff --git a/app/Config/app.php b/app/Config/app.php index d4ef8fe25..b4a1076a9 100755 --- a/app/Config/app.php +++ b/app/Config/app.php @@ -136,6 +136,7 @@ return [ // Laravel 'App' => Illuminate\Support\Facades\App::class, + 'Arr' => Illuminate\Support\Arr::class, 'Artisan' => Illuminate\Support\Facades\Artisan::class, 'Auth' => Illuminate\Support\Facades\Auth::class, 'Blade' => Illuminate\Support\Facades\Blade::class, @@ -165,6 +166,7 @@ return [ 'Schema' => Illuminate\Support\Facades\Schema::class, 'Session' => Illuminate\Support\Facades\Session::class, 'Storage' => Illuminate\Support\Facades\Storage::class, + 'Str' => Illuminate\Support\Str::class, 'URL' => Illuminate\Support\Facades\URL::class, 'Validator' => Illuminate\Support\Facades\Validator::class, 'View' => Illuminate\Support\Facades\View::class, diff --git a/app/Config/auth.php b/app/Config/auth.php index 7bf1ae772..cd74c2739 100644 --- a/app/Config/auth.php +++ b/app/Config/auth.php @@ -36,6 +36,7 @@ return [ 'api' => [ 'driver' => 'token', 'provider' => 'users', + 'hash' => false, ], ], diff --git a/app/Config/broadcasting.php b/app/Config/broadcasting.php index 3d9eb78f9..7aaaa5693 100644 --- a/app/Config/broadcasting.php +++ b/app/Config/broadcasting.php @@ -24,9 +24,13 @@ return [ 'pusher' => [ 'driver' => 'pusher', - 'key' => env('PUSHER_KEY'), - 'secret' => env('PUSHER_SECRET'), + 'key' => env('PUSHER_APP_KEY'), + 'secret' => env('PUSHER_APP_SECRET'), 'app_id' => env('PUSHER_APP_ID'), + 'options' => [ + 'cluster' => env('PUSHER_APP_CLUSTER'), + 'useTLS' => true, + ], ], 'redis' => [ @@ -38,6 +42,11 @@ return [ 'driver' => 'log', ], + 'null' => [ + 'driver' => 'null', + ], + + ], ]; diff --git a/app/Config/database.php b/app/Config/database.php index 82156bd9d..a98b46a2c 100644 --- a/app/Config/database.php +++ b/app/Config/database.php @@ -59,14 +59,9 @@ return [ // Many of those shown here are unsupported by BookStack. 'connections' => [ - 'sqlite' => [ - 'driver' => 'sqlite', - 'database' => storage_path('database.sqlite'), - 'prefix' => '', - ], - 'mysql' => [ 'driver' => 'mysql', + 'url' => env('DATABASE_URL'), 'host' => $mysql_host, 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), @@ -79,10 +74,14 @@ return [ 'prefix_indexes' => true, 'strict' => false, 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], ], 'mysql_testing' => [ 'driver' => 'mysql', + 'url' => env('TEST_DATABASE_URL'), 'host' => '127.0.0.1', 'database' => 'bookstack-test', 'username' => env('MYSQL_USER', 'bookstack-test'), @@ -94,27 +93,6 @@ return [ 'strict' => false, ], - 'pgsql' => [ - 'driver' => 'pgsql', - 'host' => env('DB_HOST', 'localhost'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'schema' => 'public', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'host' => env('DB_HOST', 'localhost'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - ], - ], // Migration Repository Table diff --git a/app/Config/queue.php b/app/Config/queue.php index f0dd24fd3..46f6962c5 100644 --- a/app/Config/queue.php +++ b/app/Config/queue.php @@ -17,6 +17,7 @@ return [ // Queue connection configuration 'connections' => [ + 'sync' => [ 'driver' => 'sync', ], @@ -25,38 +26,15 @@ return [ 'driver' => 'database', 'table' => 'jobs', 'queue' => 'default', - 'expire' => 60, - ], - - 'beanstalkd' => [ - 'driver' => 'beanstalkd', - 'host' => 'localhost', - 'queue' => 'default', - 'ttr' => 60, - ], - - 'sqs' => [ - 'driver' => 'sqs', - 'key' => 'your-public-key', - 'secret' => 'your-secret-key', - 'queue' => 'your-queue-url', - 'region' => 'us-east-1', - ], - - 'iron' => [ - 'driver' => 'iron', - 'host' => 'mq-aws-us-east-1.iron.io', - 'token' => 'your-token', - 'project' => 'your-project-id', - 'queue' => 'your-queue-name', - 'encrypt' => true, + 'retry_after' => 90, ], 'redis' => [ 'driver' => 'redis', 'connection' => 'default', - 'queue' => 'default', - 'expire' => 60, + 'queue' => env('REDIS_QUEUE', 'default'), + 'retry_after' => 90, + 'block_for' => null, ], ], diff --git a/app/Config/services.php b/app/Config/services.php index 569c0fb48..2136f8116 100644 --- a/app/Config/services.php +++ b/app/Config/services.php @@ -22,28 +22,6 @@ return [ // Callback URL for social authentication methods 'callback_url' => env('APP_URL', false), - 'mailgun' => [ - 'domain' => '', - 'secret' => '', - 'endpoint' => '', - ], - - 'ses' => [ - 'key' => '', - 'secret' => '', - 'region' => 'us-east-1', - ], - - 'stripe' => [ - 'model' => \BookStack\Auth\User::class, - 'key' => '', - 'secret' => '', - 'webhook' => [ - 'secret' => '', - 'tolerance' => 300, - ], - ], - 'github' => [ 'client_id' => env('GITHUB_APP_ID', false), 'client_secret' => env('GITHUB_APP_SECRET', false), diff --git a/app/Entities/BreadcrumbsViewComposer.php b/app/Entities/BreadcrumbsViewComposer.php index 97ddbc2dc..e46d54ec2 100644 --- a/app/Entities/BreadcrumbsViewComposer.php +++ b/app/Entities/BreadcrumbsViewComposer.php @@ -23,8 +23,9 @@ class BreadcrumbsViewComposer public function compose(View $view) { $crumbs = $view->getData()['crumbs']; - if (array_first($crumbs) instanceof Book) { - $shelf = $this->entityContextManager->getContextualShelfForBook(array_first($crumbs)); + $firstCrumb = $crumbs[0] ?? null; + if ($firstCrumb instanceof Book) { + $shelf = $this->entityContextManager->getContextualShelfForBook($firstCrumb); if ($shelf) { array_unshift($crumbs, $shelf); $view->with('crumbs', $crumbs); diff --git a/app/Entities/SearchService.php b/app/Entities/SearchService.php index 9e7cfdd0c..ee9b87786 100644 --- a/app/Entities/SearchService.php +++ b/app/Entities/SearchService.php @@ -6,6 +6,7 @@ use Illuminate\Database\Eloquent\Builder as EloquentBuilder; use Illuminate\Database\Query\Builder; use Illuminate\Database\Query\JoinClause; use Illuminate\Support\Collection; +use Illuminate\Support\Str; class SearchService { @@ -210,7 +211,7 @@ class SearchService // Handle filters foreach ($terms['filters'] as $filterTerm => $filterValue) { - $functionName = camel_case('filter_' . $filterTerm); + $functionName = Str::camel('filter_' . $filterTerm); if (method_exists($this, $functionName)) { $this->$functionName($entitySelect, $entity, $filterValue); } @@ -514,7 +515,7 @@ class SearchService protected function filterSortBy(EloquentBuilder $query, Entity $model, $input) { - $functionName = camel_case('sort_by_' . $input); + $functionName = Str::camel('sort_by_' . $input); if (method_exists($this, $functionName)) { $this->$functionName($query, $model); } diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index 83bd307e4..3b9738835 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -19,6 +19,7 @@ use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\Routing\Redirector; use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Str; use Laravel\Socialite\Contracts\User as SocialUser; use Validator; @@ -78,7 +79,7 @@ class RegisterController extends Controller return Validator::make($data, [ 'name' => 'required|min:2|max:255', 'email' => 'required|email|max:255|unique:users', - 'password' => 'required|min:6', + 'password' => 'required|min:8', ]); } @@ -262,7 +263,7 @@ class RegisterController extends Controller $userData = [ 'name' => $socialUser->getName(), 'email' => $socialUser->getEmail(), - 'password' => str_random(30) + 'password' => Str::random(30) ]; return $this->registerUser($userData, $socialAccount, $emailVerified); } diff --git a/app/Http/Controllers/Auth/UserInviteController.php b/app/Http/Controllers/Auth/UserInviteController.php index 5d9373f45..cfeb69648 100644 --- a/app/Http/Controllers/Auth/UserInviteController.php +++ b/app/Http/Controllers/Auth/UserInviteController.php @@ -62,7 +62,7 @@ class UserInviteController extends Controller public function setPassword(string $token, Request $request) { $this->validate($request, [ - 'password' => 'required|min:6' + 'password' => 'required|min:8' ]); try { diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index c9d2560ba..156256cb9 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -8,6 +8,7 @@ use BookStack\Exceptions\UserUpdateException; use BookStack\Uploads\ImageRepo; use Illuminate\Http\Request; use Illuminate\Http\Response; +use Illuminate\Support\Str; class UserController extends Controller { @@ -92,7 +93,7 @@ class UserController extends Controller $user = $this->user->fill($request->all()); if ($authMethod === 'standard') { - $user->password = bcrypt($request->get('password', str_random(32))); + $user->password = bcrypt($request->get('password', Str::random(32))); } elseif ($authMethod === 'ldap') { $user->external_auth_id = $request->get('external_auth_id'); } diff --git a/app/Uploads/Attachment.php b/app/Uploads/Attachment.php index 8720d3c09..3f0b447df 100644 --- a/app/Uploads/Attachment.php +++ b/app/Uploads/Attachment.php @@ -13,7 +13,7 @@ class Attachment extends Ownable */ public function getFileName() { - if (str_contains($this->name, '.')) { + if (strpos($this->name, '.') !== false) { return $this->name; } return $this->name . '.' . $this->extension; diff --git a/app/Uploads/AttachmentService.php b/app/Uploads/AttachmentService.php index 6e875a1e7..ae4fb6e96 100644 --- a/app/Uploads/AttachmentService.php +++ b/app/Uploads/AttachmentService.php @@ -2,6 +2,7 @@ use BookStack\Exceptions\FileUploadException; use Exception; +use Illuminate\Support\Str; use Symfony\Component\HttpFoundation\File\UploadedFile; class AttachmentService extends UploadService @@ -185,9 +186,9 @@ class AttachmentService extends UploadService $storage = $this->getStorage(); $basePath = 'uploads/files/' . Date('Y-m-M') . '/'; - $uploadFileName = str_random(16) . '.' . $uploadedFile->getClientOriginalExtension(); + $uploadFileName = Str::random(16) . '.' . $uploadedFile->getClientOriginalExtension(); while ($storage->exists($basePath . $uploadFileName)) { - $uploadFileName = str_random(3) . $uploadFileName; + $uploadFileName = Str::random(3) . $uploadFileName; } $attachmentPath = $basePath . $uploadFileName; diff --git a/app/Uploads/ImageService.php b/app/Uploads/ImageService.php index 860230d00..e7668471b 100644 --- a/app/Uploads/ImageService.php +++ b/app/Uploads/ImageService.php @@ -7,6 +7,7 @@ use DB; use Exception; use Illuminate\Contracts\Cache\Repository as Cache; use Illuminate\Contracts\Filesystem\Factory as FileSystem; +use Illuminate\Support\Str; use Intervention\Image\Exception\NotSupportedException; use Intervention\Image\ImageManager; use phpDocumentor\Reflection\Types\Integer; @@ -140,12 +141,12 @@ class ImageService extends UploadService $imagePath = '/uploads/images/' . $type . '/' . Date('Y-m') . '/'; while ($storage->exists($imagePath . $imageName)) { - $imageName = str_random(3) . $imageName; + $imageName = Str::random(3) . $imageName; } $fullPath = $imagePath . $imageName; if ($secureUploads) { - $fullPath = $imagePath . str_random(16) . '-' . $imageName; + $fullPath = $imagePath . Str::random(16) . '-' . $imageName; } try { @@ -220,7 +221,7 @@ class ImageService extends UploadService $storage->put($thumbFilePath, $thumbData); $storage->setVisibility($thumbFilePath, 'public'); - $this->cache->put('images-' . $image->id . '-' . $thumbFilePath, $thumbFilePath, 60 * 72); + $this->cache->put('images-' . $image->id . '-' . $thumbFilePath, $thumbFilePath, 60 * 60 * 72); return $this->getPublicUrl($thumbFilePath); } diff --git a/composer.json b/composer.json index 4741d4d7e..b8c3e5536 100644 --- a/composer.json +++ b/composer.json @@ -13,7 +13,7 @@ "ext-mbstring": "*", "ext-gd": "*", "ext-curl": "*", - "laravel/framework": "5.7.*", + "laravel/framework": "5.8.*", "fideloper/proxy": "^4.0", "intervention/image": "^2.5", "laravel/socialite": "^4.2", @@ -35,8 +35,8 @@ "filp/whoops": "^2.0", "fzaninotto/faker": "^1.4", "mockery/mockery": "^1.0", - "phpunit/phpunit": "^7.0", - "nunomaduro/collision": "^2.0", + "phpunit/phpunit": "^7.5", + "nunomaduro/collision": "^3.0", "laravel/browser-kit-testing": "^4.2.1", "barryvdh/laravel-ide-helper": "^2.6.4", "barryvdh/laravel-debugbar": "^3.2.8", diff --git a/composer.lock b/composer.lock index b3838ecf8..bf072fef8 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "a007281b1a87cb6fc78975c49f20b3e8", + "content-hash": "e1ffc91b76f0e5949245144507d6dddc", "packages": [ { "name": "aws/aws-sdk-php", - "version": "3.110.11", + "version": "3.112.0", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "3f222649634fa039c59f58082e60159a6bb59bbf" + "reference": "1e21446c6780a3b9b5e4315bd6d4347d2c3381eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/3f222649634fa039c59f58082e60159a6bb59bbf", - "reference": "3f222649634fa039c59f58082e60159a6bb59bbf", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/1e21446c6780a3b9b5e4315bd6d4347d2c3381eb", + "reference": "1e21446c6780a3b9b5e4315bd6d4347d2c3381eb", "shasum": "" }, "require": { @@ -87,7 +87,7 @@ "s3", "sdk" ], - "time": "2019-09-06T18:21:14+00:00" + "time": "2019-09-12T18:09:53+00:00" }, { "name": "barryvdh/laravel-dompdf", @@ -1312,45 +1312,45 @@ }, { "name": "laravel/framework", - "version": "v5.7.28", + "version": "v5.8.35", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "8e69728f1c80a024588adbd24c65c4fcf9aa9192" + "reference": "5a9e4d241a8b815e16c9d2151e908992c38db197" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/8e69728f1c80a024588adbd24c65c4fcf9aa9192", - "reference": "8e69728f1c80a024588adbd24c65c4fcf9aa9192", + "url": "https://api.github.com/repos/laravel/framework/zipball/5a9e4d241a8b815e16c9d2151e908992c38db197", + "reference": "5a9e4d241a8b815e16c9d2151e908992c38db197", "shasum": "" }, "require": { "doctrine/inflector": "^1.1", "dragonmantank/cron-expression": "^2.0", + "egulias/email-validator": "^2.0", "erusev/parsedown": "^1.7", + "ext-json": "*", "ext-mbstring": "*", "ext-openssl": "*", - "laravel/nexmo-notification-channel": "^1.0", - "laravel/slack-notification-channel": "^1.0", "league/flysystem": "^1.0.8", "monolog/monolog": "^1.12", - "nesbot/carbon": "^1.26.3", + "nesbot/carbon": "^1.26.3 || ^2.0", "opis/closure": "^3.1", "php": "^7.1.3", "psr/container": "^1.0", "psr/simple-cache": "^1.0", "ramsey/uuid": "^3.7", "swiftmailer/swiftmailer": "^6.0", - "symfony/console": "^4.1", - "symfony/debug": "^4.1", - "symfony/finder": "^4.1", - "symfony/http-foundation": "^4.1", - "symfony/http-kernel": "^4.1", - "symfony/process": "^4.1", - "symfony/routing": "^4.1", - "symfony/var-dumper": "^4.1", + "symfony/console": "^4.2", + "symfony/debug": "^4.2", + "symfony/finder": "^4.2", + "symfony/http-foundation": "^4.2", + "symfony/http-kernel": "^4.2", + "symfony/process": "^4.2", + "symfony/routing": "^4.2", + "symfony/var-dumper": "^4.2", "tijsverkoyen/css-to-inline-styles": "^2.2.1", - "vlucas/phpdotenv": "^2.2" + "vlucas/phpdotenv": "^3.3" }, "conflict": { "tightenco/collect": "<5.5.33" @@ -1393,17 +1393,18 @@ "league/flysystem-cached-adapter": "^1.0", "mockery/mockery": "^1.0", "moontoast/math": "^1.1", - "orchestra/testbench-core": "3.7.*", - "pda/pheanstalk": "^3.0|^4.0", - "phpunit/phpunit": "^7.5", + "orchestra/testbench-core": "3.8.*", + "pda/pheanstalk": "^4.0", + "phpunit/phpunit": "^7.5|^8.0", "predis/predis": "^1.1.1", - "symfony/css-selector": "^4.1", - "symfony/dom-crawler": "^4.1", + "symfony/css-selector": "^4.2", + "symfony/dom-crawler": "^4.2", "true/punycode": "^2.1" }, "suggest": { "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (^3.0).", "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", "ext-pcntl": "Required to use all features of the queue worker.", "ext-posix": "Required to use all features of the queue worker.", "filp/whoops": "Required for friendly error pages in development (^2.1.4).", @@ -1416,17 +1417,18 @@ "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", "moontoast/math": "Required to use ordered UUIDs (^1.1).", "nexmo/client": "Required to use the Nexmo transport (^1.0).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (^3.0|^4.0).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", "predis/predis": "Required to use the redis cache and queue drivers (^1.0).", "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^3.0).", - "symfony/css-selector": "Required to use some of the crawler integration testing tools (^4.1).", - "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (^4.1).", - "symfony/psr-http-message-bridge": "Required to psr7 bridging features (^1.0)." + "symfony/css-selector": "Required to use some of the crawler integration testing tools (^4.2).", + "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (^4.2).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^1.1).", + "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.7-dev" + "dev-master": "5.8-dev" } }, "autoload": { @@ -1454,121 +1456,7 @@ "framework", "laravel" ], - "time": "2019-02-26T15:41:34+00:00" - }, - { - "name": "laravel/nexmo-notification-channel", - "version": "v1.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/nexmo-notification-channel.git", - "reference": "03edd42a55b306ff980c9950899d5a2b03260d48" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/nexmo-notification-channel/zipball/03edd42a55b306ff980c9950899d5a2b03260d48", - "reference": "03edd42a55b306ff980c9950899d5a2b03260d48", - "shasum": "" - }, - "require": { - "nexmo/client": "^1.0", - "php": "^7.1.3" - }, - "require-dev": { - "illuminate/notifications": "~5.7", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - }, - "laravel": { - "providers": [ - "Illuminate\\Notifications\\NexmoChannelServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Notifications\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Nexmo Notification Channel for laravel.", - "keywords": [ - "laravel", - "nexmo", - "notifications" - ], - "time": "2018-12-04T12:57:08+00:00" - }, - { - "name": "laravel/slack-notification-channel", - "version": "v1.0.3", - "source": { - "type": "git", - "url": "https://github.com/laravel/slack-notification-channel.git", - "reference": "6e164293b754a95f246faf50ab2bbea3e4923cc9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/slack-notification-channel/zipball/6e164293b754a95f246faf50ab2bbea3e4923cc9", - "reference": "6e164293b754a95f246faf50ab2bbea3e4923cc9", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^6.0", - "php": "^7.1.3" - }, - "require-dev": { - "illuminate/notifications": "~5.7", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - }, - "laravel": { - "providers": [ - "Illuminate\\Notifications\\SlackChannelServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Notifications\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Slack Notification Channel for laravel.", - "keywords": [ - "laravel", - "notifications", - "slack" - ], - "time": "2018-12-12T13:12:06+00:00" + "time": "2019-09-03T16:44:30+00:00" }, { "name": "laravel/socialite", @@ -1634,61 +1522,6 @@ ], "time": "2019-09-03T15:27:17+00:00" }, - { - "name": "lcobucci/jwt", - "version": "3.3.1", - "source": { - "type": "git", - "url": "https://github.com/lcobucci/jwt.git", - "reference": "a11ec5f4b4d75d1fcd04e133dede4c317aac9e18" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/lcobucci/jwt/zipball/a11ec5f4b4d75d1fcd04e133dede4c317aac9e18", - "reference": "a11ec5f4b4d75d1fcd04e133dede4c317aac9e18", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "ext-openssl": "*", - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "mikey179/vfsstream": "~1.5", - "phpmd/phpmd": "~2.2", - "phpunit/php-invoker": "~1.1", - "phpunit/phpunit": "^5.7 || ^7.3", - "squizlabs/php_codesniffer": "~2.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "psr-4": { - "Lcobucci\\JWT\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Luís Otávio Cobucci Oblonczyk", - "role": "Developer", - "email": "lcobucci@gmail.com" - } - ], - "description": "A simple library to work with JSON Web Token and JSON Web Signature", - "keywords": [ - "JWS", - "jwt" - ], - "time": "2019-05-24T18:30:49+00:00" - }, { "name": "league/flysystem", "version": "1.0.55", @@ -2077,54 +1910,6 @@ ], "time": "2019-06-11T09:07:59+00:00" }, - { - "name": "nexmo/client", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/Nexmo/nexmo-php.git", - "reference": "182d41a02ebd3e4be147baea45458ccfe2f528c4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Nexmo/nexmo-php/zipball/182d41a02ebd3e4be147baea45458ccfe2f528c4", - "reference": "182d41a02ebd3e4be147baea45458ccfe2f528c4", - "shasum": "" - }, - "require": { - "lcobucci/jwt": "^3.2", - "php": ">=5.6", - "php-http/client-implementation": "^1.0", - "php-http/guzzle6-adapter": "^1.0", - "zendframework/zend-diactoros": "^1.8.4 || ^2.0" - }, - "require-dev": { - "estahn/phpunit-json-assertions": "^1.0.0", - "php-http/mock-client": "^0.3.0", - "phpunit/phpunit": "^5.7", - "squizlabs/php_codesniffer": "^3.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Nexmo\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Tim Lytle", - "email": "tim@nexmo.com", - "homepage": "http://twitter.com/tjlytle", - "role": "Developer" - } - ], - "description": "PHP Client for using Nexmo's API.", - "time": "2019-05-13T20:27:43+00:00" - }, { "name": "opis/closure", "version": "3.4.0", @@ -2270,28 +2055,28 @@ }, { "name": "phenx/php-svg-lib", - "version": "v0.3.2", + "version": "v0.3.3", "source": { "type": "git", "url": "https://github.com/PhenX/php-svg-lib.git", - "reference": "ccc46ef6340d4b8a4a68047e68d8501ea961442c" + "reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/ccc46ef6340d4b8a4a68047e68d8501ea961442c", - "reference": "ccc46ef6340d4b8a4a68047e68d8501ea961442c", + "url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/5fa61b65e612ce1ae15f69b3d223cb14ecc60e32", + "reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32", "shasum": "" }, "require": { - "sabberworm/php-css-parser": "8.1.*" + "sabberworm/php-css-parser": "^8.3" }, "require-dev": { - "phpunit/phpunit": "~5.0" + "phpunit/phpunit": "^5.5|^6.5" }, "type": "library", "autoload": { - "psr-0": { - "Svg\\": "src/" + "psr-4": { + "Svg\\": "src/Svg" } }, "notification-url": "https://packagist.org/downloads/", @@ -2306,173 +2091,57 @@ ], "description": "A library to read, parse and export to PDF SVG files.", "homepage": "https://github.com/PhenX/php-svg-lib", - "time": "2018-06-03T10:10:03+00:00" + "time": "2019-09-11T20:02:13+00:00" }, { - "name": "php-http/guzzle6-adapter", - "version": "v1.1.1", + "name": "phpoption/phpoption", + "version": "1.5.0", "source": { "type": "git", - "url": "https://github.com/php-http/guzzle6-adapter.git", - "reference": "a56941f9dc6110409cfcddc91546ee97039277ab" + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/guzzle6-adapter/zipball/a56941f9dc6110409cfcddc91546ee97039277ab", - "reference": "a56941f9dc6110409cfcddc91546ee97039277ab", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed", + "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "^6.0", - "php": ">=5.5.0", - "php-http/httplug": "^1.0" - }, - "provide": { - "php-http/async-client-implementation": "1.0", - "php-http/client-implementation": "1.0" + "php": ">=5.3.0" }, "require-dev": { - "ext-curl": "*", - "php-http/adapter-integration-tests": "^0.4" + "phpunit/phpunit": "4.7.*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.3-dev" } }, "autoload": { - "psr-4": { - "Http\\Adapter\\Guzzle6\\": "src/" + "psr-0": { + "PhpOption\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "Apache2" ], "authors": [ { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - }, - { - "name": "David de Boer", - "email": "david@ddeboer.nl" + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" } ], - "description": "Guzzle 6 HTTP Adapter", - "homepage": "http://httplug.io", + "description": "Option Type for PHP", "keywords": [ - "Guzzle", - "http" + "language", + "option", + "php", + "type" ], - "time": "2016-05-10T06:13:32+00:00" - }, - { - "name": "php-http/httplug", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/httplug.git", - "reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/httplug/zipball/1c6381726c18579c4ca2ef1ec1498fdae8bdf018", - "reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018", - "shasum": "" - }, - "require": { - "php": ">=5.4", - "php-http/promise": "^1.0", - "psr/http-message": "^1.0" - }, - "require-dev": { - "henrikbjorn/phpspec-code-coverage": "^1.0", - "phpspec/phpspec": "^2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eric GELOEN", - "email": "geloen.eric@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "HTTPlug, the HTTP client abstraction for PHP", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "http" - ], - "time": "2016-08-31T08:30:17+00:00" - }, - { - "name": "php-http/promise", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/promise.git", - "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/dc494cdc9d7160b9a09bd5573272195242ce7980", - "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980", - "shasum": "" - }, - "require-dev": { - "henrikbjorn/phpspec-code-coverage": "^1.0", - "phpspec/phpspec": "^2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - }, - { - "name": "Joel Wurtz", - "email": "joel.wurtz@gmail.com" - } - ], - "description": "Promise used for asynchronous HTTP requests", - "homepage": "http://httplug.io", - "keywords": [ - "promise" - ], - "time": "2016-01-26T13:27:02+00:00" + "time": "2015-07-25T16:39:46+00:00" }, { "name": "predis/predis", @@ -2573,58 +2242,6 @@ ], "time": "2017-02-14T16:28:37+00:00" }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "time": "2019-04-30T12:38:16+00:00" - }, { "name": "psr/http-message", "version": "1.0.1", @@ -2894,23 +2511,24 @@ }, { "name": "sabberworm/php-css-parser", - "version": "8.1.0", + "version": "8.3.0", "source": { "type": "git", "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", - "reference": "850cbbcbe7fbb155387a151ea562897a67e242ef" + "reference": "91bcc3e3fdb7386c9a2e0e0aa09ca75cc43f121f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/850cbbcbe7fbb155387a151ea562897a67e242ef", - "reference": "850cbbcbe7fbb155387a151ea562897a67e242ef", + "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/91bcc3e3fdb7386c9a2e0e0aa09ca75cc43f121f", + "reference": "91bcc3e3fdb7386c9a2e0e0aa09ca75cc43f121f", "shasum": "" }, "require": { "php": ">=5.3.2" }, "require-dev": { - "phpunit/phpunit": "*" + "codacy/coverage": "^1.4", + "phpunit/phpunit": "~4.8" }, "type": "library", "autoload": { @@ -2934,7 +2552,7 @@ "parser", "stylesheet" ], - "time": "2016-07-19T19:14:21+00:00" + "time": "2019-02-22T07:42:52+00:00" }, { "name": "socialiteproviders/discord", @@ -3012,16 +2630,16 @@ }, { "name": "socialiteproviders/manager", - "version": "v3.4.1", + "version": "v3.4.2", "source": { "type": "git", "url": "https://github.com/SocialiteProviders/Manager.git", - "reference": "e79a1abb21f153f4a46d1a60abc72cba82d55f35" + "reference": "e3e8e78b9a3060801cd008941a0894a0a0c479e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/SocialiteProviders/Manager/zipball/e79a1abb21f153f4a46d1a60abc72cba82d55f35", - "reference": "e79a1abb21f153f4a46d1a60abc72cba82d55f35", + "url": "https://api.github.com/repos/SocialiteProviders/Manager/zipball/e3e8e78b9a3060801cd008941a0894a0a0c479e1", + "reference": "e3e8e78b9a3060801cd008941a0894a0a0c479e1", "shasum": "" }, "require": { @@ -3065,7 +2683,7 @@ } ], "description": "Easily add new or override built-in providers in Laravel Socialite.", - "time": "2019-09-05T22:58:45+00:00" + "time": "2019-09-09T03:07:52+00:00" }, { "name": "socialiteproviders/microsoft-azure", @@ -4636,29 +4254,30 @@ }, { "name": "vlucas/phpdotenv", - "version": "v2.6.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "2a7dcf7e3e02dc5e701004e51a6f304b713107d5" + "reference": "1bdf24f065975594f6a117f0f1f6cabf1333b156" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2a7dcf7e3e02dc5e701004e51a6f304b713107d5", - "reference": "2a7dcf7e3e02dc5e701004e51a6f304b713107d5", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1bdf24f065975594f6a117f0f1f6cabf1333b156", + "reference": "1bdf24f065975594f6a117f0f1f6cabf1333b156", "shasum": "" }, "require": { - "php": ">=5.3.9", + "php": "^5.4 || ^7.0", + "phpoption/phpoption": "^1.5", "symfony/polyfill-ctype": "^1.9" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.0" + "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "3.6-dev" } }, "autoload": { @@ -4671,10 +4290,15 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Graham Campbell", + "email": "graham@alt-three.com", + "homepage": "https://gjcampbell.co.uk/" + }, { "name": "Vance Lucas", "email": "vance@vancelucas.com", - "homepage": "http://www.vancelucas.com" + "homepage": "https://vancelucas.com/" } ], "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", @@ -4683,73 +4307,7 @@ "env", "environment" ], - "time": "2019-01-29T11:11:52+00:00" - }, - { - "name": "zendframework/zend-diactoros", - "version": "2.1.3", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-diactoros.git", - "reference": "279723778c40164bcf984a2df12ff2c6ec5e61c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/279723778c40164bcf984a2df12ff2c6ec5e61c1", - "reference": "279723778c40164bcf984a2df12ff2c6ec5e61c1", - "shasum": "" - }, - "require": { - "php": "^7.1", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "ext-dom": "*", - "ext-libxml": "*", - "http-interop/http-factory-tests": "^0.5.0", - "php-http/psr7-integration-tests": "dev-master", - "phpunit/phpunit": "^7.0.2", - "zendframework/zend-coding-standard": "~1.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev", - "dev-develop": "2.2.x-dev", - "dev-release-1.8": "1.8.x-dev" - } - }, - "autoload": { - "files": [ - "src/functions/create_uploaded_file.php", - "src/functions/marshal_headers_from_sapi.php", - "src/functions/marshal_method_from_sapi.php", - "src/functions/marshal_protocol_version_from_sapi.php", - "src/functions/marshal_uri_from_sapi.php", - "src/functions/normalize_server.php", - "src/functions/normalize_uploaded_files.php", - "src/functions/parse_cookie_header.php" - ], - "psr-4": { - "Zend\\Diactoros\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "PSR HTTP Message implementations", - "keywords": [ - "http", - "psr", - "psr-7" - ], - "time": "2019-07-10T16:13:25+00:00" + "time": "2019-09-10T21:37:39+00:00" } ], "packages-dev": [ @@ -4823,28 +4381,28 @@ }, { "name": "barryvdh/laravel-ide-helper", - "version": "v2.6.4", + "version": "v2.6.5", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-ide-helper.git", - "reference": "16eb4f65ee0d51b1f1182d56ae28ee00a70ce75a" + "reference": "8740a9a158d3dd5cfc706a9d4cc1bf7a518f99f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/16eb4f65ee0d51b1f1182d56ae28ee00a70ce75a", - "reference": "16eb4f65ee0d51b1f1182d56ae28ee00a70ce75a", + "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/8740a9a158d3dd5cfc706a9d4cc1bf7a518f99f3", + "reference": "8740a9a158d3dd5cfc706a9d4cc1bf7a518f99f3", "shasum": "" }, "require": { "barryvdh/reflection-docblock": "^2.0.6", "composer/composer": "^1.6", + "doctrine/dbal": "~2.3", "illuminate/console": "^5.5|^6", "illuminate/filesystem": "^5.5|^6", "illuminate/support": "^5.5|^6", "php": ">=7" }, "require-dev": { - "doctrine/dbal": "~2.3", "illuminate/config": "^5.5|^6", "illuminate/view": "^5.5|^6", "phpro/grumphp": "^0.14", @@ -4852,9 +4410,6 @@ "scrutinizer/ocular": "~1.1", "squizlabs/php_codesniffer": "^3" }, - "suggest": { - "doctrine/dbal": "Load information from the database about models for phpdocs (~2.3)" - }, "type": "library", "extra": { "branch-alias": { @@ -4893,7 +4448,7 @@ "phpstorm", "sublime" ], - "time": "2019-09-03T17:51:13+00:00" + "time": "2019-09-08T09:56:38+00:00" }, { "name": "barryvdh/reflection-docblock", @@ -5902,16 +5457,16 @@ }, { "name": "nunomaduro/collision", - "version": "v2.1.1", + "version": "v3.0.1", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "b5feb0c0d92978ec7169232ce5d70d6da6b29f63" + "reference": "af42d339fe2742295a54f6fdd42aaa6f8c4aca68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/b5feb0c0d92978ec7169232ce5d70d6da6b29f63", - "reference": "b5feb0c0d92978ec7169232ce5d70d6da6b29f63", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/af42d339fe2742295a54f6fdd42aaa6f8c4aca68", + "reference": "af42d339fe2742295a54f6fdd42aaa6f8c4aca68", "shasum": "" }, "require": { @@ -5921,10 +5476,10 @@ "symfony/console": "~2.8|~3.3|~4.0" }, "require-dev": { - "laravel/framework": "5.7.*", + "laravel/framework": "5.8.*", "nunomaduro/larastan": "^0.3.0", - "phpstan/phpstan": "^0.10", - "phpunit/phpunit": "~7.3" + "phpstan/phpstan": "^0.11", + "phpunit/phpunit": "~8.0" }, "type": "library", "extra": { @@ -5962,7 +5517,7 @@ "php", "symfony" ], - "time": "2018-11-21T21:40:54+00:00" + "time": "2019-03-07T21:35:13+00:00" }, { "name": "phar-io/manifest", @@ -6068,35 +5623,33 @@ }, { "name": "phpdocumentor/reflection-common", - "version": "1.0.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", + "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", "shasum": "" }, "require": { - "php": ">=5.5" + "php": ">=7.1" }, "require-dev": { - "phpunit/phpunit": "^4.6" + "phpunit/phpunit": "~6" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] + "phpDocumentor\\Reflection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6118,30 +5671,30 @@ "reflection", "static analysis" ], - "time": "2017-09-11T18:02:19+00:00" + "time": "2018-08-07T13:53:10+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.1", + "version": "4.3.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c" + "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", - "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/b83ff7cfcfee7827e1e78b637a5904fe6a96698e", + "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e", "shasum": "" }, "require": { "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0", - "phpdocumentor/type-resolver": "^0.4.0", + "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", + "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", "webmozart/assert": "^1.0" }, "require-dev": { - "doctrine/instantiator": "~1.0.5", + "doctrine/instantiator": "^1.0.5", "mockery/mockery": "^1.0", "phpunit/phpunit": "^6.4" }, @@ -6169,41 +5722,40 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2019-04-30T17:48:53+00:00" + "time": "2019-09-12T14:27:41+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "0.4.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", + "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0", - "phpdocumentor/reflection-common": "^1.0" + "php": "^7.1", + "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" + "ext-tokenizer": "^7.1", + "mockery/mockery": "~1", + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -6216,7 +5768,8 @@ "email": "me@mikevanriel.com" } ], - "time": "2017-07-14T14:27:02+00:00" + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "time": "2019-08-22T18:11:29+00:00" }, { "name": "phpspec/prophecy", diff --git a/phpunit.xml b/phpunit.xml index 1f88f897b..21f81e32c 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -19,33 +19,33 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/svg/403.svg b/public/svg/403.svg deleted file mode 100644 index 682aa9827..000000000 --- a/public/svg/403.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/svg/404.svg b/public/svg/404.svg deleted file mode 100644 index b6cd6f237..000000000 --- a/public/svg/404.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/svg/500.svg b/public/svg/500.svg deleted file mode 100644 index 9927e8d75..000000000 --- a/public/svg/500.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/svg/503.svg b/public/svg/503.svg deleted file mode 100644 index 6ad109336..000000000 --- a/public/svg/503.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/resources/lang/ar/auth.php b/resources/lang/ar/auth.php index bad0910a2..8c822a5a7 100644 --- a/resources/lang/ar/auth.php +++ b/resources/lang/ar/auth.php @@ -27,7 +27,7 @@ return [ 'email' => 'البريد الإلكتروني', 'password' => 'كلمة المرور', 'password_confirm' => 'تأكيد كلمة المرور', - 'password_hint' => 'يجب أن تكون أكثر من 5 حروف', + 'password_hint' => 'يجب أن تكون أكثر من 7 حروف', 'forgot_password' => 'نسيت كلمة المرور؟', 'remember_me' => 'تذكرني', 'ldap_email_hint' => 'الرجاء إدخال عنوان بريد إلكتروني لاستخدامه مع الحساب.', diff --git a/resources/lang/cs/auth.php b/resources/lang/cs/auth.php index 69d6f0b97..27cb33880 100644 --- a/resources/lang/cs/auth.php +++ b/resources/lang/cs/auth.php @@ -21,7 +21,7 @@ return [ 'email' => 'Email', 'password' => 'Heslo', 'password_confirm' => 'Potvrdit heslo', - 'password_hint' => 'Musí mít víc než 5 znaků', + 'password_hint' => 'Musí mít víc než 7 znaků', 'forgot_password' => 'Zapomněli jste heslo?', 'remember_me' => 'Neodhlašovat', 'ldap_email_hint' => 'Zadejte email, který chcete přiřadit k tomuto účtu.', diff --git a/resources/lang/de/auth.php b/resources/lang/de/auth.php index 46d4070b8..b367fc63b 100644 --- a/resources/lang/de/auth.php +++ b/resources/lang/de/auth.php @@ -25,7 +25,7 @@ return [ 'email' => 'E-Mail', 'password' => 'Passwort', 'password_confirm' => 'Passwort bestätigen', - 'password_hint' => 'Mindestlänge: 5 Zeichen', + 'password_hint' => 'Mindestlänge: 7 Zeichen', 'forgot_password' => 'Passwort vergessen?', 'remember_me' => 'Angemeldet bleiben', 'ldap_email_hint' => 'Bitte geben Sie eine E-Mail-Adresse ein, um diese mit dem Account zu nutzen.', diff --git a/resources/lang/en/auth.php b/resources/lang/en/auth.php index 37346097f..6961e049b 100644 --- a/resources/lang/en/auth.php +++ b/resources/lang/en/auth.php @@ -21,7 +21,7 @@ return [ 'email' => 'Email', 'password' => 'Password', 'password_confirm' => 'Confirm Password', - 'password_hint' => 'Must be over 5 characters', + 'password_hint' => 'Must be over 7 characters', 'forgot_password' => 'Forgot Password?', 'remember_me' => 'Remember Me', 'ldap_email_hint' => 'Please enter an email to use for this account.', diff --git a/resources/lang/en/passwords.php b/resources/lang/en/passwords.php index 9f7d9e3cb..f41ca7868 100644 --- a/resources/lang/en/passwords.php +++ b/resources/lang/en/passwords.php @@ -6,7 +6,7 @@ */ return [ - 'password' => 'Passwords must be at least six characters and match the confirmation.', + 'password' => 'Passwords must be at least eight characters and match the confirmation.', 'user' => "We can't find a user with that e-mail address.", 'token' => 'This password reset token is invalid.', 'sent' => 'We have e-mailed your password reset link!', diff --git a/resources/lang/en/validation.php b/resources/lang/en/validation.php index 6f8fcb781..76b57a2a3 100644 --- a/resources/lang/en/validation.php +++ b/resources/lang/en/validation.php @@ -30,6 +30,7 @@ return [ 'digits' => 'The :attribute must be :digits digits.', 'digits_between' => 'The :attribute must be between :min and :max digits.', 'email' => 'The :attribute must be a valid email address.', + 'ends_with' => 'The :attribute must end with one of the following: :values', 'filled' => 'The :attribute field is required.', 'gt' => [ 'numeric' => 'The :attribute must be greater than :value.', diff --git a/resources/lang/es/auth.php b/resources/lang/es/auth.php index c93751a10..5da1a2d44 100644 --- a/resources/lang/es/auth.php +++ b/resources/lang/es/auth.php @@ -21,7 +21,7 @@ return [ 'email' => 'Correo electrónico', 'password' => 'Contraseña', 'password_confirm' => 'Confirmar Contraseña', - 'password_hint' => 'Debe contener más de 5 caracteres', + 'password_hint' => 'Debe contener más de 7 caracteres', 'forgot_password' => '¿Contraseña Olvidada?', 'remember_me' => 'Recordarme', 'ldap_email_hint' => 'Por favor introduzca un mail para utilizar con esta cuenta.', diff --git a/resources/lang/es_AR/auth.php b/resources/lang/es_AR/auth.php index 4899b3d89..cd616e4bf 100644 --- a/resources/lang/es_AR/auth.php +++ b/resources/lang/es_AR/auth.php @@ -27,7 +27,7 @@ return [ 'email' => 'Correo electrónico', 'password' => 'Contraseña', 'password_confirm' => 'Confirmar contraseña', - 'password_hint' => 'Debe contener al menos 5 caracteres', + 'password_hint' => 'Debe contener al menos 7 caracteres', 'forgot_password' => '¿Olvidó la contraseña?', 'remember_me' => 'Recordarme', 'ldap_email_hint' => 'Por favor introduzca un correo electrónico para utilizar con esta cuenta.', diff --git a/resources/lang/fr/auth.php b/resources/lang/fr/auth.php index c9ce6a4d7..89908c8c4 100644 --- a/resources/lang/fr/auth.php +++ b/resources/lang/fr/auth.php @@ -27,7 +27,7 @@ return [ 'email' => 'E-mail', 'password' => 'Mot de passe', 'password_confirm' => 'Confirmez le mot de passe', - 'password_hint' => 'Doit faire plus de 5 caractères', + 'password_hint' => 'Doit faire plus de 7 caractères', 'forgot_password' => 'Mot de passe oublié ?', 'remember_me' => 'Se souvenir de moi', 'ldap_email_hint' => "Merci d'entrer une adresse e-mail pour ce compte", diff --git a/resources/lang/hu/auth.php b/resources/lang/hu/auth.php index a1809b0de..d96509d05 100644 --- a/resources/lang/hu/auth.php +++ b/resources/lang/hu/auth.php @@ -21,7 +21,7 @@ return [ 'email' => 'Email', 'password' => 'Jelszó', 'password_confirm' => 'Jelszó megerősítése', - 'password_hint' => 'Öt karakternél hosszabbnak kell lennie', + 'password_hint' => 'Négy karakternél hosszabbnak kell lennie', 'forgot_password' => 'Elfelejtett jelszó?', 'remember_me' => 'Emlékezzen rám', 'ldap_email_hint' => 'A fiókhoz használt email cím megadása.', diff --git a/resources/lang/it/auth.php b/resources/lang/it/auth.php index 68fee41a5..59af1fe0d 100755 --- a/resources/lang/it/auth.php +++ b/resources/lang/it/auth.php @@ -27,7 +27,7 @@ return [ 'email' => 'Email', 'password' => 'Password', 'password_confirm' => 'Conferma Password', - 'password_hint' => 'Deve essere più di 5 caratteri', + 'password_hint' => 'Deve essere più di 7 caratteri', 'forgot_password' => 'Password dimenticata?', 'remember_me' => 'Ricordami', 'ldap_email_hint' => 'Inserisci un email per usare quest\'account.', diff --git a/resources/lang/ja/auth.php b/resources/lang/ja/auth.php index 4d5aee8b3..fdfac5f39 100644 --- a/resources/lang/ja/auth.php +++ b/resources/lang/ja/auth.php @@ -27,7 +27,7 @@ return [ 'email' => 'メールアドレス', 'password' => 'パスワード', 'password_confirm' => 'パスワード (確認)', - 'password_hint' => '5文字以上である必要があります', + 'password_hint' => '7文字以上である必要があります', 'forgot_password' => 'パスワードをお忘れですか?', 'remember_me' => 'ログイン情報を保存する', 'ldap_email_hint' => 'このアカウントで使用するEメールアドレスを入力してください。', diff --git a/resources/lang/kr/auth.php b/resources/lang/kr/auth.php index 671ddc654..36534f0d4 100644 --- a/resources/lang/kr/auth.php +++ b/resources/lang/kr/auth.php @@ -27,7 +27,7 @@ return [ 'email' => '이메일', 'password' => '비밀번호', 'password_confirm' => '비밀번호 (확인)', - 'password_hint' => '5자 이상이어야 합니다.', + 'password_hint' => '7자 이상이어야 합니다.', 'forgot_password' => '비밀번호를 잊으셨습니까?', 'remember_me' => '자동로그인', 'ldap_email_hint' => '이 계정에서 사용하는 이메일을 입력해 주세요.', diff --git a/resources/lang/nl/auth.php b/resources/lang/nl/auth.php index 31bd330cc..30dfdd78d 100644 --- a/resources/lang/nl/auth.php +++ b/resources/lang/nl/auth.php @@ -27,7 +27,7 @@ return [ 'email' => 'Email', 'password' => 'Wachtwoord', 'password_confirm' => 'Wachtwoord Bevestigen', - 'password_hint' => 'Minimaal 6 tekens', + 'password_hint' => 'Minimaal 8 tekens', 'forgot_password' => 'Wachtwoord vergeten?', 'remember_me' => 'Mij onthouden', 'ldap_email_hint' => 'Geef een email op waarmee je dit account wilt gebruiken.', diff --git a/resources/lang/pl/auth.php b/resources/lang/pl/auth.php index 5cec651a9..40c458c61 100644 --- a/resources/lang/pl/auth.php +++ b/resources/lang/pl/auth.php @@ -27,7 +27,7 @@ return [ 'email' => 'E-mail', 'password' => 'Hasło', 'password_confirm' => 'Potwierdzenie hasła', - 'password_hint' => 'Musi mieć więcej niż 5 znaków', + 'password_hint' => 'Musi mieć więcej niż 7 znaków', 'forgot_password' => 'Zapomniałem hasła', 'remember_me' => 'Zapamiętaj mnie', 'ldap_email_hint' => 'Wprowadź adres e-mail dla tego konta.', diff --git a/resources/lang/pt_BR/auth.php b/resources/lang/pt_BR/auth.php index 20dc690af..79f743617 100644 --- a/resources/lang/pt_BR/auth.php +++ b/resources/lang/pt_BR/auth.php @@ -21,7 +21,7 @@ return [ 'email' => 'E-mail', 'password' => 'Senha', 'password_confirm' => 'Confirmar Senha', - 'password_hint' => 'Senha deverá ser maior que 5 caracteres', + 'password_hint' => 'Senha deverá ser maior que 7 caracteres', 'forgot_password' => 'Esqueceu a senha?', 'remember_me' => 'Lembrar de mim', 'ldap_email_hint' => 'Por favor, digite um e-mail para essa conta.', diff --git a/resources/lang/ru/auth.php b/resources/lang/ru/auth.php index 3a1fbbf97..c70e85d61 100644 --- a/resources/lang/ru/auth.php +++ b/resources/lang/ru/auth.php @@ -27,7 +27,7 @@ return [ 'email' => 'Email', 'password' => 'Пароль', 'password_confirm' => 'Подтверждение пароля', - 'password_hint' => 'Должен быть больше 5 символов', + 'password_hint' => 'Должен быть больше 7 символов', 'forgot_password' => 'Забыли пароль?', 'remember_me' => 'Запомнить меня', 'ldap_email_hint' => 'Введите email адрес для данной учетной записи.', diff --git a/resources/lang/sk/auth.php b/resources/lang/sk/auth.php index 2fa69ac3e..69004e87a 100644 --- a/resources/lang/sk/auth.php +++ b/resources/lang/sk/auth.php @@ -27,7 +27,7 @@ return [ 'email' => 'Email', 'password' => 'Heslo', 'password_confirm' => 'Potvrdiť heslo', - 'password_hint' => 'Musí mať viac ako 5 znakov', + 'password_hint' => 'Musí mať viac ako 7 znakov', 'forgot_password' => 'Zabudli ste heslo?', 'remember_me' => 'Zapamätať si ma', 'ldap_email_hint' => 'Zadajte prosím email, ktorý sa má použiť pre tento účet.', diff --git a/resources/lang/sv/auth.php b/resources/lang/sv/auth.php index 30e1a1937..4eb2be028 100644 --- a/resources/lang/sv/auth.php +++ b/resources/lang/sv/auth.php @@ -27,7 +27,7 @@ return [ 'email' => 'E-post', 'password' => 'Lösenord', 'password_confirm' => 'Bekräfta lösenord', - 'password_hint' => 'Måste vara fler än 5 tecken', + 'password_hint' => 'Måste vara fler än 7 tecken', 'forgot_password' => 'Glömt lösenord?', 'remember_me' => 'Kom ihåg mig', 'ldap_email_hint' => 'Vänligen ange en e-postadress att använda till kontot.', diff --git a/resources/lang/uk/auth.php b/resources/lang/uk/auth.php index cd73f92db..32b35a156 100644 --- a/resources/lang/uk/auth.php +++ b/resources/lang/uk/auth.php @@ -21,7 +21,7 @@ return [ 'email' => 'Email', 'password' => 'Пароль', 'password_confirm' => 'Підтвердження пароля', - 'password_hint' => 'Має бути більше 5 символів', + 'password_hint' => 'Має бути більше 7 символів', 'forgot_password' => 'Забули пароль?', 'remember_me' => 'Запам’ятати мене', 'ldap_email_hint' => 'Введіть email для цього облікового запису.', diff --git a/resources/lang/zh_CN/auth.php b/resources/lang/zh_CN/auth.php index 046f2360b..f4159826c 100644 --- a/resources/lang/zh_CN/auth.php +++ b/resources/lang/zh_CN/auth.php @@ -27,7 +27,7 @@ return [ 'email' => 'Email地址', 'password' => '密码', 'password_confirm' => '确认密码', - 'password_hint' => '必须超过5个字符', + 'password_hint' => '必须超过7个字符', 'forgot_password' => '忘记密码?', 'remember_me' => '记住我', 'ldap_email_hint' => '请输入用于此帐户的电子邮件。', diff --git a/resources/lang/zh_TW/auth.php b/resources/lang/zh_TW/auth.php index f44ac8af0..9e7fcd036 100644 --- a/resources/lang/zh_TW/auth.php +++ b/resources/lang/zh_TW/auth.php @@ -27,7 +27,7 @@ return [ 'email' => 'Email位址', 'password' => '密碼', 'password_confirm' => '確認密碼', - 'password_hint' => '必須超過5個字元', + 'password_hint' => '必須超過7個字元', 'forgot_password' => '忘記密碼?', 'remember_me' => '記住我', 'ldap_email_hint' => '請輸入用於此帳號的電子郵件。', diff --git a/storage/framework/cache/data/.gitignore b/storage/framework/cache/data/.gitignore deleted file mode 100755 index d6b7ef32c..000000000 --- a/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/tests/Auth/AuthTest.php b/tests/Auth/AuthTest.php index 42b44c152..eb83faded 100644 --- a/tests/Auth/AuthTest.php +++ b/tests/Auth/AuthTest.php @@ -81,7 +81,7 @@ class AuthTest extends BrowserKitTest ->press('Create Account') ->see('The name must be at least 2 characters.') ->see('The email must be a valid email address.') - ->see('The password must be at least 6 characters.') + ->see('The password must be at least 8 characters.') ->seePageIs('/register'); } diff --git a/tests/Auth/LdapTest.php b/tests/Auth/LdapTest.php index 5923ef377..fe28698df 100644 --- a/tests/Auth/LdapTest.php +++ b/tests/Auth/LdapTest.php @@ -15,7 +15,7 @@ class LdapTest extends BrowserKitTest protected $mockUser; protected $resourceId = 'resource-test'; - public function setUp() + public function setUp(): void { parent::setUp(); if (!defined('LDAP_OPT_REFERRALS')) define('LDAP_OPT_REFERRALS', 1); diff --git a/tests/Auth/UserInviteTest.php b/tests/Auth/UserInviteTest.php index 331262690..d200134a5 100644 --- a/tests/Auth/UserInviteTest.php +++ b/tests/Auth/UserInviteTest.php @@ -6,6 +6,7 @@ use BookStack\Auth\User; use BookStack\Notifications\UserInvite; use Carbon\Carbon; use DB; +use Illuminate\Support\Str; use Notification; class UserInviteTest extends TestCase @@ -68,11 +69,13 @@ class UserInviteTest extends TestCase $inviteService->sendInvitation($user); $token = DB::table('user_invites')->where('user_id', '=', $user->id)->first()->token; + $this->get('/register/invite/' . $token); $shortPassword = $this->followingRedirects()->post('/register/invite/' . $token, [ - 'password' => 'mypas', + 'password' => 'mypassw', ]); - $shortPassword->assertSee('The password must be at least 6 characters.'); + $shortPassword->assertSee('The password must be at least 8 characters.'); + $this->get('/register/invite/' . $token); $noPassword = $this->followingRedirects()->post('/register/invite/' . $token, [ 'password' => '', ]); @@ -85,10 +88,10 @@ class UserInviteTest extends TestCase public function test_non_existent_invite_token_redirects_to_home() { - $setPasswordPageResp = $this->get('/register/invite/' . str_random(12)); + $setPasswordPageResp = $this->get('/register/invite/' . Str::random(12)); $setPasswordPageResp->assertRedirect('/'); - $setPasswordResp = $this->post('/register/invite/' . str_random(12), ['password' => 'Password Test']); + $setPasswordResp = $this->post('/register/invite/' . Str::random(12), ['password' => 'Password Test']); $setPasswordResp->assertRedirect('/'); } diff --git a/tests/BrowserKitTest.php b/tests/BrowserKitTest.php index ab0d9d898..b81afe311 100644 --- a/tests/BrowserKitTest.php +++ b/tests/BrowserKitTest.php @@ -21,7 +21,7 @@ abstract class BrowserKitTest extends TestCase */ protected $baseUrl = 'http://localhost'; - public function tearDown() + public function tearDown() : void { \DB::disconnect(); parent::tearDown(); diff --git a/tests/Entity/BookShelfTest.php b/tests/Entity/BookShelfTest.php index 158fb5ca1..5c7673847 100644 --- a/tests/Entity/BookShelfTest.php +++ b/tests/Entity/BookShelfTest.php @@ -4,6 +4,7 @@ use BookStack\Auth\Role; use BookStack\Auth\User; use BookStack\Entities\Book; use BookStack\Entities\Bookshelf; +use Illuminate\Support\Str; class BookShelfTest extends TestCase { @@ -55,8 +56,8 @@ class BookShelfTest extends TestCase { $booksToInclude = Book::take(2)->get(); $shelfInfo = [ - 'name' => 'My test book' . str_random(4), - 'description' => 'Test book description ' . str_random(10) + 'name' => 'My test book' . Str::random(4), + 'description' => 'Test book description ' . Str::random(10) ]; $resp = $this->asEditor()->post('/shelves', array_merge($shelfInfo, [ 'books' => $booksToInclude->implode('id', ','), @@ -120,8 +121,8 @@ class BookShelfTest extends TestCase $booksToInclude = Book::take(2)->get(); $shelfInfo = [ - 'name' => 'My test book' . str_random(4), - 'description' => 'Test book description ' . str_random(10) + 'name' => 'My test book' . Str::random(4), + 'description' => 'Test book description ' . Str::random(10) ]; $resp = $this->asEditor()->put($shelf->getUrl(), array_merge($shelfInfo, [ diff --git a/tests/Entity/CommentSettingTest.php b/tests/Entity/CommentSettingTest.php index 2683f57cb..967e550a7 100644 --- a/tests/Entity/CommentSettingTest.php +++ b/tests/Entity/CommentSettingTest.php @@ -3,7 +3,7 @@ class CommentSettingTest extends BrowserKitTest { protected $page; - public function setUp() { + public function setUp(): void { parent::setUp(); $this->page = \BookStack\Entities\Page::first(); } diff --git a/tests/Entity/ExportTest.php b/tests/Entity/ExportTest.php index e3a74f64d..9a2d32028 100644 --- a/tests/Entity/ExportTest.php +++ b/tests/Entity/ExportTest.php @@ -4,6 +4,7 @@ use BookStack\Entities\Chapter; use BookStack\Entities\Page; use BookStack\Uploads\HttpFetcher; +use Illuminate\Support\Str; class ExportTest extends TestCase { @@ -79,7 +80,7 @@ class ExportTest extends TestCase public function test_book_html_export_shows_chapter_descriptions() { - $chapterDesc = 'My custom test chapter description ' . str_random(12); + $chapterDesc = 'My custom test chapter description ' . Str::random(12); $chapter = Chapter::query()->first(); $chapter->description = $chapterDesc; $chapter->save(); diff --git a/tests/Entity/MarkdownTest.php b/tests/Entity/MarkdownTest.php index c481e444f..5d3af4f6e 100644 --- a/tests/Entity/MarkdownTest.php +++ b/tests/Entity/MarkdownTest.php @@ -4,7 +4,7 @@ class MarkdownTest extends BrowserKitTest { protected $page; - public function setUp() + public function setUp(): void { parent::setUp(); $this->page = \BookStack\Entities\Page::first(); diff --git a/tests/Entity/PageDraftTest.php b/tests/Entity/PageDraftTest.php index f15651f39..f29231c39 100644 --- a/tests/Entity/PageDraftTest.php +++ b/tests/Entity/PageDraftTest.php @@ -8,7 +8,7 @@ class PageDraftTest extends BrowserKitTest protected $page; protected $pageRepo; - public function setUp() + public function setUp(): void { parent::setUp(); $this->page = \BookStack\Entities\Page::first(); diff --git a/tests/Entity/SortTest.php b/tests/Entity/SortTest.php index a3c20e84c..cad6d3c01 100644 --- a/tests/Entity/SortTest.php +++ b/tests/Entity/SortTest.php @@ -10,7 +10,7 @@ class SortTest extends TestCase { protected $book; - public function setUp() + public function setUp(): void { parent::setUp(); $this->book = Book::first(); diff --git a/tests/LanguageTest.php b/tests/LanguageTest.php index d9b8655ee..c8bc44451 100644 --- a/tests/LanguageTest.php +++ b/tests/LanguageTest.php @@ -8,7 +8,7 @@ class LanguageTest extends TestCase /** * LanguageTest constructor. */ - public function setUp() + public function setUp(): void { parent::setUp(); $this->langs = array_diff(scandir(resource_path('lang')), ['..', '.', 'check.php', 'format.php']); diff --git a/tests/Permissions/RestrictionsTest.php b/tests/Permissions/RestrictionsTest.php index a7f681a37..f6e07c0f1 100644 --- a/tests/Permissions/RestrictionsTest.php +++ b/tests/Permissions/RestrictionsTest.php @@ -21,7 +21,7 @@ class RestrictionsTest extends BrowserKitTest */ protected $viewer; - public function setUp() + public function setUp(): void { parent::setUp(); $this->user = $this->getEditor(); diff --git a/tests/Permissions/RolesTest.php b/tests/Permissions/RolesTest.php index a1f193643..371cffc0f 100644 --- a/tests/Permissions/RolesTest.php +++ b/tests/Permissions/RolesTest.php @@ -11,7 +11,7 @@ class RolesTest extends BrowserKitTest { protected $user; - public function setUp() + public function setUp(): void { parent::setUp(); $this->user = $this->getViewer(); diff --git a/tests/Unit/ConfigTest.php b/tests/Unit/ConfigTest.php index 967915af9..ec9967227 100644 --- a/tests/Unit/ConfigTest.php +++ b/tests/Unit/ConfigTest.php @@ -50,11 +50,14 @@ class ConfigTest extends TestCase protected function checkEnvConfigResult(string $envName, $envVal, string $configKey, string $expectedResult) { $originalVal = getenv($envName); + $envString = $envName . (is_null($envVal) ? '' : '=') . ($envVal ?? ''); putenv($envString); $this->refreshApplication(); $this->assertEquals($expectedResult, config($configKey)); - putenv($envString = $envName . (empty($originalVal) ? '' : '=') . ($originalVal ?? '')); + + $envString = $envName . (empty($originalVal) ? '' : '=') . ($originalVal ?? ''); + putenv($envString); } } \ No newline at end of file diff --git a/tests/Unit/PageRepoTest.php b/tests/Unit/PageRepoTest.php index 41e7c2f78..c5e094b63 100644 --- a/tests/Unit/PageRepoTest.php +++ b/tests/Unit/PageRepoTest.php @@ -10,7 +10,7 @@ class PageRepoTest extends TestCase */ protected $pageRepo; - protected function setUp() + protected function setUp(): void { parent::setUp(); $this->pageRepo = app()->make(PageRepo::class); diff --git a/tests/Uploads/ImageTest.php b/tests/Uploads/ImageTest.php index f92653378..4d3e8a498 100644 --- a/tests/Uploads/ImageTest.php +++ b/tests/Uploads/ImageTest.php @@ -4,6 +4,7 @@ use BookStack\Entities\Repos\PageRepo; use BookStack\Uploads\Image; use BookStack\Entities\Page; use BookStack\Uploads\ImageService; +use Illuminate\Support\Str; use Tests\TestCase; class ImageTest extends TestCase @@ -43,7 +44,7 @@ class ImageTest extends TestCase $imgDetails = $this->uploadGalleryImage(); $image = Image::query()->first(); - $newName = str_random(); + $newName = Str::random(); $update = $this->put('/images/' . $image->id, ['name' => $newName]); $update->assertSuccessful(); $update->assertJson([ @@ -89,7 +90,7 @@ class ImageTest extends TestCase $searchHitRequest = $this->get("/images/gallery?page=1&uploaded_to={$pageId}&search={$namePartial}"); $searchHitRequest->assertSuccessful()->assertJson($resultJson); - $namePartial = str_random(16); + $namePartial = Str::random(16); $searchHitRequest = $this->get("/images/gallery?page=1&uploaded_to={$pageId}&search={$namePartial}"); $searchHitRequest->assertSuccessful()->assertExactJson($emptyJson); } @@ -208,7 +209,7 @@ class ImageTest extends TestCase $encodedImageContent = base64_encode(file_get_contents($expectedPath)); $export = $this->get($page->getUrl('/export/html')); - $this->assertTrue(str_contains($export->getContent(), $encodedImageContent), 'Uploaded image in export content'); + $this->assertTrue(strpos($export->getContent(), $encodedImageContent) !== false, 'Uploaded image in export content'); if (file_exists($expectedPath)) { unlink($expectedPath); diff --git a/tests/UserProfileTest.php b/tests/UserProfileTest.php index a7c7505a8..fc1a529ae 100644 --- a/tests/UserProfileTest.php +++ b/tests/UserProfileTest.php @@ -4,7 +4,7 @@ class UserProfileTest extends BrowserKitTest { protected $user; - public function setUp() + public function setUp(): void { parent::setUp(); $this->user = \BookStack\Auth\User::all()->last();