Repository navigation
Expand file tree
/
Copy pathFacebookTest.php
More file actions
132 lines (107 loc) · 4.19 KB
/
Copy pathFacebookTest.php
File metadata and controls
132 lines (107 loc) · 4.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<?php
require_once 'tests/data/app/data.php';
use Codeception\Module\Facebook;
use Codeception\Module\PhpBrowser;
use Codeception\SuiteManager;
use Codeception\Util\Driver\Facebook as FacebookDriver;
use Codeception\Util\Stub;
class FacebookTest extends \PHPUnit_Framework_TestCase
{
protected $config = array(
'app_id' => '460287924057084',
'secret' => 'e27a5a07f9f07f52682d61dd69b716b5',
'test_user' => array(
'permissions' => array(
'publish_stream'
)
)
);
/**
* @var Facebook
*/
protected $module;
/**
* @var FacebookDriver
*/
protected $facebook;
protected function noPhpWebserver()
{
if (version_compare(PHP_VERSION, '5.4', '<')) {
$this->markTestSkipped('Requires PHP built-in web server, available since PHP 5.4.0.');
}
}
protected function makeTest()
{
return Stub::makeEmpty(
'\Codeception\TestCase\Cept',
array('dispatcher' => Stub::makeEmpty('Symfony\Component\EventDispatcher\EventDispatcher'))
);
}
public function setUp()
{
$this->module = new Facebook;
$this->module->_setConfig($this->config);
$this->module->_initialize();
$reflection = new ReflectionProperty('Codeception\Module\Facebook', 'facebook');
$reflection->setAccessible(true);
$this->facebook = $reflection->getValue($this->module);
}
protected function tearDown()
{
$this->module->_afterSuite();
}
/**
* @covers Facebook::haveFacebookTestUserAccount
* @covers Facebook::grabFacebookTestUserEmail
* @covers Facebook::grabFacebookTestUserAccessToken
*/
public function testHaveFacebookTestUserAccount()
{
$this->module->haveFacebookTestUserAccount(false);
$this->assertNotEmpty($this->module->grabFacebookTestUserEmail());
$this->assertNotEmpty($this->module->grabFacebookTestUserAccessToken());
$testUserEmailBeforeRenew = $this->module->grabFacebookTestUserEmail();
$this->module->haveFacebookTestUserAccount(true);
$testUserEmailAfterRenew = $this->module->grabFacebookTestUserEmail();
$this->assertNotEquals($testUserEmailBeforeRenew, $testUserEmailAfterRenew);
}
public function testSeePostOnFacebookWithAttachedPlace()
{
// precondition #1: I have facebook user
$this->module->haveFacebookTestUserAccount();
// precondition #2: I have published the post with place attached
$params = array('place' => '141971499276483');
$this->facebook->api('me/feed', 'POST', $params);
// assert that post was published in the facebook and place is the same
$this->module->seePostOnFacebookWithAttachedPlace($params['place']);
}
public function testLoginToFacebook()
{
// preconditions: #1 php web server being run
$this->noPhpWebserver();
$browserModule = new PhpBrowser;
$browserModule->_setConfig(array('url' => 'http://localhost:8000'));
$browserModule->_initialize();
$browserModule->_cleanup();
$browserModule->_before($this->makeTest());
SuiteManager::$modules['PhpBrowser'] = $browserModule;
// preconditions: #2 facebook test user was created
$this->module->haveFacebookTestUserAccount();
$testUserFirstName = $this->module->grabFacebookTestUserFirstName();
// preconditions: #3 test user logged in on facebook
$this->module->haveTestUserLoggedInOnFacebook();
// go to our page with facebook login button
$browserModule->amOnPage('/facebook');
// check that yet we are not logged in with facebook
$browserModule->see('You are not Connected.');
// click on "Login with Facebook" button to start login with facebook
$browserModule->click('Login with Facebook');
// check that we are logged in with facebook
$browserModule->see('Your User Object (/me)');
$browserModule->see($testUserFirstName);
// cleanup
unset(SuiteManager::$modules['PhpBrowser']);
$browserModule->_after($this->makeTest());
data::clean();
}
}