<?php

namespace yiiunit\extensions\authclient;

use yii\authclient\OpenId;

class OpenIdTest extends TestCase
{
	protected function setUp()
	{
		$config = [
			'components' => [
				'request' => [
					'hostInfo' => 'http://testdomain.com',
					'scriptUrl' => '/index.php',
				],
			]
		];
		$this->mockApplication($config, '\yii\web\Application');
	}

	// Tests :

	public function testSetGet()
	{
		$client = new OpenId();

		$trustRoot = 'http://trust.root';
		$client->setTrustRoot($trustRoot);
		$this->assertEquals($trustRoot, $client->getTrustRoot(), 'Unable to setup trust root!');

		$returnUrl = 'http://return.url';
		$client->setReturnUrl($returnUrl);
		$this->assertEquals($returnUrl, $client->getReturnUrl(), 'Unable to setup return URL!');
	}

	/**
	 * @depends testSetGet
	 */
	public function testGetDefaults()
	{
		$client = new OpenId();

		$this->assertNotEmpty($client->getTrustRoot(), 'Unable to get default trust root!');
		$this->assertNotEmpty($client->getReturnUrl(), 'Unable to get default return URL!');
	}

	public function testDiscover()
	{
		$url = 'https://www.google.com/accounts/o8/id';
		$client = new OpenId();
		$info = $client->discover($url);
		$this->assertNotEmpty($info);
		$this->assertNotEmpty($info['url']);
		$this->assertNotEmpty($info['identity']);
		$this->assertEquals(2, $info['version']);
		$this->assertArrayHasKey('identifier_select', $info);
		$this->assertArrayHasKey('ax', $info);
		$this->assertArrayHasKey('sreg', $info);
	}
}