Merge "Add config for serving main Page from the domain root"
[lhc/web/wiklou.git] / tests / phpunit / includes / filerepo / file / LocalFileTest.php
1 <?php
2
3 /**
4 * These tests should work regardless of $wgCapitalLinks
5 * @todo Split tests into providers and test methods
6 */
7
8 class LocalFileTest extends MediaWikiTestCase {
9
10 /** @var LocalRepo */
11 private $repo_hl0;
12 /** @var LocalRepo */
13 private $repo_hl2;
14 /** @var LocalRepo */
15 private $repo_lc;
16 /** @var File */
17 private $file_hl0;
18 /** @var File */
19 private $file_hl2;
20 /** @var File */
21 private $file_lc;
22
23 protected function setUp() {
24 parent::setUp();
25
26 $this->setMwGlobals( 'wgCapitalLinks', true );
27
28 $info = [
29 'name' => 'test',
30 'directory' => '/testdir',
31 'url' => '/testurl',
32 'hashLevels' => 2,
33 'transformVia404' => false,
34 'backend' => new FSFileBackend( [
35 'name' => 'local-backend',
36 'wikiId' => wfWikiID(),
37 'containerPaths' => [
38 'cont1' => "/testdir/local-backend/tempimages/cont1",
39 'cont2' => "/testdir/local-backend/tempimages/cont2"
40 ]
41 ] )
42 ];
43 $this->repo_hl0 = new LocalRepo( [ 'hashLevels' => 0 ] + $info );
44 $this->repo_hl2 = new LocalRepo( [ 'hashLevels' => 2 ] + $info );
45 $this->repo_lc = new LocalRepo( [ 'initialCapital' => false ] + $info );
46 $this->file_hl0 = $this->repo_hl0->newFile( 'test!' );
47 $this->file_hl2 = $this->repo_hl2->newFile( 'test!' );
48 $this->file_lc = $this->repo_lc->newFile( 'test!' );
49 }
50
51 /**
52 * @covers File::getHashPath
53 */
54 public function testGetHashPath() {
55 $this->assertSame( '', $this->file_hl0->getHashPath() );
56 $this->assertEquals( 'a/a2/', $this->file_hl2->getHashPath() );
57 $this->assertEquals( 'c/c4/', $this->file_lc->getHashPath() );
58 }
59
60 /**
61 * @covers File::getRel
62 */
63 public function testGetRel() {
64 $this->assertEquals( 'Test!', $this->file_hl0->getRel() );
65 $this->assertEquals( 'a/a2/Test!', $this->file_hl2->getRel() );
66 $this->assertEquals( 'c/c4/test!', $this->file_lc->getRel() );
67 }
68
69 /**
70 * @covers File::getUrlRel
71 */
72 public function testGetUrlRel() {
73 $this->assertEquals( 'Test%21', $this->file_hl0->getUrlRel() );
74 $this->assertEquals( 'a/a2/Test%21', $this->file_hl2->getUrlRel() );
75 $this->assertEquals( 'c/c4/test%21', $this->file_lc->getUrlRel() );
76 }
77
78 /**
79 * @covers File::getArchivePath
80 */
81 public function testGetArchivePath() {
82 $this->assertEquals(
83 'mwstore://local-backend/test-public/archive',
84 $this->file_hl0->getArchivePath()
85 );
86 $this->assertEquals(
87 'mwstore://local-backend/test-public/archive/a/a2',
88 $this->file_hl2->getArchivePath()
89 );
90 $this->assertEquals(
91 'mwstore://local-backend/test-public/archive/!',
92 $this->file_hl0->getArchivePath( '!' )
93 );
94 $this->assertEquals(
95 'mwstore://local-backend/test-public/archive/a/a2/!',
96 $this->file_hl2->getArchivePath( '!' )
97 );
98 }
99
100 /**
101 * @covers File::getThumbPath
102 */
103 public function testGetThumbPath() {
104 $this->assertEquals(
105 'mwstore://local-backend/test-thumb/Test!',
106 $this->file_hl0->getThumbPath()
107 );
108 $this->assertEquals(
109 'mwstore://local-backend/test-thumb/a/a2/Test!',
110 $this->file_hl2->getThumbPath()
111 );
112 $this->assertEquals(
113 'mwstore://local-backend/test-thumb/Test!/x',
114 $this->file_hl0->getThumbPath( 'x' )
115 );
116 $this->assertEquals(
117 'mwstore://local-backend/test-thumb/a/a2/Test!/x',
118 $this->file_hl2->getThumbPath( 'x' )
119 );
120 }
121
122 /**
123 * @covers File::getArchiveUrl
124 */
125 public function testGetArchiveUrl() {
126 $this->assertEquals( '/testurl/archive', $this->file_hl0->getArchiveUrl() );
127 $this->assertEquals( '/testurl/archive/a/a2', $this->file_hl2->getArchiveUrl() );
128 $this->assertEquals( '/testurl/archive/%21', $this->file_hl0->getArchiveUrl( '!' ) );
129 $this->assertEquals( '/testurl/archive/a/a2/%21', $this->file_hl2->getArchiveUrl( '!' ) );
130 }
131
132 /**
133 * @covers File::getThumbUrl
134 */
135 public function testGetThumbUrl() {
136 $this->assertEquals( '/testurl/thumb/Test%21', $this->file_hl0->getThumbUrl() );
137 $this->assertEquals( '/testurl/thumb/a/a2/Test%21', $this->file_hl2->getThumbUrl() );
138 $this->assertEquals( '/testurl/thumb/Test%21/x', $this->file_hl0->getThumbUrl( 'x' ) );
139 $this->assertEquals( '/testurl/thumb/a/a2/Test%21/x', $this->file_hl2->getThumbUrl( 'x' ) );
140 }
141
142 /**
143 * @covers File::getArchiveVirtualUrl
144 */
145 public function testGetArchiveVirtualUrl() {
146 $this->assertEquals( 'mwrepo://test/public/archive', $this->file_hl0->getArchiveVirtualUrl() );
147 $this->assertEquals(
148 'mwrepo://test/public/archive/a/a2',
149 $this->file_hl2->getArchiveVirtualUrl()
150 );
151 $this->assertEquals(
152 'mwrepo://test/public/archive/%21',
153 $this->file_hl0->getArchiveVirtualUrl( '!' )
154 );
155 $this->assertEquals(
156 'mwrepo://test/public/archive/a/a2/%21',
157 $this->file_hl2->getArchiveVirtualUrl( '!' )
158 );
159 }
160
161 /**
162 * @covers File::getThumbVirtualUrl
163 */
164 public function testGetThumbVirtualUrl() {
165 $this->assertEquals( 'mwrepo://test/thumb/Test%21', $this->file_hl0->getThumbVirtualUrl() );
166 $this->assertEquals( 'mwrepo://test/thumb/a/a2/Test%21', $this->file_hl2->getThumbVirtualUrl() );
167 $this->assertEquals(
168 'mwrepo://test/thumb/Test%21/%21',
169 $this->file_hl0->getThumbVirtualUrl( '!' )
170 );
171 $this->assertEquals(
172 'mwrepo://test/thumb/a/a2/Test%21/%21',
173 $this->file_hl2->getThumbVirtualUrl( '!' )
174 );
175 }
176
177 /**
178 * @covers File::getUrl
179 */
180 public function testGetUrl() {
181 $this->assertEquals( '/testurl/Test%21', $this->file_hl0->getUrl() );
182 $this->assertEquals( '/testurl/a/a2/Test%21', $this->file_hl2->getUrl() );
183 }
184
185 /**
186 * @covers ::wfLocalFile
187 */
188 public function testWfLocalFile() {
189 $file = wfLocalFile( "File:Some_file_that_probably_doesn't exist.png" );
190 $this->assertThat(
191 $file,
192 $this->isInstanceOf( LocalFile::class ),
193 'wfLocalFile() returns LocalFile for valid Titles'
194 );
195 }
196
197 /**
198 * @covers File::getUser
199 */
200 public function testGetUserForNonExistingFile() {
201 $this->assertSame( 'Unknown user', $this->file_hl0->getUser() );
202 $this->assertSame( 0, $this->file_hl0->getUser( 'id' ) );
203 }
204
205 /**
206 * @covers File::getUser
207 */
208 public function testDescriptionShortUrlForNonExistingFile() {
209 $this->assertNull( $this->file_hl0->getDescriptionShortUrl() );
210 }
211
212 /**
213 * @covers File::getUser
214 */
215 public function testDescriptionTextForNonExistingFile() {
216 $this->assertFalse( $this->file_hl0->getDescriptionText() );
217 }
218 }