1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2025-12-12 21:54:03 +00:00

Merge pull request #14 from stancl/add-testing

Add testing
This commit is contained in:
Samuel Štancl 2019-02-02 00:15:57 +01:00 committed by GitHub
commit 0adbfee86e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 176 additions and 1 deletions

17
.travis.yml Normal file
View file

@ -0,0 +1,17 @@
language: php
php:
- '7.1'
- '7.2'
branches:
only:
- master
install:
- travis_retry composer install --no-interaction
script: vendor/bin/phpunit --coverage-clover=coverage.xml
after_success:
- export CODECOV_TOKEN="24382d15-84e7-4a55-bea4-c4df96a24a9b"
- bash <(curl -s https://codecov.io/bash)

View file

@ -2,6 +2,8 @@
![Laravel 5.7](https://img.shields.io/badge/laravel-5.7-red.svg)
![Beta - experimental](https://img.shields.io/badge/beta-experimental-yellow.svg)
![Travis CI build](https://travis-ci.com/stancl/tenancy.svg?branch=master)
![Code coverage](https://codecov.io/gh/stancl/tenancy/branch/master/graph/badge.svg)
### *A Laravel multi-database tenancy implementation that respects your code.*

View file

@ -13,6 +13,10 @@
"illuminate/support": "^5.7",
"webpatser/laravel-uuid": "^3.0"
},
"require-dev": {
"orchestra/testbench": "~3.0",
"laravel/framework": "5.7.*"
},
"autoload": {
"psr-4": {
"Stancl\\Tenancy\\": "src/"
@ -21,6 +25,11 @@
"src/helpers.php"
]
},
"autoload-dev": {
"psr-4": {
"Stancl\\Tenancy\\Tests\\": "tests/"
}
},
"extra": {
"laravel": {
"providers": [

31
phpunit.xml Normal file
View file

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="vendor/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false">
<testsuites>
<testsuite name="Unit">
<directory suffix="Test.php">./tests</directory>
</testsuite>
</testsuites>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">./app</directory>
</whitelist>
</filter>
<php>
<env name="APP_ENV" value="testing"/>
<env name="BCRYPT_ROUNDS" value="4"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="MAIL_DRIVER" value="array"/>
<env name="QUEUE_CONNECTION" value="sync"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="DB_CONNECTION" value="sqlite"/>
<env name="DB_DATABASE" value=":memory:"/>
</php>
</phpunit>

View file

@ -9,7 +9,8 @@ class TenantRouteServiceProvider extends RouteServiceProvider
{
public function map()
{
if (! in_array(request()->getHost(), $this->app['config']['tenancy.exempt_domains'] ?? [])) {
if (! in_array(request()->getHost(), $this->app['config']['tenancy.exempt_domains'] ?? [])
&& file_exists(base_path('routes/tenant.php'))) {
Route::middleware(['web', 'tenancy'])
->namespace($this->app['config']['tenant_route_namespace'] ?? 'App\Http\Controllers')
->group(base_path('routes/tenant.php'));

View file

@ -0,0 +1,81 @@
<?php
namespace Stancl\Tenancy\Testing;
use Illuminate\Foundation\Http\Kernel;
class HttpKernel extends Kernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\App\Http\Middleware\TrustProxies::class,
];
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'tenancy' => [
\Stancl\Tenancy\Middleware\InitializeTenancy::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'tenancy' => \Stancl\Tenancy\Middleware\InitializeTenancy::class,
];
/**
* The priority-sorted list of middleware.
*
* This forces non-global middleware to always be in the given order.
*
* @var array
*/
protected $middlewarePriority = [
\Stancl\Tenancy\Middleware\InitializeTenancy::class,
];
}

34
tests/TestCase.php Normal file
View file

@ -0,0 +1,34 @@
<?php
namespace Stancl\Tenancy\Tests;
class TestCase extends \Orchestra\Testbench\TestCase
{
/**
* Setup the test environment
*
* @return void
*/
protected function setUp()
{
parent::setUp();
//
}
protected function getPackageProviders($app)
{
return [\Stancl\Tenancy\TenancyServiceProvider::class];
}
/**
* Resolve application HTTP Kernel implementation.
*
* @param \Illuminate\Foundation\Application $app
* @return void
*/
protected function resolveApplicationHttpKernel($app)
{
$app->singleton('Illuminate\Contracts\Http\Kernel', \Stancl\Tenancy\Testing\HttpKernel::class);
}
}