You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					109 lines
				
				3.3 KiB
			
		
		
			
		
	
	
					109 lines
				
				3.3 KiB
			| 
											12 years ago
										 | <?php
 | ||
|  | 
 | ||
|  | namespace yiiunit\extensions\authclient\oauth;
 | ||
|  | 
 | ||
|  | use yii\authclient\oauth\Client1;
 | ||
|  | use yii\authclient\oauth\signature\PlainText;
 | ||
|  | use yii\authclient\oauth\Token;
 | ||
|  | use yiiunit\extensions\authclient\TestCase;
 | ||
|  | 
 | ||
|  | class Client1Test extends TestCase
 | ||
|  | {
 | ||
|  | 	protected function setUp()
 | ||
|  | 	{
 | ||
|  | 		$this->mockApplication([], '\yii\web\Application');
 | ||
|  | 	}
 | ||
|  | 
 | ||
|  | 	/**
 | ||
|  | 	 * Invokes the OAuth client method even if it is protected.
 | ||
|  | 	 * @param Client1 $oauthClient OAuth client instance.
 | ||
|  | 	 * @param string $methodName name of the method to be invoked.
 | ||
|  | 	 * @param array $arguments method arguments.
 | ||
|  | 	 * @return mixed method invoke result.
 | ||
|  | 	 */
 | ||
|  | 	protected function invokeOAuthClientMethod($oauthClient, $methodName, array $arguments = [])
 | ||
|  | 	{
 | ||
|  | 		$classReflection = new \ReflectionClass(get_class($oauthClient));
 | ||
|  | 		$methodReflection = $classReflection->getMethod($methodName);
 | ||
|  | 		$methodReflection->setAccessible(true);
 | ||
|  | 		$result = $methodReflection->invokeArgs($oauthClient, $arguments);
 | ||
|  | 		$methodReflection->setAccessible(false);
 | ||
|  | 		return $result;
 | ||
|  | 	}
 | ||
|  | 
 | ||
|  | 	// Tests :
 | ||
|  | 
 | ||
|  | 	public function testSignRequest()
 | ||
|  | 	{
 | ||
|  | 		$oauthClient = new Client1();
 | ||
|  | 
 | ||
|  | 		$oauthSignatureMethod = new PlainText();
 | ||
|  | 		$oauthClient->setSignatureMethod($oauthSignatureMethod);
 | ||
|  | 
 | ||
|  | 		$signedParams = $this->invokeOAuthClientMethod($oauthClient, 'signRequest', ['GET', 'http://test.url', []]);
 | ||
|  | 		$this->assertNotEmpty($signedParams['oauth_signature'], 'Unable to sign request!');
 | ||
|  | 	}
 | ||
|  | 
 | ||
|  | 	/**
 | ||
|  | 	 * Data provider for [[testComposeAuthorizationHeader()]].
 | ||
|  | 	 * @return array test data.
 | ||
|  | 	 */
 | ||
|  | 	public function composeAuthorizationHeaderDataProvider()
 | ||
|  | 	{
 | ||
|  | 		return [
 | ||
|  | 			[
 | ||
|  | 				'',
 | ||
|  | 				[
 | ||
|  | 					'oauth_test_name_1' => 'oauth_test_value_1',
 | ||
|  | 					'oauth_test_name_2' => 'oauth_test_value_2',
 | ||
|  | 				],
 | ||
|  | 				'Authorization: OAuth oauth_test_name_1="oauth_test_value_1", oauth_test_name_2="oauth_test_value_2"'
 | ||
|  | 			],
 | ||
|  | 			[
 | ||
|  | 				'test_realm',
 | ||
|  | 				[
 | ||
|  | 					'oauth_test_name_1' => 'oauth_test_value_1',
 | ||
|  | 					'oauth_test_name_2' => 'oauth_test_value_2',
 | ||
|  | 				],
 | ||
|  | 				'Authorization: OAuth realm="test_realm", oauth_test_name_1="oauth_test_value_1", oauth_test_name_2="oauth_test_value_2"'
 | ||
|  | 			],
 | ||
|  | 			[
 | ||
|  | 				'',
 | ||
|  | 				[
 | ||
|  | 					'oauth_test_name_1' => 'oauth_test_value_1',
 | ||
|  | 					'test_name_2' => 'test_value_2',
 | ||
|  | 				],
 | ||
|  | 				'Authorization: OAuth oauth_test_name_1="oauth_test_value_1"'
 | ||
|  | 			],
 | ||
|  | 		];
 | ||
|  | 	}
 | ||
|  | 
 | ||
|  | 	/**
 | ||
|  | 	 * @dataProvider composeAuthorizationHeaderDataProvider
 | ||
|  | 	 *
 | ||
|  | 	 * @param string $realm authorization realm.
 | ||
|  | 	 * @param array $params request params.
 | ||
|  | 	 * @param string $expectedAuthorizationHeader expected authorization header.
 | ||
|  | 	 */
 | ||
|  | 	public function testComposeAuthorizationHeader($realm, array $params, $expectedAuthorizationHeader)
 | ||
|  | 	{
 | ||
|  | 		$oauthClient = new Client1();
 | ||
|  | 		$authorizationHeader = $this->invokeOAuthClientMethod($oauthClient, 'composeAuthorizationHeader', [$params, $realm]);
 | ||
|  | 		$this->assertEquals($expectedAuthorizationHeader, $authorizationHeader);
 | ||
|  | 	}
 | ||
|  | 
 | ||
|  | 	public function testBuildAuthUrl() {
 | ||
|  | 		$oauthClient = new Client1();
 | ||
|  | 		$authUrl = 'http://test.auth.url';
 | ||
|  | 		$oauthClient->authUrl = $authUrl;
 | ||
|  | 
 | ||
|  | 		$requestTokenToken = 'test_request_token';
 | ||
|  | 		$requestToken = new Token();
 | ||
|  | 		$requestToken->setToken($requestTokenToken);
 | ||
|  | 
 | ||
|  | 		$builtAuthUrl = $oauthClient->buildAuthUrl($requestToken);
 | ||
|  | 
 | ||
|  | 		$this->assertContains($authUrl, $builtAuthUrl, 'No auth URL present!');
 | ||
|  | 		$this->assertContains($requestTokenToken, $builtAuthUrl, 'No token present!');
 | ||
|  | 	}
 | ||
|  | }
 |