diff --git a/app/Http/Controllers/SettingController.php b/app/Http/Controllers/SettingController.php index 8e63cc54..ff27e017 100644 --- a/app/Http/Controllers/SettingController.php +++ b/app/Http/Controllers/SettingController.php @@ -76,23 +76,26 @@ class SettingController extends Controller */ public function set_email(Request $request) { - // Check if is demo + // TODO: pridat validator do requestu if (env('APP_DEMO')) { return Demo::response_204(); } - setEnvironmentValue([ - 'MAIL_DRIVER' => $request->input('driver'), - 'MAIL_HOST' => $request->input('host'), - 'MAIL_PORT' => $request->input('port'), - 'MAIL_USERNAME' => $request->input('username'), - 'MAIL_PASSWORD' => $request->input('password'), - 'MAIL_ENCRYPTION' => $request->input('encryption'), - ]); + if (!app()->runningUnitTests()) { - // Clear config cache - Artisan::call('config:clear'); - Artisan::call('config:cache'); + setEnvironmentValue([ + 'MAIL_DRIVER' => $request->input('driver'), + 'MAIL_HOST' => $request->input('host'), + 'MAIL_PORT' => $request->input('port'), + 'MAIL_USERNAME' => $request->input('username'), + 'MAIL_PASSWORD' => $request->input('password'), + 'MAIL_ENCRYPTION' => $request->input('encryption'), + ]); + + // Clear config cache + Artisan::call('config:clear'); + Artisan::call('config:cache'); + } return response('Done', 204); } @@ -104,24 +107,27 @@ class SettingController extends Controller */ public function set_stripe(Request $request) { - // Get stripe status - $is_stripe = get_setting('payments_configured'); - - // Check setup status - if ($is_stripe) abort(401, 'Gone'); - - // Create stripe instance - $stripe = Stripe::make($request->secret, '2020-03-02'); + // TODO: pridat validator do requestu + // Check payment setup status + if (get_setting('payments_configured')) { + abort(401, 'Gone'); + } // Try to get stripe account details try { - $stripe->account()->details(); + if (!app()->runningUnitTests()) { + + Stripe::make($request->secret, '2020-03-02') + ->account() + ->details(); + } } catch (UnauthorizedException $e) { + throw new HttpException(401, $e->getMessage()); } // Get options - $settings = collect([ + collect([ [ 'name' => 'stripe_currency', 'value' => $request->currency, @@ -134,24 +140,29 @@ class SettingController extends Controller 'name' => 'payments_active', 'value' => 1, ], - ]); - - // Store options - $settings->each(function ($col) { - Setting::updateOrCreate(['name' => $col['name']], $col); + ])->each(function ($col) { + Setting::forceCreate([ + 'name' => $col['name'], + 'value' => $col['value'], + ]); }); - // Set stripe credentials to .env - setEnvironmentValue([ - 'CASHIER_CURRENCY' => $request->currency, - 'STRIPE_KEY' => $request->key, - 'STRIPE_SECRET' => $request->secret, - 'STRIPE_WEBHOOK_SECRET' => $request->webhookSecret, - ]); + if (!app()->runningUnitTests()) { - // Clear cache - Artisan::call('cache:clear'); - Artisan::call('config:clear'); - Artisan::call('config:cache'); + // Set stripe credentials to .env + setEnvironmentValue([ + 'CASHIER_CURRENCY' => $request->currency, + 'STRIPE_KEY' => $request->key, + 'STRIPE_SECRET' => $request->secret, + 'STRIPE_WEBHOOK_SECRET' => $request->webhookSecret, + ]); + + // Clear cache + Artisan::call('cache:clear'); + Artisan::call('config:clear'); + Artisan::call('config:cache'); + } + + return response('Done', 204); } } diff --git a/config/content.php b/config/content.php index 9486bc4d..da9dd362 100644 --- a/config/content.php +++ b/config/content.php @@ -95,19 +95,19 @@ return [ 'extended' => [ [ 'name' => 'section_features', - 'value' => '1', + 'value' => 1, ], [ 'name' => 'section_feature_boxes', - 'value' => '1', + 'value' => 1, ], [ 'name' => 'section_pricing_content', - 'value' => '1', + 'value' => 1, ], [ 'name' => 'section_get_started', - 'value' => '1', + 'value' => 1, ], [ 'name' => 'header_title', diff --git a/tests/Feature/AdminTest.php b/tests/Feature/AdminTest.php index 3657148c..baf86730 100644 --- a/tests/Feature/AdminTest.php +++ b/tests/Feature/AdminTest.php @@ -4,14 +4,12 @@ namespace Tests\Feature; use App\Models\File; use App\Models\Folder; -use App\Models\Page; use App\Models\Setting; use App\Models\Share; use App\Models\User; use App\Models\Zip; use App\Notifications\ResetPassword; use App\Services\SetupService; -use Carbon\Carbon; use DB; use Illuminate\Foundation\Testing\DatabaseMigrations; use Illuminate\Http\UploadedFile; @@ -485,6 +483,21 @@ class AdminTest extends TestCase ]); } + /** + * @test + */ + public function it_get_settings() + { + $this->setup->seed_default_settings('Extended'); + + $this->getJson('/api/admin/settings?column=section_features|section_feature_boxes') + ->assertStatus(200) + ->assertJsonFragment([ + 'section_features' => '1', + 'section_feature_boxes' => '1', + ]); + } + /** * @test */ @@ -541,4 +554,47 @@ class AdminTest extends TestCase $this->getJson('/api/admin/settings/flush-cache') ->assertStatus(204); } + + /** + * @test + */ + public function it_set_stripe() + { + $this->postJson('/api/admin/settings/stripe', [ + 'currency' => 'EUR', + 'key' => '123456789', + 'secret' => '123456789', + 'webhookSecret' => '123456789', + ])->assertStatus(204); + + $this->assertDatabaseHas('settings', [ + 'name' => 'stripe_currency', + 'value' => 'EUR', + ]); + + $this->assertDatabaseHas('settings', [ + 'name' => 'payments_configured', + 'value' => 1, + ]); + + $this->assertDatabaseHas('settings', [ + 'name' => 'payments_active', + 'value' => 1, + ]); + } + + /** + * @test + */ + public function it_set_email() + { + $this->postJson('/api/admin/settings/email', [ + 'driver' => 'smtp', + 'host' => 'smtp.email.com', + 'port' => 25, + 'username' => 'john@doe.com', + 'password' => 'secret', + 'encryption' => 'tls', + ])->assertStatus(204); + } }