123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- <?php
- require_once 'tests/data/app/data.php';
- use Codeception\Module;
- use Codeception\Module\Facebook;
- use Codeception\Module\PhpBrowser;
- use Codeception\Lib\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' => ['publish_actions', 'user_posts'],
- 'name' => 'Codeception Testuser'
- )
- );
-
- protected $module;
-
- protected $facebook;
- protected function makeTest()
- {
- return Stub::makeEmpty(
- '\Codeception\Test\Cept',
- array('dispatcher' => Stub::makeEmpty('Symfony\Component\EventDispatcher\EventDispatcher'))
- );
- }
- protected function makeContainer()
- {
- return \Codeception\Util\Stub::make('Codeception\Lib\ModuleContainer');
- }
- public function setUp()
- {
- $this->module = new Facebook($this->makeContainer());
- $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();
- }
-
- public function testHaveFacebookTestUserAccount()
- {
- $this->module->haveFacebookTestUserAccount(false);
- $this->assertNotEmpty($this->module->grabFacebookTestUserId());
- $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);
- $testUserIdBeforeRenew = $this->module->grabFacebookTestUserId();
- $this->module->haveFacebookTestUserAccount(true);
- $testUserIdAfterRenew = $this->module->grabFacebookTestUserId();
- $this->assertNotEquals($testUserIdBeforeRenew, $testUserIdAfterRenew);
- $this->assertEquals(ucwords($this->config['test_user']['name']), $this->module->grabFacebookTestUserName());
- }
- public function testSeePostOnFacebookWithMessage()
- {
- $this->checkPublishPermissions();
-
- $this->module->haveFacebookTestUserAccount();
-
- $params = array('message' => 'I feel great!');
- $this->module->postToFacebookAsTestUser($params);
-
- $this->module->seePostOnFacebookWithMessage($params['message']);
- }
- public function testSeePostOnFacebookWithAttachedPlace()
- {
- $this->checkPublishPermissions();
-
- $this->module->haveFacebookTestUserAccount();
-
- $params = array('place' => '111227078906045');
- $this->module->postToFacebookAsTestUser($params);
-
- $this->module->seePostOnFacebookWithAttachedPlace($params['place']);
- }
- public function testLoginToFacebook()
- {
-
-
- $browserModule = new PhpBrowser($this->makeContainer());
- $this->initModule($browserModule, ['url' => 'http://localhost:8000']);
- $this->module->_inject($browserModule);
- $this->loginToFacebook($browserModule);
-
- $browserModule->_after($this->makeTest());
- data::clean();
- }
- private function loginToFacebook(PhpBrowser $browserModule)
- {
-
- $this->module->haveFacebookTestUserAccount();
- $testUserName = $this->module->grabFacebookTestUserName();
-
- $this->module->haveTestUserLoggedInOnFacebook();
-
- $browserModule->amOnPage('/facebook');
-
- $browserModule->see('You are not Connected.');
-
- $browserModule->click('Login with Facebook');
-
- $browserModule->see('Your User Object (/me)');
- $browserModule->see($testUserName);
- }
- private function checkPublishPermissions()
- {
- if (!in_array('publish_actions', $this->config['test_user']['permissions']) ||
- !in_array('user_posts', $this->config['test_user']['permissions'])
- ) {
- $this->markTestSkipped("You need both publish_actions and user_posts permissions for this test");
- }
- }
- private function initModule(PhpBrowser $browserModule, array $params)
- {
- $browserModule->_setConfig($params);
- $browserModule->_initialize();
- $browserModule->_before($this->makeTest());
- }
- }
|