File: SimpleCallbacksTest.php

package info (click to toggle)
mediawiki 1%3A1.43.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 417,464 kB
  • sloc: php: 1,062,949; javascript: 664,290; sql: 9,714; python: 5,458; xml: 3,489; sh: 1,131; makefile: 64
file content (97 lines) | stat: -rw-r--r-- 3,604 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php

namespace Wikimedia\Tests\ParamValidator;

use PHPUnit\Framework\TestCase;
use Psr\Http\Message\UploadedFileInterface;
use Wikimedia\Message\DataMessageValue;
use Wikimedia\ParamValidator\SimpleCallbacks;

/**
 * @covers \Wikimedia\ParamValidator\SimpleCallbacks
 */
class SimpleCallbacksTest extends TestCase {

	public function testDataAccess() {
		$callbacks = new SimpleCallbacks(
			[ 'foo' => 'Foo!', 'bar' => null ],
			[
				'file1' => [
					'name' => 'example.txt',
					'type' => 'text/plain',
					'tmp_name' => '...',
					'error' => UPLOAD_ERR_OK,
					'size' => 123,
				],
				'file2' => [
					'name' => '',
					'type' => '',
					'tmp_name' => '',
					'error' => UPLOAD_ERR_NO_FILE,
					'size' => 0,
				],
			]
		);

		$this->assertTrue( $callbacks->hasParam( 'foo', [] ) );
		$this->assertFalse( $callbacks->hasParam( 'bar', [] ) );
		$this->assertFalse( $callbacks->hasParam( 'baz', [] ) );
		$this->assertFalse( $callbacks->hasParam( 'file1', [] ) );

		$this->assertSame( 'Foo!', $callbacks->getValue( 'foo', null, [] ) );
		$this->assertSame( null, $callbacks->getValue( 'bar', null, [] ) );
		$this->assertSame( 123, $callbacks->getValue( 'bar', 123, [] ) );
		$this->assertSame( null, $callbacks->getValue( 'baz', null, [] ) );
		$this->assertSame( null, $callbacks->getValue( 'file1', null, [] ) );

		$this->assertFalse( $callbacks->hasUpload( 'foo', [] ) );
		$this->assertFalse( $callbacks->hasUpload( 'bar', [] ) );
		$this->assertTrue( $callbacks->hasUpload( 'file1', [] ) );
		$this->assertTrue( $callbacks->hasUpload( 'file2', [] ) );
		$this->assertFalse( $callbacks->hasUpload( 'baz', [] ) );

		$this->assertNull( $callbacks->getUploadedFile( 'foo', [] ) );
		$this->assertNull( $callbacks->getUploadedFile( 'bar', [] ) );
		$this->assertInstanceOf(
			UploadedFileInterface::class, $callbacks->getUploadedFile( 'file1', [] )
		);
		$this->assertInstanceOf(
			UploadedFileInterface::class, $callbacks->getUploadedFile( 'file2', [] )
		);
		$this->assertNull( $callbacks->getUploadedFile( 'baz', [] ) );

		$file = $callbacks->getUploadedFile( 'file1', [] );
		$this->assertSame( 'example.txt', $file->getClientFilename() );
		$file = $callbacks->getUploadedFile( 'file2', [] );
		$this->assertSame( UPLOAD_ERR_NO_FILE, $file->getError() );

		$this->assertFalse( $callbacks->useHighLimits( [] ) );
		$this->assertFalse( $callbacks->useHighLimits( [ 'useHighLimits' => false ] ) );
		$this->assertTrue( $callbacks->useHighLimits( [ 'useHighLimits' => true ] ) );
	}

	public function testRecording() {
		$callbacks = new SimpleCallbacks( [] );

		$this->assertSame( [], $callbacks->getRecordedConditions() );

		$m1 = DataMessageValue::new( 'XXX-from-test-1', [], 'foo' );
		$callbacks->recordCondition( $m1, 'foo', 'Foo!', [], [] );
		$m2 = DataMessageValue::new( 'XXX-from-test-2', [], 'barbar', [ 'bAr' => 'BaR' ] );
		$callbacks->recordCondition( $m2, 'bar', null, [], [] );
		$callbacks->recordCondition( $m2, 'bar', null, [], [] );
		$this->assertSame( [
			[ 'message' => $m1, 'name' => 'foo', 'value' => 'Foo!', 'settings' => [] ],
			[ 'message' => $m2, 'name' => 'bar', 'value' => null, 'settings' => [] ],
			[ 'message' => $m2, 'name' => 'bar', 'value' => null, 'settings' => [] ],
		], $callbacks->getRecordedConditions() );

		$callbacks->clearRecordedConditions();
		$this->assertSame( [], $callbacks->getRecordedConditions() );
		$callbacks->recordCondition( $m1, 'foo', 'Foo!', [], [] );
		$this->assertSame( [
			[ 'message' => $m1, 'name' => 'foo', 'value' => 'Foo!', 'settings' => [] ],
		], $callbacks->getRecordedConditions() );
	}

}