| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 | 
							- <?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'
 
-         )
 
-     );
 
-     /**
 
-      * @var Facebook
 
-      */
 
-     protected $module;
 
-     /**
 
-      * @var FacebookDriver
 
-      */
 
-     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();
 
-     }
 
-     /**
 
-      * @covers Facebook::haveFacebookTestUserId
 
-      * @covers Facebook::haveFacebookTestUserAccount
 
-      * @covers Facebook::grabFacebookTestUserEmail
 
-      * @covers Facebook::grabFacebookTestUserAccessToken
 
-      */
 
-     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();
 
-         // precondition #1: I have facebook user
 
-         $this->module->haveFacebookTestUserAccount();
 
-         // precondition #2: I have published the post with place attached
 
-         $params = array('message' => 'I feel great!');
 
-         $this->module->postToFacebookAsTestUser($params);
 
-         // assert that post was published in the facebook and place is the same
 
-         $this->module->seePostOnFacebookWithMessage($params['message']);
 
-     }
 
-     public function testSeePostOnFacebookWithAttachedPlace()
 
-     {
 
-         $this->checkPublishPermissions();
 
-         // precondition #1: I have facebook user
 
-         $this->module->haveFacebookTestUserAccount();
 
-         // precondition #2: I have published the post with place attached
 
-         $params = array('place' => '111227078906045'); //
 
-         $this->module->postToFacebookAsTestUser($params);
 
-         // assert that post was published in the facebook and place is the same
 
-         $this->module->seePostOnFacebookWithAttachedPlace($params['place']);
 
-     }
 
-     public function testLoginToFacebook()
 
-     {
 
-         // precondition: you need to have a server running for this test
 
-         // you can start a php server with: php -S 127.0.0.1:8000 -t tests/data/app
 
-         $browserModule = new PhpBrowser($this->makeContainer());
 
-         $this->initModule($browserModule, ['url' => 'http://localhost:8000']);
 
-         $this->module->_inject($browserModule);
 
-         $this->loginToFacebook($browserModule);
 
-         // cleanup
 
-         $browserModule->_after($this->makeTest());
 
-         data::clean();
 
-     }
 
-     private function loginToFacebook(PhpBrowser $browserModule)
 
-     {
 
-         // preconditions: #1 facebook test user is created
 
-         $this->module->haveFacebookTestUserAccount();
 
-         $testUserName = $this->module->grabFacebookTestUserName();
 
-         // preconditions: #2 test user is 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 on 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($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());
 
-     }
 
- }
 
 
  |