diff --git a/app/Http/Controllers/MigrationController.php b/app/Http/Controllers/MigrationController.php index e3f8c9d5789a..41cc0db9b53f 100644 --- a/app/Http/Controllers/MigrationController.php +++ b/app/Http/Controllers/MigrationController.php @@ -190,7 +190,11 @@ class MigrationController extends BaseController 'migrations', $request->file('migration')->getClientOriginalName() ); - // config('ninja.environment') - Returns 'selfhosted' instead of 'testing' while running with PhpUnit, which makes it run the migration file. + if(!auth()->user()->company) + return response()->json(['message' => 'Company doesn\'t exists.'], 402); + + if($request->has('force')) + $this->purgeCompany(auth()->user()->company); if(app()->environment() !== 'testing') { StartMigration::dispatchNow($file, auth()->user(), auth()->user()->company); diff --git a/app/Http/Requests/Migration/UploadMigrationFileRequest.php b/app/Http/Requests/Migration/UploadMigrationFileRequest.php index 65aa45cdd5ba..3b1aa251e5e0 100644 --- a/app/Http/Requests/Migration/UploadMigrationFileRequest.php +++ b/app/Http/Requests/Migration/UploadMigrationFileRequest.php @@ -23,8 +23,15 @@ class UploadMigrationFileRequest extends FormRequest */ public function rules() { - return [ - 'migration' => [], // TODO: Write mimes check for zip file. + $rules = [ + 'migration' => [], ]; + + /** We'll skip mime validation while running tests. */ + if(app()->environment() !== 'testing') { + $rules['migration'] = ['required', 'mimes:zip']; + } + + return $rules; } } diff --git a/tests/Feature/MigrationTest.php b/tests/Feature/MigrationTest.php index e9376e73bb24..0d4f99a79328 100644 --- a/tests/Feature/MigrationTest.php +++ b/tests/Feature/MigrationTest.php @@ -95,25 +95,25 @@ class MigrationTest extends TestCase } - // public function testMigrationFileUpload() - // { - // $file = new UploadedFile(base_path('tests/Unit/Migration/migration.zip'), 'migration.zip'); + public function testMigrationFileUpload() + { + $file = new UploadedFile(base_path('tests/Unit/Migration/migration.zip'), 'migration.zip'); - // $data = [ - // 'migration' => $file, - // ]; + $data = [ + 'migration' => $file, + 'force' => true, + ]; - // $token = $this->company->tokens->first()->token; + $token = $this->company->tokens->first()->token; - // $response = $this->withHeaders([ - // 'X-API-TOKEN' => $token, - // 'X-API-SECRET' => config('ninja.api_secret'), - // 'X-Requested-With' => 'XMLHttpRequest', - // 'X-API-PASSWORD' => 'ALongAndBriliantPassword', - // ])->post('/api/v1/migration/start', $data); + $response = $this->withHeaders([ + 'X-API-TOKEN' => $token, + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-Requested-With' => 'XMLHttpRequest', + 'X-API-PASSWORD' => 'ALongAndBriliantPassword', + ])->post('/api/v1/migration/start', $data); - // $response->assertStatus(200); - // $this->assertTrue(file_exists(base_path('storage/migrations/migration/migration.json'))); - // } - + $response->assertStatus(200); + $this->assertTrue(file_exists(base_path('storage/migrations/migration/migration.json'))); + } }