From 1b39ee8bdab58055b5fbdad3d86ee63df956a2cd Mon Sep 17 00:00:00 2001 From: Too Date: Tue, 19 Jun 2018 16:46:32 +0800 Subject: [PATCH 1/2] Add admin auth middleware --- routes/api.php | 96 ++++++++++++++++++----------------- tests/Feature/BookingTest.php | 3 +- 2 files changed, 50 insertions(+), 49 deletions(-) diff --git a/routes/api.php b/routes/api.php index 01baa55b..38322b8f 100644 --- a/routes/api.php +++ b/routes/api.php @@ -18,77 +18,79 @@ Use App\SettingSupplier; */ Route::middleware('auth:api')->get('/user', function (Request $request) { - return $request->user(); + return $request->user(); }); - //Route::middleware('auth:api')->get('/user', function (Request $request) { // return $request->user(); //}); Route::group(['middleware' => 'auth:api'], function () { - Route::post('logout', 'Auth\LoginController@logout'); + Route::post('logout', 'Auth\LoginController@logout'); - /*Route for the booking */ - Route::get('/booking', 'BookingController@index'); - Route::get('/booking/{book_id}', 'BookingController@show'); - Route::put('/booking/{book_id}', 'BookingController@update'); - Route::delete('/booking/{book_id}', 'BookingController@delete'); - Route::post('/booking', 'BookingController@store'); - Route::post('/booking/calculation', 'BookingController@calculation'); - Route::post('/booking/{book_id}/cancel', 'BookingController@cancel'); - Route::post('/booking/{id}/upload-user-bankslip', 'BookingController@uploadbankslip'); - Route::post('/booking/{id}/upload-po', 'BookingController@uploadPurchaseOrder'); - Route::patch('/booking/{id}/bankslip-amount', 'BookingController@updateBankSlipAmount'); - Route::post('booking/{book_id}/approve-bank-slip','BookingController@approveBankSlip'); - Route::get('/user', 'UserController@show'); + /*Route for the booking */ + Route::get('/booking', 'BookingController@index'); + Route::get('/booking/{book_id}', 'BookingController@show'); + Route::put('/booking/{book_id}', 'BookingController@update'); + Route::delete('/booking/{book_id}', 'BookingController@delete'); + Route::post('/booking', 'BookingController@store'); + Route::post('/booking/calculation', 'BookingController@calculation'); + Route::post('/booking/{book_id}/cancel', 'BookingController@cancel'); + Route::post('/booking/{id}/upload-user-bankslip', 'BookingController@uploadbankslip'); + Route::post('/booking/{id}/upload-po', 'BookingController@uploadPurchaseOrder'); + Route::patch('/booking/{id}/bankslip-amount', 'BookingController@updateBankSlipAmount'); + Route::post('booking/{book_id}/reject-bank-slip','BookingController@rejectBankSlip'); + Route::post('booking/{book_id}/approve-bank-slip','BookingController@approveBankSlip'); + Route::post('booking/{book_id}/cancel', 'BookingController@cancel'); + Route::get('/user', 'UserController@show'); }); - Route::patch('settings/profile', 'Settings\ProfileController@update'); - Route::patch('settings/password', 'Settings\PasswordController@update'); + Route::patch('settings/profile', 'Settings\ProfileController@update'); + Route::patch('settings/password', 'Settings\PasswordController@update'); Route::group(['middleware' => 'guest:api'], function () { - Route::post('login', 'Auth\LoginController@login'); - Route::post('register', 'Auth\RegisterController@register'); - Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail'); - Route::post('password/reset', 'Auth\ResetPasswordController@reset'); + Route::post('login', 'Auth\LoginController@login'); + Route::post('register', 'Auth\RegisterController@register'); + Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail'); + Route::post('password/reset', 'Auth\ResetPasswordController@reset'); - Route::post('oauth/{driver}', 'Auth\OAuthController@redirectToProvider'); - Route::get('oauth/{driver}/callback', 'Auth\OAuthController@handleProviderCallback')->name('oauth.callback'); + Route::post('oauth/{driver}', 'Auth\OAuthController@redirectToProvider'); + Route::get('oauth/{driver}/callback', 'Auth\OAuthController@handleProviderCallback')->name('oauth.callback'); +}); + +Route::group(['middleware' => 'role:admin'], function() { + Route::post('update-rate', 'RateController@store'); + Route::put('update-rate/{rate}', 'RateController@update'); + Route::delete('update-rate/{rate}', 'RateController@delete'); + + Route::get('setting-credit', 'SettingCreditController@index'); + Route::get('setting-credit/{credit}', 'SettingCreditController@show'); + Route::post('setting-credit', 'SettingCreditController@store'); + Route::put('setting-credit/{credit}', 'SettingCreditController@update'); + Route::delete('setting-credit/{credit}', 'SettingCreditController@delete'); + + Route::get('setting-supplier', 'SettingSupplierController@index'); + Route::get('setting-supplier/{supplier}', 'SettingSupplierController@show'); + Route::post('setting-supplier', 'SettingSupplierController@store'); + Route::put('setting-supplier/{supplier}', 'SettingSupplierController@update'); + Route::delete('setting-supplier/{supplier}', 'SettingSupplierController@delete'); + + Route::get('setting-beneficiary', 'SettingBeneficiaryController@index'); + Route::get('setting-beneficiary/{beneficiary}', 'SettingBeneficiaryController@show'); + Route::post('setting-beneficiary', 'SettingBeneficiaryController@store'); + Route::put('setting-beneficiary/{beneficiary}', 'SettingBeneficiaryController@update'); + Route::delete('setting-beneficiary/{beneficiary}', 'SettingBeneficiaryController@delete'); }); Route::get('update-rate', 'RateController@index'); Route::get('update-rate/{rate}', 'RateController@show'); -Route::post('update-rate', 'RateController@store'); -Route::put('update-rate/{rate}', 'RateController@update'); -Route::delete('update-rate/{rate}', 'RateController@delete'); -Route::get('setting-beneficiary', 'SettingBeneficiaryController@index'); -Route::get('setting-beneficiary/{beneficiary}', 'SettingBeneficiaryController@show'); -Route::post('setting-beneficiary', 'SettingBeneficiaryController@store'); -Route::put('setting-beneficiary/{beneficiary}', 'SettingBeneficiaryController@update'); -Route::delete('setting-beneficiary/{beneficiary}', 'SettingBeneficiaryController@delete'); - -Route::get('setting-credit', 'SettingCreditController@index'); -Route::get('setting-credit/{credit}', 'SettingCreditController@show'); -Route::post('setting-credit', 'SettingCreditController@store'); -Route::put('setting-credit/{credit}', 'SettingCreditController@update'); -Route::delete('setting-credit/{credit}', 'SettingCreditController@delete'); - -Route::get('setting-supplier', 'SettingSupplierController@index'); -Route::get('setting-supplier/{supplier}', 'SettingSupplierController@show'); -Route::post('setting-supplier', 'SettingSupplierController@store'); -Route::put('setting-supplier/{supplier}', 'SettingSupplierController@update'); -Route::delete('setting-supplier/{supplier}', 'SettingSupplierController@delete'); Route::post('upload-china-bankslip', 'ChinaBankSlipController@store'); -Route::post('booking/{book_id}/reject-bank-slip','BookingController@rejectBankSlip'); -Route::post('booking/{book_id}/approve-bank-slip','BookingController@approveBankSlip'); -Route::post('booking/{book_id}/cancel', 'BookingController@cancel'); Route::post('booking/{id}/upload-user-bankslip', 'BookingController@uploadbankslip'); Route::post('booking/{id}/upload-po', 'BookingController@uploadPurchaseOrder'); diff --git a/tests/Feature/BookingTest.php b/tests/Feature/BookingTest.php index e931b4b7..54380aa0 100644 --- a/tests/Feature/BookingTest.php +++ b/tests/Feature/BookingTest.php @@ -33,7 +33,6 @@ class BookingTest extends TestCase $this->userBankSlip = factory(UserBankSlip::class)->create([ 'booking_id' => $this->booking->id ]); - } public function testPost() @@ -77,7 +76,7 @@ class BookingTest extends TestCase if(!file_exists($bankslip_url)){ $response->assertStatus(400); } - + $this->actingAs($this->user) ->json('POST', '/api/booking/' . $this->booking->id . '/upload-user-bankslip', [ 'file' => $bankslip_url From 95f4f25dd33b73e97733fa478cc847f8ff19aa98 Mon Sep 17 00:00:00 2001 From: Too Date: Tue, 19 Jun 2018 18:56:31 +0800 Subject: [PATCH 2/2] Add test for settingcredit and rate --- app/Http/Controllers/BookingController.php | 32 ++++++------ database/factories/RateFactory.php | 7 ++- tests/Feature/BookingTest.php | 5 +- tests/Feature/RateTest.php | 61 ++++++++++++++++++++++ tests/Feature/SettingCreditTest.php | 35 +++++++++++++ tests/Feature/SettingsTest.php | 2 + 6 files changed, 124 insertions(+), 18 deletions(-) create mode 100644 tests/Feature/RateTest.php create mode 100644 tests/Feature/SettingCreditTest.php diff --git a/app/Http/Controllers/BookingController.php b/app/Http/Controllers/BookingController.php index 4b558726..722e6416 100644 --- a/app/Http/Controllers/BookingController.php +++ b/app/Http/Controllers/BookingController.php @@ -104,7 +104,7 @@ class BookingController extends Controller $booking->bia = $bia; // $booking->user_id = $user->id; $booking->user()->associate($user); - $booking->save(); + // The test failed due to ->save() before filling up the information at below @@ -113,22 +113,22 @@ class BookingController extends Controller // $booking->rmb_book_account_name = $request->input('rmb_book_account_name'); // $booking->rmb_book_acc_no = $request->input('rmb_book_acc_no'); // $booking->rmb_book_bank_branch = $request->input('rmb_book_bank_branch'); - // $booking->company_name = $request->input('company_name'); - // $booking->company_address = $request->input('company_address'); - // $booking->bank_address = $request->input('bank_address'); - // $booking->swift_code = $request->input('swift_code'); - // $booking->cnap = $request->input('cnap'); - // $booking->term = $request->input('term'); - - // $booking->usd_book_amount = $request->input('usd_book_amount'); - // $booking->usd_book_pay_method = $request->input('usd_book_pay_method'); - // $booking->usd_book_company_name = $request->input('usd_book_company_name'); - // $booking->usd_book_company_address = $request->input('usd_book_company_address'); - // $booking->usd_book_swift_code = $request->input('usd_book_swift_code'); - // $booking->usd_book_cnap = $request->input('usd_book_cnap'); - // $booking->usd_book_bank_branch = $request->input('usd_book_bank_branch'); - // $booking->verification_status = $request->input('verification_status'); + // $booking->company_name = $request->input('company_name'); + // $booking->company_address = $request->input('company_address'); + // $booking->bank_address = $request->input('bank_address'); + // $booking->swift_code = $request->input('swift_code'); + // $booking->cnap = $request->input('cnap'); + // $booking->term = $request->input('term'); + // $booking->usd_book_amount = $request->input('usd_book_amount'); + // $booking->usd_book_pay_method = $request->input('usd_book_pay_method'); + // $booking->usd_book_company_name = $request->input('usd_book_company_name'); + // $booking->usd_book_company_address = $request->input('usd_book_company_address'); + // $booking->usd_book_swift_code = $request->input('usd_book_swift_code'); + // $booking->usd_book_cnap = $request->input('usd_book_cnap'); + // $booking->usd_book_bank_branch = $request->input('usd_book_bank_branch'); + // $booking->verification_status = $request->input('verification_status'); + $booking->save(); return response()->json($booking, 201); } diff --git a/database/factories/RateFactory.php b/database/factories/RateFactory.php index 7270d369..37dc5c62 100644 --- a/database/factories/RateFactory.php +++ b/database/factories/RateFactory.php @@ -4,6 +4,11 @@ use Faker\Generator as Faker; $factory->define(App\Rate::class, function (Faker $faker) { return [ - // + 'x1_cash' => $faker->randomDigit, + 'x1_cheque' => $faker->randomDigit, + 'x1_ba' => $faker->randomDigit, + 'x2_cash' => $faker->randomDigit, + 'x2_cheque' => $faker->randomDigit, + 'x2_ba' => $faker->randomDigit ]; }); diff --git a/tests/Feature/BookingTest.php b/tests/Feature/BookingTest.php index 54380aa0..a30608bc 100644 --- a/tests/Feature/BookingTest.php +++ b/tests/Feature/BookingTest.php @@ -1,6 +1,6 @@ user = factory(User::class)->create(); $this->booking = factory(Booking::class)->create([ 'user_id' => $this->user->id @@ -33,6 +35,7 @@ class BookingTest extends TestCase $this->userBankSlip = factory(UserBankSlip::class)->create([ 'booking_id' => $this->booking->id ]); + $this->user->attachRole(Role::Where('name','member')->first()); } public function testPost() diff --git a/tests/Feature/RateTest.php b/tests/Feature/RateTest.php new file mode 100644 index 00000000..bd2a73ce --- /dev/null +++ b/tests/Feature/RateTest.php @@ -0,0 +1,61 @@ +user = factory(User::class)->create(); + $this->rate = factory(Rate::class)->create(); + $this->user->attachRole(Role::Where('name','admin')->first()); + } + + public function testStore(){ + $response = + $this->actingAs($this->user) + ->postJson('/api/update-rate/',[ + 'x1_cash' => '1.2', + 'x1_cheque' => '1.2', + 'x1_ba' => '1.2', + 'x2_cash' => '1.2', + 'x2_cheque' => '1.2', + 'x2_ba' => '1.2' + ]) + ->assertStatus(201); + } + + public function testUpdate(){ + $response = + $this->actingAs($this->user) + ->json('PUT','/api/update-rate/' . $this->rate->id,[ + 'x1_cash' => '1.2', + 'x1_cheque' => '1.2', + 'x1_ba' => '1.2', + 'x2_cash' => '1.2', + 'x2_cheque' => '1.2', + 'x2_ba' => '1.2' + ]) + ->assertStatus(200); + } +} diff --git a/tests/Feature/SettingCreditTest.php b/tests/Feature/SettingCreditTest.php new file mode 100644 index 00000000..b0d0cc4c --- /dev/null +++ b/tests/Feature/SettingCreditTest.php @@ -0,0 +1,35 @@ +user = factory(User::class)->create(); + $this->user->attachRole(Role::Where('name','admin')->first()); + } + + public function testStore(){ + $this->actingAs($this->user) + ->postJson('/api/setting-credit/', [ + 'rmb_credit_limit' => '5000', + 'usd_credit_limit' => '2000' + ]) + ->assertStatus(201); + } + +} diff --git a/tests/Feature/SettingsTest.php b/tests/Feature/SettingsTest.php index 945b04b1..84824d6e 100644 --- a/tests/Feature/SettingsTest.php +++ b/tests/Feature/SettingsTest.php @@ -4,6 +4,7 @@ namespace Tests\Feature; use App\User; use Tests\TestCase; +use App\Role; use Illuminate\Support\Facades\Hash; class SettingsTest extends TestCase @@ -48,4 +49,5 @@ class SettingsTest extends TestCase $this->assertTrue(Hash::check('updated', $this->user->password)); } + }