added SetupWizardTest skelet

This commit is contained in:
Peter Papp
2021-03-05 19:56:00 +01:00
parent 4c947a0e4d
commit 485dddec68
7 changed files with 128 additions and 58 deletions

View File

@@ -8,9 +8,9 @@ use App\Http\Resources\PlanResource;
use App\Http\Resources\UserResource; use App\Http\Resources\UserResource;
use App\Http\Resources\UsersCollection; use App\Http\Resources\UsersCollection;
use App\Http\Tools\Demo; use App\Http\Tools\Demo;
use App\Plan; use App\Models\Plan;
use App\Services\StripeService; use App\Services\StripeService;
use App\User; use App\Models\User;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;
use Laravel\Cashier\Subscription; use Laravel\Cashier\Subscription;
@@ -69,11 +69,10 @@ class PlanController extends Controller
* Create new plan * Create new plan
* *
* @param Request $request * @param Request $request
* @return PlanResource * @return PlanResource|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
*/ */
public function store(Request $request) public function store(Request $request)
{ {
// Check if is demo
if (env('APP_DEMO')) { if (env('APP_DEMO')) {
if (Cache::has('plan-starter-pack')) { if (Cache::has('plan-starter-pack')) {
@@ -94,7 +93,7 @@ class PlanController extends Controller
// Clear cached plans // Clear cached plans
cache_forget_many(['plans', 'pricing']); cache_forget_many(['plans', 'pricing']);
return $plan; return response($plan, 201);
} }
/** /**
@@ -106,7 +105,6 @@ class PlanController extends Controller
*/ */
public function update(Request $request, $id) public function update(Request $request, $id)
{ {
// Check if is demo
if (env('APP_DEMO')) { if (env('APP_DEMO')) {
return Demo::response_204(); return Demo::response_204();
} }
@@ -128,7 +126,6 @@ class PlanController extends Controller
*/ */
public function delete($id) public function delete($id)
{ {
// Check if is demo
if (env('APP_DEMO')) { if (env('APP_DEMO')) {
return Demo::response_204(); return Demo::response_204();
} }
@@ -150,7 +147,8 @@ class PlanController extends Controller
*/ */
public function subscribers($id) public function subscribers($id)
{ {
$subscribers = Subscription::where('stripe_plan', $id)->pluck('user_id'); $subscribers = Subscription::where('stripe_plan', $id)
->pluck('user_id');
return new UsersCollection( return new UsersCollection(
User::sortable()->findMany($subscribers) User::sortable()->findMany($subscribers)

View File

@@ -10,12 +10,11 @@ use App\Http\Requests\SetupWizard\StoreEnvironmentSetupRequest;
use App\Http\Requests\SetupWizard\StoreStripeBillingRequest; use App\Http\Requests\SetupWizard\StoreStripeBillingRequest;
use App\Http\Requests\SetupWizard\StoreStripeCredentialsRequest; use App\Http\Requests\SetupWizard\StoreStripeCredentialsRequest;
use App\Http\Requests\SetupWizard\StoreStripePlansRequest; use App\Http\Requests\SetupWizard\StoreStripePlansRequest;
use App\Page;
use App\Services\SetupService; use App\Services\SetupService;
use App\Services\StripeService; use App\Services\StripeService;
use App\Setting; use App\Models\Setting;
use App\User; use App\Models\User;
use App\UserSettings; use App\Models\UserSettings;
use Artisan; use Artisan;
use Cartalyst\Stripe\Exception\UnauthorizedException; use Cartalyst\Stripe\Exception\UnauthorizedException;
use Doctrine\DBAL\Driver\PDOException; use Doctrine\DBAL\Driver\PDOException;
@@ -105,7 +104,7 @@ class SetupWizardController extends Controller
$this->set_up_application(); $this->set_up_application();
// Store setup wizard progress // Store setup wizard progress
Setting::create([ Setting::forceCreate([
'name' => 'setup_wizard_database', 'name' => 'setup_wizard_database',
'value' => 1, 'value' => 1,
]); ]);
@@ -135,7 +134,7 @@ class SetupWizardController extends Controller
} }
// Get options // Get options
$settings = collect([ collect([
[ [
'name' => 'stripe_currency', 'name' => 'stripe_currency',
'value' => $request->currency, 'value' => $request->currency,
@@ -148,11 +147,11 @@ class SetupWizardController extends Controller
'name' => 'payments_active', 'name' => 'payments_active',
'value' => 1, 'value' => 1,
], ],
]); ])->each(function ($col) {
Setting::forceCreate([
// Store options 'name' => $col['name'],
$settings->each(function ($col) { 'value' => $col['value'],
Setting::updateOrCreate(['name' => $col['name']], $col); ]);
}); });
// Set stripe credentials to .env // Set stripe credentials to .env
@@ -181,7 +180,7 @@ class SetupWizardController extends Controller
if ($this->get_setup_status()) abort(410, 'Gone'); if ($this->get_setup_status()) abort(410, 'Gone');
// Get options // Get options
$settings = collect([ collect([
[ [
'name' => 'billing_phone_number', 'name' => 'billing_phone_number',
'value' => $request->billing_phone_number, 'value' => $request->billing_phone_number,
@@ -214,11 +213,11 @@ class SetupWizardController extends Controller
'name' => 'billing_name', 'name' => 'billing_name',
'value' => $request->billing_name, 'value' => $request->billing_name,
], ],
]); ])->each(function ($col) {
Setting::forceCreate([
// Store options 'name' => $col['name'],
$settings->each(function ($col) { 'value' => $col['value'],
Setting::updateOrCreate(['name' => $col['name']], $col); ]);
}); });
// Clear cache // Clear cache
@@ -350,7 +349,7 @@ class SetupWizardController extends Controller
} }
// Get options // Get options
$settings = collect([ collect([
[ [
'name' => 'app_title', 'name' => 'app_title',
'value' => $request->title, 'value' => $request->title,
@@ -391,11 +390,11 @@ class SetupWizardController extends Controller
'name' => 'storage_default', 'name' => 'storage_default',
'value' => $request->defaultStorage ? $request->defaultStorage : 5, 'value' => $request->defaultStorage ? $request->defaultStorage : 5,
], ],
]); ])->each(function ($col) {
Setting::forceCreate([
// Store options 'name' => $col['name'],
$settings->each(function ($col) { 'value' => $col['value'],
Setting::updateOrCreate(['name' => $col['name']], $col); ]);
}); });
setEnvironmentValue([ setEnvironmentValue([
@@ -428,7 +427,7 @@ class SetupWizardController extends Controller
// Store avatar // Store avatar
if ($request->hasFile('avatar')) { if ($request->hasFile('avatar')) {
$avatar = store_avatar($request->file('avatar'), 'avatars'); $avatar = store_avatar($request->file('avatar'));
} }
// Create user // Create user
@@ -440,32 +439,32 @@ class SetupWizardController extends Controller
'password' => Hash::make($request->password), 'password' => Hash::make($request->password),
]); ]);
// Get default storage capacity $user
$storage_capacity = Setting::where('name', 'storage_default')->first(); ->settings()
->create([
'user_id' => $user->id,
'storage_capacity' => get_setting('storage_default'),
]);
// Create settings collect([
UserSettings::forceCreate([ [
'user_id' => $user->id, 'name' => 'setup_wizard_success',
'storage_capacity' => $storage_capacity->value, 'value' => 1,
]); ],
[
// Store setup wizard progress 'name' => 'license',
Setting::updateOrCreate([ 'value' => $request->license,
'name' => 'setup_wizard_success', ],
'value' => 1, [
]); 'name' => 'purchase_code',
'value' => $request->purchase_code,
// Store License ]
Setting::updateOrCreate([ ])->each(function ($col) {
'name' => 'license', Setting::forceCreate([
'value' => $request->license, 'name' => $col['name'],
]); 'value' => $col['value'],
]);
// Store Purchase Code });
Setting::updateOrCreate([
'name' => 'purchase_code',
'value' => $request->purchase_code,
]);
// Retrieve access token // Retrieve access token
$response = Route::dispatch(self::make_login_request($request)); $response = Route::dispatch(self::make_login_request($request));
@@ -532,7 +531,7 @@ class SetupWizardController extends Controller
DB::getPdo(); DB::getPdo();
// Get setup_wizard status // Get setup_wizard status
return Schema::hasTable('settings') ? Setting::where('name', 'setup_wizard_success')->first() : false; return Schema::hasTable('settings') ? get_setting('setup_wizard_success') : false;
} catch (PDOException $e) { } catch (PDOException $e) {

View File

@@ -29,6 +29,7 @@ Route::group(['prefix' => 'users'], function () {
}); });
// Plans // Plans
// TODO: testy
Route::group(['prefix' => 'plans'], function () { Route::group(['prefix' => 'plans'], function () {
Route::get('/{id}/subscribers', [PlanController::class, 'subscribers']); Route::get('/{id}/subscribers', [PlanController::class, 'subscribers']);
Route::patch('/{id}/update', [PlanController::class, 'update']); Route::patch('/{id}/update', [PlanController::class, 'update']);
@@ -46,6 +47,7 @@ Route::group(['prefix' => 'pages'], function () {
}); });
// Invoices // Invoices
// TODO: testy
Route::group(['prefix' => 'invoices'], function () { Route::group(['prefix' => 'invoices'], function () {
Route::get('/{token}', [InvoiceController::class, 'show']); Route::get('/{token}', [InvoiceController::class, 'show']);
Route::get('/', [InvoiceController::class, 'index']); Route::get('/', [InvoiceController::class, 'index']);

View File

@@ -2,6 +2,7 @@
use App\Http\Controllers\General\SetupWizardController; use App\Http\Controllers\General\SetupWizardController;
// TODO: testy
Route::post('/purchase-code', [SetupWizardController::class, 'verify_purchase_code']); Route::post('/purchase-code', [SetupWizardController::class, 'verify_purchase_code']);
Route::post('/database', [SetupWizardController::class, 'setup_database']); Route::post('/database', [SetupWizardController::class, 'setup_database']);
Route::post('/stripe-credentials', [SetupWizardController::class, 'store_stripe_credentials']); Route::post('/stripe-credentials', [SetupWizardController::class, 'store_stripe_credentials']);

View File

@@ -5,6 +5,7 @@ use App\Http\Controllers\User\AccountController;
use App\Http\Controllers\User\PaymentMethodsController; use App\Http\Controllers\User\PaymentMethodsController;
use App\Http\Controllers\User\SubscriptionController; use App\Http\Controllers\User\SubscriptionController;
// TODO: testy
Route::post('/check', [AuthController::class, 'check_account']); Route::post('/check', [AuthController::class, 'check_account']);
Route::post('/register', [AuthController::class, 'register']); Route::post('/register', [AuthController::class, 'register']);
Route::post('/login', [AuthController::class, 'login']); Route::post('/login', [AuthController::class, 'login']);
@@ -20,6 +21,7 @@ Route::group(['middleware' => ['auth:sanctum']], function () {
Route::get('/', [AccountController::class, 'user']); Route::get('/', [AccountController::class, 'user']);
// Payment cards // Payment cards
// TODO: testy
Route::delete('/payment-cards/{id}', [PaymentMethodsController::class, 'delete']); Route::delete('/payment-cards/{id}', [PaymentMethodsController::class, 'delete']);
Route::patch('/payment-cards/{id}', [PaymentMethodsController::class, 'update']); Route::patch('/payment-cards/{id}', [PaymentMethodsController::class, 'update']);
Route::post('/payment-cards', [PaymentMethodsController::class, 'store']); Route::post('/payment-cards', [PaymentMethodsController::class, 'store']);

View File

@@ -9,10 +9,12 @@ use App\Http\Controllers\WebhookController;
Route::post('/stripe/webhook', [WebhookController::class, 'handleWebhook']); Route::post('/stripe/webhook', [WebhookController::class, 'handleWebhook']);
// App public files // App public files
// TODO: testy
Route::get('/avatars/{avatar}', [FileAccessController::class, 'get_avatar'])->name('avatar'); Route::get('/avatars/{avatar}', [FileAccessController::class, 'get_avatar'])->name('avatar');
Route::get('/system/{image}', [FileAccessController::class, 'get_system_image']); Route::get('/system/{image}', [FileAccessController::class, 'get_system_image']);
// Get public thumbnails and files // Get public thumbnails and files
// TODO: testy
Route::get('/thumbnail/{name}/public/{token}', [FileAccessController::class, 'get_thumbnail_public']); Route::get('/thumbnail/{name}/public/{token}', [FileAccessController::class, 'get_thumbnail_public']);
Route::get('/file/{name}/public/{token}', [FileAccessController::class, 'get_file_public']); Route::get('/file/{name}/public/{token}', [FileAccessController::class, 'get_file_public']);
Route::get('/zip/{id}/public/{token}', [FileAccessController::class, 'get_zip_public'])->name('zip_public'); Route::get('/zip/{id}/public/{token}', [FileAccessController::class, 'get_zip_public'])->name('zip_public');

View File

@@ -0,0 +1,66 @@
<?php
namespace Tests\Feature;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;
class SetupWizardTest extends TestCase
{
/**
* @test
*/
public function it_verify_purchase_code()
{
}
/**
* @test
*/
public function it_setup_database()
{
}
/**
* @test
*/
public function it_store_stripe_credentials()
{
}
/**
* @test
*/
public function it_store_stripe_billings()
{
}
/**
* @test
*/
public function it_store_stripe_plans()
{
}
/**
* @test
*/
public function it_store_app_settings()
{
}
/**
* @test
*/
public function it_create_admin_account()
{
}
}