forked from friendica/friendica-addons
		
	Add explicit dependencies to twitter addon
This commit is contained in:
		
					parent
					
						
							
								01738518a2
							
						
					
				
			
			
				commit
				
					
						d18bb44f8a
					
				
			
		
					 45 changed files with 6653 additions and 14 deletions
				
			
		
							
								
								
									
										256
									
								
								twitter/vendor/abraham/twitteroauth/tests/TwitterOAuthTest.php
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										256
									
								
								twitter/vendor/abraham/twitteroauth/tests/TwitterOAuthTest.php
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,256 @@ | |||
| <?php | ||||
| /** | ||||
|  * WARNING: Running these tests will post and delete through the actual Twitter account. | ||||
|  */ | ||||
| namespace Abraham\TwitterOAuth\Test; | ||||
| 
 | ||||
| use Abraham\TwitterOAuth\TwitterOAuth; | ||||
| 
 | ||||
| class TwitterOAuthTest extends \PHPUnit_Framework_TestCase | ||||
| { | ||||
|     /** @var TwitterOAuth */ | ||||
|     protected $twitter; | ||||
| 
 | ||||
|     protected function setUp() | ||||
|     { | ||||
|         $this->twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET); | ||||
|     } | ||||
| 
 | ||||
|     public function testBuildClient() | ||||
|     { | ||||
|         $this->assertObjectHasAttribute('consumer', $this->twitter); | ||||
|         $this->assertObjectHasAttribute('token', $this->twitter); | ||||
|     } | ||||
| 
 | ||||
|     public function testSetOauthToken() | ||||
|     { | ||||
|         $twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET); | ||||
|         $twitter->setOauthToken(ACCESS_TOKEN, ACCESS_TOKEN_SECRET); | ||||
|         $this->assertObjectHasAttribute('consumer', $twitter); | ||||
|         $this->assertObjectHasAttribute('token', $twitter); | ||||
|         $twitter->get('friendships/show', ['target_screen_name' => 'twitterapi']); | ||||
|         $this->assertEquals(200, $twitter->getLastHttpCode()); | ||||
|     } | ||||
| 
 | ||||
|     public function testOauth2Token() | ||||
|     { | ||||
|         $twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET); | ||||
|         $result = $twitter->oauth2('oauth2/token', ['grant_type' => 'client_credentials']); | ||||
|         $this->assertEquals(200, $twitter->getLastHttpCode()); | ||||
|         $this->assertObjectHasAttribute('token_type', $result); | ||||
|         $this->assertObjectHasAttribute('access_token', $result); | ||||
|         $this->assertEquals('bearer', $result->token_type); | ||||
|         return $result; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @depends testOauth2Token | ||||
|      */ | ||||
|     public function testBearerToken($accessToken) | ||||
|     { | ||||
|         $twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, null, $accessToken->access_token); | ||||
|         $result = $twitter->get('statuses/user_timeline', ['screen_name' => 'twitterapi']); | ||||
|         if ($twitter->getLastHttpCode() !== 200) { | ||||
|             $this->assertEquals('foo', substr($accessToken->access_token, 0, 75)); | ||||
|             $this->assertEquals('foo', print_r($result, true)); | ||||
|         } | ||||
|         $this->assertEquals(200, $twitter->getLastHttpCode()); | ||||
|         return $accessToken; | ||||
|     } | ||||
| 
 | ||||
|     // This causes issues for parallel run tests.
 | ||||
|     // /**
 | ||||
|     //  * @depends testBearerToken
 | ||||
|     //  */
 | ||||
|     // public function testOauth2TokenInvalidate($accessToken)
 | ||||
|     // {
 | ||||
|     //     $twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
 | ||||
|     //     // HACK: access_token is already urlencoded but gets urlencoded again breaking the invalidate request.
 | ||||
|     //     $result = $twitter->oauth2(
 | ||||
|     //         'oauth2/invalidate_token',
 | ||||
|     //         array('access_token' => urldecode($accessToken->access_token))
 | ||||
|     //     );
 | ||||
|     //     $this->assertEquals(200, $twitter->getLastHttpCode());
 | ||||
|     //     $this->assertObjectHasAttribute('access_token', $result);
 | ||||
|     //     return $result;
 | ||||
|     // }
 | ||||
| 
 | ||||
|     public function testOauthRequestToken() | ||||
|     { | ||||
|         $twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET); | ||||
|         $result = $twitter->oauth('oauth/request_token', ['oauth_callback' => OAUTH_CALLBACK]); | ||||
|         $this->assertEquals(200, $twitter->getLastHttpCode()); | ||||
|         $this->assertArrayHasKey('oauth_token', $result); | ||||
|         $this->assertArrayHasKey('oauth_token_secret', $result); | ||||
|         $this->assertArrayHasKey('oauth_callback_confirmed', $result); | ||||
|         $this->assertEquals('true', $result['oauth_callback_confirmed']); | ||||
|         return $result; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @expectedException \Abraham\TwitterOAuth\TwitterOAuthException | ||||
|      * @expectedExceptionMessage Could not authenticate you | ||||
|      */ | ||||
|     public function testOauthRequestTokenException() | ||||
|     { | ||||
|         $twitter = new TwitterOAuth('CONSUMER_KEY', 'CONSUMER_SECRET'); | ||||
|         $result = $twitter->oauth('oauth/request_token', ['oauth_callback' => OAUTH_CALLBACK]); | ||||
|         return $result; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @expectedException \Abraham\TwitterOAuth\TwitterOAuthException | ||||
|      * @expectedExceptionMessage Invalid oauth_verifier parameter | ||||
|      * @depends testOauthRequestToken | ||||
|      */ | ||||
|     public function testOauthAccessTokenTokenException(array $requestToken) | ||||
|     { | ||||
|         // Can't test this without a browser logging into Twitter so check for the correct error instead.
 | ||||
|         $twitter = new TwitterOAuth( | ||||
|             CONSUMER_KEY, | ||||
|             CONSUMER_SECRET, | ||||
|             $requestToken['oauth_token'], | ||||
|             $requestToken['oauth_token_secret'] | ||||
|         ); | ||||
|         $twitter->oauth("oauth/access_token", ["oauth_verifier" => "fake_oauth_verifier"]); | ||||
|     } | ||||
| 
 | ||||
|     public function testUrl() | ||||
|     { | ||||
|         $url = $this->twitter->url('oauth/authorize', ['foo' => 'bar', 'baz' => 'qux']); | ||||
|         $this->assertEquals('https://api.twitter.com/oauth/authorize?foo=bar&baz=qux', $url); | ||||
|     } | ||||
| 
 | ||||
|     public function testGetAccountVerifyCredentials() | ||||
|     { | ||||
|         // Include entities boolean added to test parameter value cohearsion
 | ||||
|         $this->twitter->get('account/verify_credentials', ["include_entities" => false]); | ||||
|         $this->assertEquals(200, $this->twitter->getLastHttpCode()); | ||||
|     } | ||||
| 
 | ||||
|     // BUG: testing is too unreliable for now
 | ||||
|     // public function testSetProxy()
 | ||||
|     // {
 | ||||
|     //     $this->twitter->setProxy(array(
 | ||||
|     //         'CURLOPT_PROXY' => PROXY,
 | ||||
|     //         'CURLOPT_PROXYUSERPWD' => PROXYUSERPWD,
 | ||||
|     //         'CURLOPT_PROXYPORT' => PROXYPORT,
 | ||||
|     //     ));
 | ||||
|     //     $this->twitter->setTimeouts(60, 60);
 | ||||
|     //     $result = $this->twitter->get('account/verify_credentials');
 | ||||
|     //     $this->assertEquals(200, $this->twitter->getLastHttpCode());
 | ||||
|     //     $this->assertObjectHasAttribute('id', $result);
 | ||||
|     // }
 | ||||
| 
 | ||||
|     public function testGetStatusesMentionsTimeline() | ||||
|     { | ||||
|         $this->twitter->get('statuses/mentions_timeline'); | ||||
|         $this->assertEquals(200, $this->twitter->getLastHttpCode()); | ||||
|     } | ||||
| 
 | ||||
|     public function testGetSearchTweets() | ||||
|     { | ||||
|         $result = $this->twitter->get('search/tweets', ['q' => 'twitter']); | ||||
|         $this->assertEquals(200, $this->twitter->getLastHttpCode()); | ||||
|         return $result->statuses; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @depends testGetSearchTweets | ||||
|      */ | ||||
|     public function testGetSearchTweetsWithMaxId($statuses) | ||||
|     { | ||||
|         $maxId = array_pop($statuses)->id_str; | ||||
|         $this->twitter->get('search/tweets', ['q' => 'twitter', 'max_id' => $maxId]); | ||||
|         $this->assertEquals(200, $this->twitter->getLastHttpCode()); | ||||
|     } | ||||
| 
 | ||||
|     public function testPostFavoritesCreate() | ||||
|     { | ||||
|         $result = $this->twitter->post('favorites/create', ['id' => '6242973112']); | ||||
|         if ($this->twitter->getLastHttpCode() == 403) { | ||||
|             // Status already favorited
 | ||||
|             $this->assertEquals(139, $result->errors[0]->code); | ||||
|         } else { | ||||
|             $this->assertEquals(200, $this->twitter->getLastHttpCode()); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @depends testPostFavoritesCreate | ||||
|      */ | ||||
|     public function testPostFavoritesDestroy() | ||||
|     { | ||||
|         $this->twitter->post('favorites/destroy', ['id' => '6242973112']); | ||||
|         $this->assertEquals(200, $this->twitter->getLastHttpCode()); | ||||
|     } | ||||
| 
 | ||||
|     public function testPostStatusesUpdateWithMedia() | ||||
|     { | ||||
|         $this->twitter->setTimeouts(60, 30); | ||||
|         // Image source https://www.flickr.com/photos/titrans/8548825587/
 | ||||
|         $file_path = __DIR__ . '/kitten.jpg'; | ||||
|         $result = $this->twitter->upload('media/upload', ['media' => $file_path]); | ||||
|         $this->assertEquals(200, $this->twitter->getLastHttpCode()); | ||||
|         $this->assertObjectHasAttribute('media_id_string', $result); | ||||
|         $parameters = ['status' => 'Hello World ' . time(), 'media_ids' => $result->media_id_string]; | ||||
|         $result = $this->twitter->post('statuses/update', $parameters); | ||||
|         $this->assertEquals(200, $this->twitter->getLastHttpCode()); | ||||
|         if ($this->twitter->getLastHttpCode() == 200) { | ||||
|             $result = $this->twitter->post('statuses/destroy/' . $result->id_str); | ||||
|         } | ||||
|         return $result; | ||||
|     } | ||||
| 
 | ||||
|     public function testPostStatusesUpdateWithMediaChunked() | ||||
|     { | ||||
|         $this->twitter->setTimeouts(60, 30); | ||||
|         // Video source http://www.sample-videos.com/
 | ||||
|         $file_path = __DIR__ . '/video.mp4'; | ||||
|         $result = $this->twitter->upload('media/upload', ['media' => $file_path, 'media_type' => 'video/mp4'], true); | ||||
|         $this->assertEquals(201, $this->twitter->getLastHttpCode()); | ||||
|         $this->assertObjectHasAttribute('media_id_string', $result); | ||||
|         $parameters = ['status' => 'Hello World ' . time(), 'media_ids' => $result->media_id_string]; | ||||
|         $result = $this->twitter->post('statuses/update', $parameters); | ||||
|         $this->assertEquals(200, $this->twitter->getLastHttpCode()); | ||||
|         if ($this->twitter->getLastHttpCode() == 200) { | ||||
|             $result = $this->twitter->post('statuses/destroy/' . $result->id_str); | ||||
|         } | ||||
|         return $result; | ||||
|     } | ||||
| 
 | ||||
|     public function testPostStatusesUpdateUtf8() | ||||
|     { | ||||
|         $result = $this->twitter->post('statuses/update', ['status' => 'xこんにちは世界 ' . time()]); | ||||
|         $this->assertEquals(200, $this->twitter->getLastHttpCode()); | ||||
|         return $result; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @depends testPostStatusesUpdateUtf8 | ||||
|      */ | ||||
|     public function testPostStatusesDestroy($status) | ||||
|     { | ||||
|         $this->twitter->post('statuses/destroy/' . $status->id_str); | ||||
|         $this->assertEquals(200, $this->twitter->getLastHttpCode()); | ||||
|     } | ||||
| 
 | ||||
|     public function testLastResult() | ||||
|     { | ||||
|         $this->twitter->get('search/tweets', ['q' => 'twitter']); | ||||
|         $this->assertEquals('search/tweets', $this->twitter->getLastApiPath()); | ||||
|         $this->assertEquals(200, $this->twitter->getLastHttpCode()); | ||||
|         $this->assertObjectHasAttribute('statuses', $this->twitter->getLastBody()); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @depends testLastResult | ||||
|      */ | ||||
|     public function testResetLastResponse() | ||||
|     { | ||||
|         $this->twitter->resetLastResponse(); | ||||
|         $this->assertEquals('', $this->twitter->getLastApiPath()); | ||||
|         $this->assertEquals(0, $this->twitter->getLastHttpCode()); | ||||
|         $this->assertEquals([], $this->twitter->getLastBody()); | ||||
|     } | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue