blob: be683edb9a2f4fadf2728f17a30380ca38904126 [file] [log] [blame]
<?php
namespace apache\shindig\test\common;
use apache\shindig\common\sample\BasicSecurityToken;
use apache\shindig\common\SecurityToken;
use apache\shindig\common\Config;
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/**
* BasicSecurityToken test case.
*/
class BasicSecurityTokenTest extends \PHPUnit_Framework_TestCase {
/**
* @var BasicSecurityToken
*/
private $BasicSecurityToken;
/**
* @var BasicSecurityToken
*/
private $anonymousToken;
/**
* Prepares the environment before running a test.
*/
protected function setUp() {
parent::setUp();
$this->BasicSecurityToken = BasicSecurityToken::createFromValues('owner', 'viewer', 'app', 'domain', 'appUrl', '1', 'default');
$this->anonymousToken = BasicSecurityToken::createFromValues(SecurityToken::$ANONYMOUS, SecurityToken::$ANONYMOUS, 'app', 'domain', 'appUrl', '1', 'default');
}
/**
* Cleans up the environment after running a test.
*/
protected function tearDown() {
$this->BasicSecurityToken = null;
$this->anonymousToken = null;
TestBasicSecurityToken::resetRawToken();
unset($_SERVER['HTTP_AUTHORIZATION']);
unset($_POST['st']);
unset($_GET['st']);
parent::tearDown();
}
/**
* Tests BasicSecurityToken::createFromValues(), toSerialForm() and createFromToken()
*/
public function testCreateFromValues() {
$token = BasicSecurityToken::createFromValues('owner', 'viewer', 'app', 'domain', 'appUrl', '1', 'default');
$this->assertEquals('owner', $token->getOwnerId());
$this->assertEquals('viewer', $token->getViewerId());
$this->assertEquals('app', $token->getAppId());
$this->assertEquals('domain', $token->getDomain());
$this->assertEquals('appUrl', $token->getAppUrl());
$this->assertEquals('1', $token->getModuleId());
$stringToken = urldecode($token->toSerialForm());
$duplicatedToken = BasicSecurityToken::createFromToken($stringToken, Config::get('token_max_age'));
$this->assertEquals('owner', $duplicatedToken->getOwnerId());
$this->assertEquals('viewer', $duplicatedToken->getViewerId());
$this->assertEquals('app', $duplicatedToken->getAppId());
$this->assertEquals('domain', $duplicatedToken->getDomain());
$this->assertEquals('appUrl', $duplicatedToken->getAppUrl());
$this->assertEquals('1', $duplicatedToken->getModuleId());
}
/**
* Tests BasicSecurityToken->getAppId()
*/
public function testGetAppId() {
$this->assertEquals('app', $this->BasicSecurityToken->getAppId());
$this->setExpectedException('Exception');
$this->anonymousToken->getAppId();
}
/**
* Tests BasicSecurityToken->getAppUrl()
*/
public function testGetAppUrl() {
$this->assertEquals('appUrl', $this->BasicSecurityToken->getAppUrl());
$this->setExpectedException('Exception');
$this->anonymousToken->getAppUrl();
}
/**
* Tests BasicSecurityToken->getDomain()
*/
public function testGetDomain() {
$this->assertEquals('domain', $this->BasicSecurityToken->getDomain());
$this->setExpectedException('Exception');
$this->anonymousToken->getDomain();
}
/**
* Tests BasicSecurityToken->getModuleId()
*/
public function testGetModuleId() {
$this->assertEquals(1, $this->BasicSecurityToken->getModuleId());
$this->setExpectedException('Exception');
$this->anonymousToken->getModuleId();
}
/**
* Tests BasicSecurityToken->getOwnerId()
*/
public function testGetOwnerId() {
$this->assertEquals('owner', $this->BasicSecurityToken->getOwnerId());
$this->setExpectedException('Exception');
$this->anonymousToken->getOwnerId();
}
/**
* Tests BasicSecurityToken->getViewerId()
*/
public function testGetViewerId() {
$this->assertEquals('viewer', $this->BasicSecurityToken->getViewerId());
$this->setExpectedException('Exception');
$this->anonymousToken->getViewerId();
}
/**
* Tests BasicSecurityToken->isAnonymous()
*/
public function testIsAnonymous() {
$this->assertFalse($this->BasicSecurityToken->isAnonymous());
}
public function testGetRawToken() {
$_GET['st'] = 'abc';
$this->assertEquals('abc', BasicSecurityToken::getTokenStringFromRequest());
TestBasicSecurityToken::resetRawToken();
$_POST['st'] = 'def';
$_SERVER['HTTP_AUTHORIZATION'] = 'OAuth ghi';
$this->assertEquals('abc', BasicSecurityToken::getTokenStringFromRequest());
unset($_GET['st']);
// test if runtime cache works
$this->assertEquals('abc', BasicSecurityToken::getTokenStringFromRequest());
TestBasicSecurityToken::resetRawToken();
//should use post now
$this->assertEquals('def', BasicSecurityToken::getTokenStringFromRequest());
TestBasicSecurityToken::resetRawToken();
unset($_POST['st']);
// get token from OAuth header
$this->assertEquals('ghi', BasicSecurityToken::getTokenStringFromRequest());
}
}
class TestBasicSecurityToken extends BasicSecurityToken
{
static public function resetRawToken()
{
parent::$rawToken = null;
}
}