prepareDatabase([ 'users' => [ $this->normalUser(), ], 'groups' => [ $this->memberGroup(), ], 'group_user' => [ ['user_id' => 2, 'group_id' => 3], ], 'group_permission' => [ ['permission' => 'viewDiscussions', 'group_id' => 3], ] ]); } /** * @test */ public function list_discussions_not_restricted_by_default() { $this->prepDb(); $response = $this->send($this->request('GET', '/api/discussions', ['authenticatedAs' => 2])); $this->assertEquals(200, $response->getStatusCode()); } /** * @test */ public function list_discussions_can_be_restricted() { $this->extend((new Extend\ThrottleApi)->set('blockListDiscussions', function ($request) { if ($request->getAttribute('routeName') === 'discussions.index') { return true; } })); $this->prepDb(); $response = $this->send($this->request('GET', '/api/discussions', ['authenticatedAs' => 2])); $this->assertEquals(429, $response->getStatusCode()); } /** * @test */ public function false_overrides_true_for_evaluating_throttlers() { $this->extend( (new Extend\ThrottleApi)->set('blockListDiscussions', function ($request) { if ($request->getAttribute('routeName') === 'discussions.index') { return true; } }), (new Extend\ThrottleApi)->set('blockListDiscussionsOverride', function ($request) { if ($request->getAttribute('routeName') === 'discussions.index') { return false; } }) ); $this->prepDb(); $this->prepDb(); $response = $this->send($this->request('GET', '/api/discussions', ['authenticatedAs' => 2])); $this->assertEquals(200, $response->getStatusCode()); } }