37 array(
'field1',
'field2'),
45 array(
'field1',
'field[subfield1]',
'field[subfield2]'),
56 array(
'field1',
'field[subfield1]',
'field[subfield2]',
'field1'),
67 array(
'field1',
'field[subfield1][]',
'field[subfield1][]',
'field[subfield2]'),
91 array(
'field1',
'field2',
'field2[bla]',
'field2[blubb]')
94 array(
'field1',
'field2[bla]',
'field2[bla][blubb][blubb]')
98 array(
'field1',
'field2[bla]',
'field2[blubb]',
'field2')
101 array(
'field1',
'field2[bla][blubb][blubb]',
'field2[bla]')
105 array(
'field1',
'field2[][bla]')
118 $requestHashService = $this->getMock(
'TYPO3\\CMS\\Extbase\\Security\\Channel\\RequestHashService', array(
'serializeAndHashFormFieldArray'));
119 $requestHashService->expects($this->once())->method(
'serializeAndHashFormFieldArray')->with($expected);
120 $requestHashService->generateRequestHash($input);
131 $requestHashService = $this->getMock(
'TYPO3\\CMS\\Extbase\\Security\\Channel\\RequestHashService', array(
'serializeAndHashFormFieldArray'));
132 $requestHashService->generateRequestHash($input);
140 $formFieldArray = array(
147 $hashService = $this->
getAccessibleMock(
'TYPO3\\CMS\\Extbase\\Security\\Cryptography\\HashService', array(
'generateHmac'));
148 $hashService->expects($this->once())->method(
'generateHmac')->with(serialize($formFieldArray))->will($this->returnValue($mockHash));
149 $requestHashService = $this->
getAccessibleMock(
'TYPO3\\CMS\\Extbase\\Security\\Channel\\RequestHashService', array(
'dummy'));
150 $requestHashService->_set(
'hashService', $hashService);
151 $expected = serialize($formFieldArray) . $mockHash;
152 $actual = $requestHashService->_call(
'serializeAndHashFormFieldArray', $formFieldArray);
153 $this->assertEquals($expected, $actual);
161 $request = $this->
getAccessibleMock(
'TYPO3\\CMS\\Extbase\\Mvc\\Web\\Request', array(
'getInternalArgument',
'setHmacVerified'));
162 $request->expects($this->any())->method(
'getInternalArgument')->with(
'__hmac')->will($this->returnValue(FALSE));
163 $request->expects($this->once())->method(
'setHmacVerified')->with(FALSE);
164 $requestHashService = new \TYPO3\CMS\Extbase\Security\Channel\RequestHashService();
165 $requestHashService->verifyRequest($request);
174 $request = $this->
getAccessibleMock(
'TYPO3\\CMS\\Extbase\\Mvc\\Web\\Request', array(
'getInternalArgument',
'setHmacVerified'));
175 $request->expects($this->any())->method(
'getInternalArgument')->with(
'__hmac')->will($this->returnValue(
'abc'));
176 $requestHashService = new \TYPO3\CMS\Extbase\Security\Channel\RequestHashService();
177 $requestHashService->verifyRequest($request);
185 $request = $this->
getAccessibleMock(
'TYPO3\\CMS\\Extbase\\Mvc\\Web\\Request', array(
'getInternalArgument',
'setHmacVerified'));
186 $request->expects($this->any())->method(
'getInternalArgument')->with(
'__hmac')->will($this->returnValue(
'11111' .
'0000000000000000000000000000000000000000'));
187 $request->expects($this->once())->method(
'setHmacVerified')->with(FALSE);
188 $hashService = $this->getMock(
'TYPO3\\CMS\\Extbase\\Security\\Cryptography\\HashService', array(
'validateHmac'));
189 $hashService->expects($this->once())->method(
'validateHmac')->with(
'11111',
'0000000000000000000000000000000000000000')->will($this->returnValue(FALSE));
190 $requestHashService = $this->
getAccessibleMock(
'TYPO3\\CMS\\Extbase\\Security\\Channel\\RequestHashService', array(
'dummy'));
191 $requestHashService->_set(
'hashService', $hashService);
192 $requestHashService->verifyRequest($request);
200 $data = serialize(array(
'a' => 1));
201 $request = $this->
getAccessibleMock(
'TYPO3\\CMS\\Extbase\\Mvc\\Web\\Request', array(
'getInternalArgument',
'getArguments',
'setHmacVerified'));
202 $request->expects($this->any())->method(
'getInternalArgument')->with(
'__hmac')->will($this->returnValue($data .
'0000000000000000000000000000000000000000'));
203 $request->expects($this->once())->method(
'getArguments')->will($this->returnValue(array(
205 '__referrer' =>
'...',
208 $request->expects($this->once())->method(
'setHmacVerified')->with(TRUE);
209 $hashService = $this->getMock(
'TYPO3\\CMS\\Extbase\\Security\\Cryptography\\HashService', array(
'validateHmac'));
210 $hashService->expects($this->once())->method(
'validateHmac')->with($data,
'0000000000000000000000000000000000000000')->will($this->returnValue(TRUE));
211 $requestHashService = $this->
getAccessibleMock(
'TYPO3\\CMS\\Extbase\\Security\\Channel\\RequestHashService', array(
'checkFieldNameInclusion'));
212 $requestHashService->expects($this->once())->method(
'checkFieldNameInclusion')->with(array(
'a' =>
'bla'), array(
'a' => 1))->will($this->returnValue(TRUE));
213 $requestHashService->_set(
'hashService', $hashService);
214 $requestHashService->verifyRequest($request);
222 $data = serialize(array(
'a' => 1));
223 $request = $this->
getAccessibleMock(
'TYPO3\\CMS\\Extbase\\Mvc\\Web\\Request', array(
'getInternalArgument',
'getArguments',
'setHmacVerified'));
224 $request->expects($this->any())->method(
'getInternalArgument')->with(
'__hmac')->will($this->returnValue($data .
'0000000000000000000000000000000000000000'));
225 $request->expects($this->once())->method(
'getArguments')->will($this->returnValue(array(
227 '__referrer' =>
'...',
231 $request->expects($this->once())->method(
'setHmacVerified')->with(FALSE);
232 $hashService = $this->getMock(
'TYPO3\\CMS\\Extbase\\Security\\Cryptography\\HashService', array(
'validateHmac'));
233 $hashService->expects($this->once())->method(
'validateHmac')->with($data,
'0000000000000000000000000000000000000000')->will($this->returnValue(TRUE));
234 $requestHashService = $this->
getAccessibleMock(
'TYPO3\\CMS\\Extbase\\Security\\Channel\\RequestHashService', array(
'checkFieldNameInclusion'));
235 $requestHashService->expects($this->once())->method(
'checkFieldNameInclusion')->with(array(
'a' =>
'bla',
'b' =>
'blubb'), array(
'a' => 1))->will($this->returnValue(FALSE));
236 $requestHashService->_set(
'hashService', $hashService);
237 $requestHashService->verifyRequest($request);
410 $requestHashService = $this->
getAccessibleMock(
'TYPO3\\CMS\\Extbase\\Security\\Channel\\RequestHashService', array(
'dummy'));
411 $this->assertEquals($expectedResult, $requestHashService->_call(
'checkFieldNameInclusion', $requestArguments, $allowedFields));
verifyRequestHashValidatesTheHashAndSetsHmacVerifiedToTrueIfArgumentsAreIncludedInTheAllowedArgumentList()
checkFieldNameInclusionWorks($requestArguments, $allowedFields, $expectedResult)
verifyRequestHashValidatesTheHashAndSetsHmacVerifiedToFalseIfNotAllArgumentsAreIncludedInTheAllowedArgumentList()
dataProviderForCheckFieldNameInclusion()
verifyRequestHashSetsHmacVerifiedToFalseIfRequestDoesNotHaveAnHmacArgument()
getAccessibleMock( $originalClassName, array $methods=array(), array $arguments=array(), $mockClassName='', $callOriginalConstructor=TRUE, $callOriginalClone=TRUE, $callAutoload=TRUE)
serializeAndHashFormFieldArrayWorks()
dataProviderForGenerateRequestHashWithUnallowedValues()
generateRequestHashThrowsExceptionInWrongCases($input)
verifyRequestHashValidatesTheHashAndSetsHmacVerifiedToFalseIfHashCouldNotBeVerified()
verifyRequestHashThrowsExceptionIfHmacIsShortherThan40Characters()
dataProviderForGenerateRequestHash()
generateRequestHashGeneratesTheCorrectHashesInNormalOperation($input, $expected)