PageRenderTime 37ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/Lib/googleads-php-lib/tests/Google/Api/Ads/Common/Lib/AdsUserTest.php

https://github.com/markvince/CakePHP-GAStats-Plugin
PHP | 435 lines | 296 code | 32 blank | 107 comment | 1 complexity | 744f7fe415eb7d88af64649531f91bdb MD5 | raw file
  1. <?php
  2. /**
  3. * Copyright 2011, Google Inc. All Rights Reserved.
  4. *
  5. * Licensed under the Apache License, Version 2.0 (the 'License');
  6. * you may not use this file except in compliance with the License.
  7. * You may obtain a copy of the License at
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an 'AS IS' BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. *
  17. * @package GoogleApiAdsCommon
  18. * @subpackage Util
  19. * @category WebServices
  20. * @copyright 2012, Google Inc. All Rights Reserved.
  21. * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License,
  22. * Version 2.0
  23. */
  24. error_reporting(E_STRICT | E_ALL);
  25. require_once 'Google/Api/Ads/Common/Lib/AdsUser.php';
  26. /**
  27. * Unit tests for {@link AdsUser}.
  28. * @group small
  29. */
  30. class AdsUserTest extends PHPUnit_Framework_TestCase {
  31. const DEFAULT_VERSION = 'v1';
  32. const DEFAULT_SERVER = 'https://ads.google.com';
  33. const DEFAULT_LOGS_DIR = '/var/log/default';
  34. private $logsRelativePathBase;
  35. protected function setUp() {
  36. $this->logsRelativePathBase = dirname(__FILE__) . '/../';
  37. }
  38. /**
  39. * Tests loading relative logging settings.
  40. * @covers AdsUser::LoadSettings
  41. */
  42. public function testLoadSettings_Logging_Relative() {
  43. $logDirPath = 'Lib';
  44. $settings = array(
  45. 'LOGGING' => array(
  46. 'PATH_RELATIVE' => '1',
  47. 'LIB_LOG_DIR_PATH' => $logDirPath,
  48. ),
  49. );
  50. $settingsFilePath = $this->createTempSettingsFile($settings);
  51. $user = new TestAdsUser();
  52. $user->LoadSettings($settingsFilePath, self::DEFAULT_VERSION,
  53. self::DEFAULT_SERVER, self::DEFAULT_LOGS_DIR,
  54. $this->logsRelativePathBase);
  55. $expected = realpath($this->logsRelativePathBase . '/' . $logDirPath);
  56. $this->assertEquals($expected, $user->GetLogsDirectory());
  57. }
  58. /**
  59. * Tests loading relative logging settings with an invalid path.
  60. * @covers AdsUser::LoadSettings
  61. */
  62. public function testLoadSettings_Logging_Relative_InvalidPath() {
  63. $logsRelativeBasePath = '/foo/bar';
  64. $logDirPath = 'logs';
  65. $settings = array(
  66. 'LOGGING' => array(
  67. 'PATH_RELATIVE' => '1',
  68. 'LIB_LOG_DIR_PATH' => $logDirPath,
  69. ),
  70. );
  71. $settingsFilePath = $this->createTempSettingsFile($settings);
  72. $user = new TestAdsUser();
  73. $user->LoadSettings($settingsFilePath, self::DEFAULT_VERSION,
  74. self::DEFAULT_SERVER, self::DEFAULT_LOGS_DIR, $logsRelativeBasePath);
  75. $this->assertEquals(self::DEFAULT_LOGS_DIR, $user->GetLogsDirectory());
  76. }
  77. /**
  78. * Tests loading relative logging settings with a missing path.
  79. * @covers AdsUser::LoadSettings
  80. */
  81. public function testLoadSettings_Logging_Relative_MissingPath() {
  82. $settings = array(
  83. 'LOGGING' => array(
  84. 'PATH_RELATIVE' => '1',
  85. ),
  86. );
  87. $settingsFilePath = $this->createTempSettingsFile($settings);
  88. $user = new TestAdsUser();
  89. $user->LoadSettings($settingsFilePath, self::DEFAULT_VERSION,
  90. self::DEFAULT_SERVER, self::DEFAULT_LOGS_DIR,
  91. $this->logsRelativePathBase);
  92. $this->assertEquals(self::DEFAULT_LOGS_DIR, $user->GetLogsDirectory());
  93. }
  94. /**
  95. * Tests loading logging settings with relative unspecified.
  96. * @covers AdsUser::LoadSettings
  97. */
  98. public function testLoadSettings_Logging_Relative_Unspecified() {
  99. $logDirPath = '/var/log/ads';
  100. $settings = array(
  101. 'LOGGING' => array(
  102. 'LIB_LOG_DIR_PATH' => $logDirPath,
  103. ),
  104. );
  105. $settingsFilePath = $this->createTempSettingsFile($settings);
  106. $user = new TestAdsUser();
  107. $user->LoadSettings($settingsFilePath, self::DEFAULT_VERSION,
  108. self::DEFAULT_SERVER, self::DEFAULT_LOGS_DIR,
  109. $this->logsRelativePathBase);
  110. $this->assertEquals($logDirPath, $user->GetLogsDirectory());
  111. }
  112. /**
  113. * Tests loading absolute logging settings.
  114. * @covers AdsUser::LoadSettings
  115. */
  116. public function testLoadSettings_Logging_Absolute() {
  117. $logDirPath = '/var/log/ads';
  118. $settings = array(
  119. 'LOGGING' => array(
  120. 'PATH_RELATIVE' => '0',
  121. 'LIB_LOG_DIR_PATH' => $logDirPath,
  122. ),
  123. );
  124. $settingsFilePath = $this->createTempSettingsFile($settings);
  125. $user = new TestAdsUser();
  126. $user->LoadSettings($settingsFilePath, self::DEFAULT_VERSION,
  127. self::DEFAULT_SERVER, self::DEFAULT_LOGS_DIR,
  128. $this->logsRelativePathBase);
  129. $this->assertEquals($logDirPath, $user->GetLogsDirectory());
  130. }
  131. /**
  132. * Tests loading default logging settings.
  133. * @covers AdsUser::LoadSettings
  134. */
  135. public function testLoadSettings_Logging_Defaults() {
  136. $settings = array(
  137. 'LOGGING' => array(),
  138. );
  139. $settingsFilePath = $this->createTempSettingsFile($settings);
  140. $user = new TestAdsUser();
  141. $user->LoadSettings($settingsFilePath, self::DEFAULT_VERSION,
  142. self::DEFAULT_SERVER, self::DEFAULT_LOGS_DIR,
  143. $this->logsRelativePathBase);
  144. $this->assertEquals(self::DEFAULT_LOGS_DIR, $user->GetLogsDirectory());
  145. }
  146. /**
  147. * Tests loading server settings.
  148. * @covers AdsUser::LoadSettings
  149. */
  150. public function testLoadSettings_Server() {
  151. $defaultVersion = 'v2';
  152. $defaultServer = 'https://testing.google.com';
  153. $settings = array(
  154. 'SERVER' => array(
  155. 'DEFAULT_VERSION' => $defaultVersion,
  156. 'DEFAULT_SERVER' => $defaultServer,
  157. ),
  158. );
  159. $settingsFilePath = $this->createTempSettingsFile($settings);
  160. $user = new TestAdsUser();
  161. $user->LoadSettings($settingsFilePath, self::DEFAULT_VERSION,
  162. self::DEFAULT_SERVER, self::DEFAULT_LOGS_DIR,
  163. $this->logsRelativePathBase);
  164. $this->assertEquals($defaultVersion, $user->GetDefaultVersion());
  165. $this->assertEquals($defaultServer, $user->GetDefaultServer());
  166. }
  167. /**
  168. * Tests loading default server settings.
  169. * @covers AdsUser::LoadSettings
  170. */
  171. public function testLoadSettings_Server_Defaults() {
  172. $settings = array(
  173. 'SERVER' => array(),
  174. );
  175. $settingsFilePath = $this->createTempSettingsFile($settings);
  176. $user = new TestAdsUser();
  177. $user->LoadSettings($settingsFilePath, self::DEFAULT_VERSION,
  178. self::DEFAULT_SERVER, self::DEFAULT_LOGS_DIR,
  179. $this->logsRelativePathBase);
  180. $this->assertEquals(self::DEFAULT_VERSION, $user->GetDefaultVersion());
  181. $this->assertEquals(self::DEFAULT_SERVER, $user->GetDefaultServer());
  182. }
  183. /**
  184. * Tests loading SOAP settings.
  185. * @covers AdsUser::LoadSettings
  186. */
  187. public function testLoadSettings_Soap() {
  188. $compression = false;
  189. $compressionLevel = '5';
  190. $wsdlCache = WSDL_CACHE_MEMORY;
  191. $settings = array(
  192. 'SOAP' => array(
  193. 'COMPRESSION' => $compression,
  194. 'COMPRESSION_LEVEL' => $compressionLevel,
  195. 'WSDL_CACHE' => $wsdlCache,
  196. ),
  197. );
  198. $settingsFilePath = $this->createTempSettingsFile($settings);
  199. $user = new TestAdsUser();
  200. $user->LoadSettings($settingsFilePath, self::DEFAULT_VERSION,
  201. self::DEFAULT_SERVER, self::DEFAULT_LOGS_DIR,
  202. $this->logsRelativePathBase);
  203. $this->assertEquals($compression, $user->IsSoapCompressionEnabled());
  204. $this->assertEquals($compressionLevel, $user->GetSoapCompressionLevel());
  205. $this->assertEquals($wsdlCache, $user->GetWsdlCacheType());
  206. }
  207. /**
  208. * Tests loading SOAP settings with an invalid compression level.
  209. * @covers AdsUser::LoadSettings
  210. */
  211. public function testLoadSettings_Soap_InvalidCompression() {
  212. $compressionLevel = '100';
  213. $settings = array(
  214. 'SOAP' => array(
  215. 'COMPRESSION_LEVEL' => $compressionLevel,
  216. ),
  217. );
  218. $settingsFilePath = $this->createTempSettingsFile($settings);
  219. $user = new TestAdsUser();
  220. $user->LoadSettings($settingsFilePath, self::DEFAULT_VERSION,
  221. self::DEFAULT_SERVER, self::DEFAULT_LOGS_DIR,
  222. $this->logsRelativePathBase);
  223. $this->assertEquals(1, $user->GetSoapCompressionLevel());
  224. }
  225. /**
  226. * Tests loading SOAP settings with an invalid WSDL cache value.
  227. * @covers AdsUser::LoadSettings
  228. */
  229. public function testLoadSettings_Soap_InvalidWsdlCache() {
  230. $wsdlCache = '100';
  231. $settings = array(
  232. 'SOAP' => array(
  233. 'WSDL_CACHE' => $wsdlCache,
  234. ),
  235. );
  236. $settingsFilePath = $this->createTempSettingsFile($settings);
  237. $user = new TestAdsUser();
  238. $user->LoadSettings($settingsFilePath, self::DEFAULT_VERSION,
  239. self::DEFAULT_SERVER, self::DEFAULT_LOGS_DIR,
  240. $this->logsRelativePathBase);
  241. $this->assertEquals(WSDL_CACHE_NONE, $user->GetWsdlCacheType());
  242. }
  243. /**
  244. * Tests loading default SOAP settings.
  245. * @covers AdsUser::LoadSettings
  246. */
  247. public function testLoadSettings_Soap_Defaults() {
  248. $settings = array(
  249. 'SOAP' => array(),
  250. );
  251. $settingsFilePath = $this->createTempSettingsFile($settings);
  252. $user = new TestAdsUser();
  253. $user->LoadSettings($settingsFilePath, self::DEFAULT_VERSION,
  254. self::DEFAULT_SERVER, self::DEFAULT_LOGS_DIR,
  255. $this->logsRelativePathBase);
  256. $this->assertEquals(true, $user->IsSoapCompressionEnabled());
  257. $this->assertEquals(1, $user->GetSoapCompressionLevel());
  258. $this->assertEquals(WSDL_CACHE_NONE, $user->GetWsdlCacheType());
  259. }
  260. /**
  261. * Tests loading proxy settings.
  262. * @covers AdsUser::LoadSettings
  263. */
  264. public function testLoadSettings_Proxy() {
  265. $host = 'localhost';
  266. $port = '4040';
  267. $proxyUser = 'foo';
  268. $proxyPassword = 'bar';
  269. $settings = array(
  270. 'PROXY' => array(
  271. 'HOST' => $host,
  272. 'PORT' => $port,
  273. 'USER' => $proxyUser,
  274. 'PASSWORD' => $proxyPassword,
  275. ),
  276. );
  277. $settingsFilePath = $this->createTempSettingsFile($settings);
  278. $user = new TestAdsUser();
  279. $user->LoadSettings($settingsFilePath, self::DEFAULT_VERSION,
  280. self::DEFAULT_SERVER, self::DEFAULT_LOGS_DIR,
  281. $this->logsRelativePathBase);
  282. $this->assertEquals($host, HTTP_PROXY_HOST);
  283. $this->assertEquals($port, HTTP_PROXY_PORT);
  284. $this->assertEquals($proxyUser, HTTP_PROXY_USER);
  285. $this->assertEquals($proxyPassword, HTTP_PROXY_PASSWORD);
  286. }
  287. /**
  288. * Tests loading auth settings.
  289. * @covers AdsUser::LoadSettings
  290. */
  291. public function testLoadSettings_Auth() {
  292. $oAuth2HandlerClass = 'SimpleOAuth2Handler';
  293. $settings = array(
  294. 'AUTH' => array(
  295. 'OAUTH2_HANDLER_CLASS' => $oAuth2HandlerClass,
  296. ),
  297. );
  298. $settingsFilePath = $this->createTempSettingsFile($settings);
  299. $user = new TestAdsUser();
  300. $user->LoadSettings($settingsFilePath, self::DEFAULT_VERSION,
  301. self::DEFAULT_SERVER, self::DEFAULT_LOGS_DIR,
  302. $this->logsRelativePathBase);
  303. $this->assertEquals($oAuth2HandlerClass,
  304. get_class($user->GetOAuth2Handler()));
  305. }
  306. /**
  307. * Tests loading default auth settings.
  308. * @covers AdsUser::LoadSettings
  309. */
  310. public function testLoadSettings_Auth_Defaults() {
  311. $settings = array(
  312. 'AUTH' => array(),
  313. );
  314. $settingsFilePath = $this->createTempSettingsFile($settings);
  315. $user = new TestAdsUser();
  316. $user->LoadSettings($settingsFilePath, self::DEFAULT_VERSION,
  317. self::DEFAULT_SERVER, self::DEFAULT_LOGS_DIR,
  318. $this->logsRelativePathBase);
  319. $this->assertEquals('SimpleOAuth2Handler',
  320. get_class($user->GetOAuth2Handler()));
  321. }
  322. /**
  323. * Tests loading SSL settings.
  324. * @covers AdsUser::LoadSettings
  325. */
  326. public function testLoadSettings_Ssl() {
  327. $verifyPeer = 0;
  328. $verifyHost = 0;
  329. $caPath = '/etc/ssl/certs';
  330. $caFile = '/etc/ssl/cafile';
  331. $settings = array(
  332. 'SSL' => array(
  333. 'VERIFY_PEER' => $verifyPeer,
  334. 'VERIFY_HOST' => $verifyHost,
  335. 'CA_PATH' => $caPath,
  336. 'CA_FILE' => $caFile,
  337. ),
  338. );
  339. $settingsFilePath = $this->createTempSettingsFile($settings);
  340. $user = new TestAdsUser();
  341. $user->LoadSettings($settingsFilePath, self::DEFAULT_VERSION,
  342. self::DEFAULT_SERVER, self::DEFAULT_LOGS_DIR,
  343. $this->logsRelativePathBase);
  344. $this->assertEquals($verifyPeer, SSL_VERIFY_PEER);
  345. $this->assertEquals($verifyHost, SSL_VERIFY_HOST);
  346. $this->assertEquals($caPath, SSL_CA_PATH);
  347. $this->assertEquals($caFile, SSL_CA_FILE);
  348. }
  349. /**
  350. * Creates a temporary settings file from the array of settings provided.
  351. * @param array $settings the settings to use
  352. * @return string the path to the temp file
  353. */
  354. private function createTempSettingsFile(array $settings) {
  355. $filePath = tempnam(sys_get_temp_dir(), 'settings.ini.');
  356. $file = fopen($filePath, 'w');
  357. foreach ($settings as $section => $properties) {
  358. fwrite($file, sprintf("[%s]\n", $section));
  359. foreach ($properties as $name => $value) {
  360. if ($value === false) {
  361. $value = '0';
  362. }
  363. fwrite($file, sprintf("%s = '%s'\n", $name, $value));
  364. }
  365. }
  366. fclose($file);
  367. return $filePath;
  368. }
  369. }
  370. /**
  371. * A test class that extends AdsUser.
  372. */
  373. class TestAdsUser extends AdsUser {
  374. const USER_AGENT_HEADER_NAME = 'applicationName';
  375. const LIB_VERSION = '2.13.0';
  376. const LIB_NAME = "DfpApi-PHP";
  377. const APPLICATION_NAME = 'GoogleTestPhp';
  378. const OAUTH2_SCOPE = '';
  379. const HANDLER_CLASS = 'SimpleOAuth2Handler';
  380. /**
  381. * Creates a new instance of this test subclass.
  382. */
  383. public function __construct() {
  384. parent::__construct();
  385. $this->updateClientLibraryUserAgent(self::APPLICATION_NAME);
  386. }
  387. /**
  388. * @see AdsUser::GetUserAgentHeaderName()
  389. */
  390. public function GetUserAgentHeaderName() {
  391. return self::USER_AGENT_HEADER_NAME;
  392. }
  393. /**
  394. * @see AdsUser::GetClientLibraryNameAndVersion()
  395. */
  396. public function GetClientLibraryNameAndVersion() {
  397. return array(self::LIB_NAME, self::LIB_VERSION);
  398. }
  399. public function GetDefaultOAuth2Handler($className = null) {
  400. $className = !empty($className) ? $className : self::HANDLER_CLASS;
  401. return new $className(array(self::OAUTH2_SCOPE));
  402. }
  403. }