File: IfNoneMatchTest.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 (114 lines) | stat: -rw-r--r-- 2,337 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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php

namespace MediaWiki\Tests\Rest\HeaderParser;

use MediaWiki\Rest\HeaderParser\IfNoneMatch;
use MediaWikiUnitTestCase;

/**
 * @covers \MediaWiki\Rest\HeaderParser\IfNoneMatch
 */
class IfNoneMatchTest extends MediaWikiUnitTestCase {
	public static function provideParseHeaderList() {
		return [
			'empty array' => [
				[],
				[]
			],
			'star' => [
				[ '*' ],
				[ [ 'weak' => true, 'contents' => null, 'whole' => '*' ] ]
			],
			'etag' => [
				[ '"x"' ],
				[ [ 'weak' => false, 'contents' => 'x', 'whole' => '"x"' ] ]
			],
			'star etag' => [
				[ '*, "x"' ],
				[]
			],
			'etag star' => [
				[ '"x", *' ],
				[]
			],
			'two in a string' => [
				[ '"x","y"' ],
				[
					[ 'weak' => false, 'contents' => 'x', 'whole' => '"x"' ],
					[ 'weak' => false, 'contents' => 'y', 'whole' => '"y"' ]
				]
			],
			'two with whitespace' => [
				[ "\"x\"\t,  \"y\"" ],
				[
					[ 'weak' => false, 'contents' => 'x', 'whole' => '"x"' ],
					[ 'weak' => false, 'contents' => 'y', 'whole' => '"y"' ]
				]
			],
			'two separate headers' => [
				[ '"x"', '"y"' ],
				[
					[ 'weak' => false, 'contents' => 'x', 'whole' => '"x"' ],
					[ 'weak' => false, 'contents' => 'y', 'whole' => '"y"' ]
				]
			],
			'trailing comma' => [
				[ '"x",' ],
				[]
			],
			'trailing garbage' => [
				[ '"x",asdfg' ],
				[]
			]
		];
	}

	/**
	 * @dataProvider provideParseHeaderList
	 * @param array $input
	 * @param array $expected
	 */
	public function testParseHeaderList( $input, $expected ) {
		$parser = new IfNoneMatch;
		$actual = $parser->parseHeaderList( $input );
		$this->assertSame( $expected, $actual );
	}

	public static function provideParseETag() {
		return [
			'empty' => [
				'',
				null
			],
			'strong' => [
				'"x"',
				[ 'weak' => false, 'contents' => 'x', 'whole' => '"x"' ]
			],
			'weak' => [
				'W/"x"',
				[ 'weak' => true, 'contents' => 'x', 'whole' => 'W/"x"' ]
			],
			'weak with lowercase w' => [
				'w/"x"',
				null
			],
			'quoted character outside valid range' => [
				'" "',
				null
			],
			'trailing garbage' => [
				'"x"a',
				null
			]
		];
	}

	/**
	 * @dataProvider provideParseETag
	 */
	public function testParseETag( $input, $expected ) {
		$parser = new IfNoneMatch;
		$actual = $parser->parseETag( $input );
		$this->assertSame( $expected, $actual );
	}
}