diff --git a/app/Http/Controllers/Api/LicensesController.php b/app/Http/Controllers/Api/LicensesController.php index df74b60895..e021fc3d3e 100644 --- a/app/Http/Controllers/Api/LicensesController.php +++ b/app/Http/Controllers/Api/LicensesController.php @@ -26,8 +26,8 @@ class LicensesController extends Controller public function index(Request $request) { $this->authorize('view', License::class); - $licenses = Company::scopeCompanyables(License::with('company', 'manufacturer', 'supplier','category')->withCount('freeSeats as free_seats_count')); + $licenses = License::with('company', 'manufacturer', 'supplier','category')->withCount('freeSeats as free_seats_count'); if ($request->filled('company_id')) { $licenses->where('company_id', '=', $request->input('company_id')); diff --git a/tests/Feature/Api/Licenses/LicensesIndexTest.php b/tests/Feature/Api/Licenses/LicensesIndexTest.php new file mode 100644 index 0000000000..4deb6bbcbe --- /dev/null +++ b/tests/Feature/Api/Licenses/LicensesIndexTest.php @@ -0,0 +1,72 @@ +count(2)->create(); + + $licenseA = License::factory()->for($companyA)->create(); + $licenseB = License::factory()->for($companyB)->create(); + + $superUser = $companyA->users()->save(User::factory()->superuser()->make()); + $userInCompanyA = $companyA->users()->save(User::factory()->viewLicenses()->make()); + $userInCompanyB = $companyB->users()->save(User::factory()->viewLicenses()->make()); + + $this->settings->disableMultipleFullCompanySupport(); + + Passport::actingAs($superUser); + $response = $this->getJson(route('api.licenses.index')); + $this->assertResponseContains($response, $licenseA); + $this->assertResponseContains($response, $licenseB); + + Passport::actingAs($userInCompanyA); + $response = $this->getJson(route('api.licenses.index')); + $this->assertResponseContains($response, $licenseA); + $this->assertResponseContains($response, $licenseB); + + Passport::actingAs($userInCompanyB); + $response = $this->getJson(route('api.licenses.index')); + $this->assertResponseContains($response, $licenseA); + $this->assertResponseContains($response, $licenseB); + + $this->settings->enableMultipleFullCompanySupport(); + + Passport::actingAs($superUser); + $response = $this->getJson(route('api.licenses.index')); + $this->assertResponseContains($response, $licenseA); + $this->assertResponseContains($response, $licenseB); + + Passport::actingAs($userInCompanyA); + $response = $this->getJson(route('api.licenses.index')); + $this->assertResponseContains($response, $licenseA); + $this->assertResponseDoesNotContain($response, $licenseB); + + Passport::actingAs($userInCompanyB); + $response = $this->getJson(route('api.licenses.index')); + $this->assertResponseDoesNotContain($response, $licenseA); + $this->assertResponseContains($response, $licenseB); + } + + private function assertResponseContains(TestResponse $response, License $license) + { + $this->assertTrue(collect($response['rows'])->pluck('name')->contains($license->name)); + } + + private function assertResponseDoesNotContain(TestResponse $response, License $license) + { + $this->assertFalse(collect($response['rows'])->pluck('name')->contains($license->name)); + } +}