File tree Expand file tree Collapse file tree 3 files changed +56
-3
lines changed
app/Http/Controllers/Backend Expand file tree Collapse file tree 3 files changed +56
-3
lines changed Original file line number Diff line number Diff line change 77use Illuminate \Http \Request ;
88
99class WikiReadOnlyController extends Controller {
10- public function setWikiReadonly (Request $ request ) {
10+ public function setWikiReadOnly (Request $ request ) {
1111
12- $ domain = $ request ->input ('domain ' );
12+ $ validated = $ request ->validate ([
13+ 'domain ' => 'required|string ' ,
14+ ]);
15+
16+ $ domain = $ validated ['domain ' ];
1317 $ wiki = Wiki::where ('domain ' , $ domain )->first ();
1418
1519 if (!$ wiki ) {
Original file line number Diff line number Diff line change 1010// GET
1111$ router ->get ('healthz ' , fn () => "It's Alive " );
1212$ router ->get ('getWikiHostsForDomain ' , ['uses ' => 'MediaWikiHostsController@getWikiHostsForDomain ' ]);
13- $ router ->post ('setWikiReadonly ' , ['uses ' => 'WikiReadOnlyController@setWikiReadonly ' ]);
13+ $ router ->post ('setWikiReadOnly ' , ['uses ' => 'WikiReadOnlyController@setWikiReadOnly ' ]);
1414
1515$ router ->group (['prefix ' => 'ingress ' ], function () use ($ router ) {
1616 // GET
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace Tests \Routes \Backend ;
4+
5+ use App \Wiki ;
6+ use App \WikiSetting ;
7+ use Illuminate \Foundation \Testing \RefreshDatabase ;
8+ use Tests \TestCase ;
9+
10+ class WikiReadOnlyControllerTest extends TestCase {
11+ use RefreshDatabase;
12+
13+ protected string $ route = '/backend/setWikiReadOnly ' ;
14+
15+ public function testItReturns404WhenWikiNotFound (){
16+ $ response = $ this ->postJson ($ this ->route , [
17+ 'domain ' => 'nonexistent.wikibase.cloud '
18+ ]);
19+
20+ $ response ->assertStatus (404 )
21+ ->assertJson ([
22+ 'error ' => 'Wiki not found for domain: nonexistent.wikibase.cloud ' ,
23+ ]);
24+ }
25+
26+ public function testSetWikiToReadOnly (){
27+ $ wiki = Wiki::factory ()->create ([
28+ 'domain ' => 'somewiki.wikibase.cloud ' ,
29+ ]);
30+
31+ $ response = $ this ->postJson ($ this ->route , [
32+ 'domain ' => 'somewiki.wikibase.cloud ' ,
33+ ]);
34+
35+ $ response ->assertStatus (200 )
36+ ->assertJson ([
37+ 'success ' => true ,
38+ 'domain ' => 'somewiki.wikibase.cloud ' ,
39+ 'message ' => 'Wiki set to read-only successfully. ' ,
40+ ]);
41+
42+ $ this ->assertSame (
43+ 'This wiki is currently read-only. ' ,
44+ WikiSetting::whereWikiId ($ wiki ->id )->whereName ('wgReadOnly ' )->first ()->value
45+ );
46+
47+ }
48+
49+ }
You can’t perform that action at this time.
0 commit comments