Skip to content

Commit

Permalink
add test trait to aid testing
Browse files Browse the repository at this point in the history
  • Loading branch information
Mudi Ugbowanko committed Aug 31, 2014
1 parent 5c6c323 commit 227c98d
Show file tree
Hide file tree
Showing 5 changed files with 114 additions and 3 deletions.
7 changes: 7 additions & 0 deletions src/Credentials.php
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,11 @@ public function getUsername() {
public function getClientId() {
return $this->clientId;
}

/**
* @return $array
*/
public function toArray() {
return get_object_vars($this);
}
}
4 changes: 2 additions & 2 deletions src/MockStorageHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ class MockStorageHandler implements StorageHandlerInterface {
/**
* {@inheritdoc}
*/
public function save(CredentialsInterface $credentials) {
$this->credentialStore[] = [$credentials, time()];
public function save(CredentialsInterface $credentials, $createdTime = null) {
$this->credentialStore[] = [$credentials, $createdTime? $createdTime : time()];
}

/**
Expand Down
33 changes: 33 additions & 0 deletions src/SoauthTestCaseTrait.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php

namespace Renegare\Soauth;

use Silex\Application;

trait SoauthTestCaseTrait {

public function createCredentials(array $overrides = []) {
$attr = array_merge([
'accessCode' => 'valid-test-access-code=',
'authCode' => 'valid-test-auth-code=',
'clientId' => 1,
'lifetime' => 3600,
'refreshCode' => 'valid-test-refresh-code=',
'username' => 'test@example.com'
], $overrides);

extract($attr);

return new Credentials($authCode, $accessCode, $refreshCode, $lifetime, $clientId, $username);
}

public function saveCredentials(CredentialsInterface $credentials, $createdTime = null, Application $app) {
if($app['soauth.test']) {
$storage = $app['soauth.storage.handler.mock'];
} else {
$storage = $app['soauth.storage.handler'];
}

return $storage->save($credentials, $createdTime);
}
}
3 changes: 2 additions & 1 deletion src/StorageHandlerInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,9 @@ public function getAuthCodeCredentials($authCode);
/**
* Save credentials
* @param CredentialsInterface $credentials
* @param int $createdTime
*/
public function save(CredentialsInterface $credentials);
public function save(CredentialsInterface $credentials, $createdTime = null);

/**
* Retrieve credentials using $accessCode
Expand Down
70 changes: 70 additions & 0 deletions test/TestCaseTraitTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
<?php

namespace Renegare\Soauth\Test;

use Renegare\Soauth\Test\FlowTestCase;
use Renegare\Soauth\SoauthTestCaseTrait;
use Silex\Application;
use Symfony\Component\HttpFoundation\Response;

class TestCaseTraitTest extends FlowTestCase {
use SoauthTestCaseTrait;


public function testCreateCredentials() {
$credentials = $this->createCredentials();

$this->assertEquals([
'accessCode' => 'valid-test-access-code=',
'authCode' => 'valid-test-auth-code=',
'clientId' => 1,
'lifetime' => 3600,
'refreshCode' => 'valid-test-refresh-code=',
'username' => 'test@example.com',
], $credentials->toArray());
}

public function testCreateCredentialsWithOverrides() {
$credentials = $this->createCredentials([
'accessCode' => 'override-test-access-code=',
'authCode' => 'override-test-auth-code=',
'clientId' => 2,
'lifetime' => 7200,
'refreshCode' => 'override-test-refresh-code=',
'username' => 'override@example.com',
'extra.params' => 'have no effect!'
]);

$this->assertEquals([
'accessCode' => 'override-test-access-code=',
'authCode' => 'override-test-auth-code=',
'clientId' => 2,
'lifetime' => 7200,
'refreshCode' => 'override-test-refresh-code=',
'username' => 'override@example.com'
], $credentials->toArray());
}

public function testStoreCredentials() {
$app = $this->createApplication();

// using the storage handler
$credentials = $this->createCredentials();
$mockStorage = $this->getMock('Renegare\Soauth\StorageHandlerInterface');
$mockStorage->expects($this->once())->method('save')
->with($this->equalTo($credentials), $this->equalTo(null));
$app['soauth.test'] = false;
$app['soauth.storage.handler'] = $mockStorage;
$this->saveCredentials($credentials, null, $app);

// using mock
$time = strtotime('-1 hour');
$credentials = $this->createCredentials();
$mockStorage = $this->getMock('Renegare\Soauth\StorageHandlerInterface');
$mockStorage->expects($this->once())->method('save')
->with($this->equalTo($credentials), $this->equalTo($time));
$app['soauth.test'] = true;
$app['soauth.storage.handler.mock'] = $mockStorage;
$this->saveCredentials($credentials, $time, $app);
}
}

0 comments on commit 227c98d

Please sign in to comment.