From 4e51256b51e4ccbb33bf7350ce2423e71c5847ef Mon Sep 17 00:00:00 2001 From: David Bomba Date: Thu, 3 Oct 2019 10:17:29 +1000 Subject: [PATCH] Company Logo upload test --- app/Exceptions/Handler.php | 5 ++ app/Http/Controllers/CompanyController.php | 2 + app/Policies/CompanyPolicy.php | 2 +- app/Transformers/PaymentTransformer.php | 4 +- tests/Integration/UploadLogoTest.php | 69 ++++++++++++++++++++++ 5 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 tests/Integration/UploadLogoTest.php diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 84c444a9170b..15087776d02f 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -12,6 +12,7 @@ namespace App\Exceptions; use Exception; +use Illuminate\Auth\Access\AuthorizationException; use Illuminate\Auth\AuthenticationException; use Illuminate\Database\Eloquent\ModelNotFoundException as ModelNotFoundException; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; @@ -78,6 +79,10 @@ class Handler extends ExceptionHandler { return response()->json(['message'=>'Fatal error', 500]); } + else if($exception instanceof AuthorizationException) + { + return response()->json(['message'=>'You are not authorized to view or perform this action',401]); + } else if ($exception instanceof \Illuminate\Session\TokenMismatchException) { return redirect() diff --git a/app/Http/Controllers/CompanyController.php b/app/Http/Controllers/CompanyController.php index 6ad501635b80..61749012f6c5 100644 --- a/app/Http/Controllers/CompanyController.php +++ b/app/Http/Controllers/CompanyController.php @@ -106,6 +106,7 @@ class CompanyController extends BaseController if($request->file('logo')) { + \Log::error('logo exists'); $path = UploadAvatar::dispatchNow($request->file('logo'), $company->company_key); if($path){ @@ -185,6 +186,7 @@ class CompanyController extends BaseController if($request->file('logo')) { + \Log::error('logo exists'); $path = UploadAvatar::dispatchNow($request->file('logo'), $company->company_key); if($path){ diff --git a/app/Policies/CompanyPolicy.php b/app/Policies/CompanyPolicy.php index 698139b820bf..33288ee3ce43 100644 --- a/app/Policies/CompanyPolicy.php +++ b/app/Policies/CompanyPolicy.php @@ -62,7 +62,7 @@ class CompanyPolicy extends EntityPolicy */ public function edit(User $user, $entity) : bool { - + return ($user->isAdmin() && $entity->id == $user->companyId()) || ($user->hasPermission('edit_' . strtolower(class_basename($entity))) && $entity->id == $user->companyId()) || $user->owns($entity); diff --git a/app/Transformers/PaymentTransformer.php b/app/Transformers/PaymentTransformer.php index 091c7a6c703a..4190fa0ede44 100644 --- a/app/Transformers/PaymentTransformer.php +++ b/app/Transformers/PaymentTransformer.php @@ -58,8 +58,8 @@ class PaymentTransformer extends EntityTransformer 'amount' => (float) $payment->amount, 'transaction_reference' => $payment->transaction_reference ?: '', 'payment_date' => $payment->payment_date ?: '', - 'updated_at' => $this->getTimestamp($payment->updated_at), - 'archived_at' => $this->getTimestamp($payment->deleted_at), + 'updated_at' => $payment->updated_at, + 'archived_at' => $payment->deleted_at, 'is_deleted' => (bool) $payment->is_deleted, 'payment_type_id' => (string) $payment->payment_type_id ?: '', 'invitation_id' => (string) $payment->invitation_id ?: '', diff --git a/tests/Integration/UploadLogoTest.php b/tests/Integration/UploadLogoTest.php new file mode 100644 index 000000000000..07f9448855ab --- /dev/null +++ b/tests/Integration/UploadLogoTest.php @@ -0,0 +1,69 @@ +makeTestData(); + } + + + public function testLogoUploadWorks() + { + + Storage::fake('avatars'); + + $data = [ + 'logo' => UploadedFile::fake()->image('avatar.jpg'), + 'name' => 'TestCompany' + ]; + + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $this->token, + ])->put('/api/v1/companies/'.$this->encodePrimaryKey($this->company->id), $data); + + $response->assertStatus(200); + $acc = $response->json(); + $logo = $acc['data']['logo']; + + $logo_file = Storage::url($logo); + + $this->assertNotNull($logo_file); + } + + + +} \ No newline at end of file