Ejemplo n.º 1
0
 public function testAppCRUD()
 {
     $developer = new Developer(self::$orgConfig);
     $mail = 'phpunit-' . $this->randomString() . '@example.com';
     // Create a developer to test on
     $developer->blankValues();
     $developer->setEmail($mail);
     $developer->setFirstName($this->randomString());
     $developer->setLastName($this->randomString());
     $developer->setUserName($this->randomString());
     try {
         $developer->save();
     } catch (\Exception $e) {
         $this->fail('Cannot save developer at create time: [' . $e->getCode() . '] ' . $e->getMessage());
     }
     $apiproduct = new APIProduct(self::$orgConfig);
     $products = $apiproduct->listProducts();
     shuffle($products);
     $product = array_shift($products);
     $new_product = array_shift($products);
     // Begin create
     $app = new DeveloperApp(self::$orgConfig, $mail);
     $app->setName('phpunit test');
     $app->setAccessType('read');
     $app->setCallbackUrl('http://example.com/');
     $app->setApiProducts(array($product->getName()));
     $app->setAttribute('foo', 'bar');
     try {
         $app->save();
     } catch (\Exception $e) {
         $this->fail('Cannot save app at creation time');
     }
     $this->assertNotEmpty($app->getConsumerKey());
     $this->assertNotEmpty($app->getAppId());
     $this->assertEquals('bar', $app->getAttribute('foo'));
     // End create
     // Begin load
     $app->blankValues();
     try {
         $app->load('phpunit test');
     } catch (\Exception $e) {
         $this->fail('Cannot load app.');
         return;
     }
     $this->assertNotEmpty($app->getConsumerKey());
     $this->assertEquals($app->getDeveloperId(), $developer->getDeveloperId());
     // End load
     // Begin update
     $app->setAttribute('foo', 'baz');
     try {
         $app->save(FALSE);
     } catch (\Exception $e) {
         $this->fail('Cannot save app at update time');
         return;
     }
     $app->blankValues();
     try {
         $app->load('phpunit test');
     } catch (\Exception $e) {
         $this->fail('Cannot reload app after update');
         return;
     }
     $this->assertEquals('baz', $app->getAttribute('foo'));
     // End update
     // Update key
     $key = $app->getConsumerKey();
     $new_product_name = $new_product->getName();
     $app->setApiProducts(array($new_product_name));
     try {
         $app->save();
     } catch (\Exception $e) {
         $this->fail('Cannot save app when updating API Products.');
     }
     $api_products = $app->getApiProducts();
     $cred_api_products = $app->getCredentialApiProducts();
     if (count($api_products) != 1 || $api_products[0] != $new_product_name) {
         $this->fail('Failed to update API Products list');
     }
     if (count($cred_api_products) != 1 || $cred_api_products[0]['apiproduct'] != $new_product_name) {
         $this->fail('Failed to update Credential API Products list');
     }
     $this->assertEquals($key, $app->getConsumerKey(), 'Consumer Key changed when API Product changed.');
     // End update key
     // Create key
     $key = $this->randomString(16);
     $secret = $this->randomString(16);
     try {
         $app->createKey($key, $secret);
     } catch (\Exception $e) {
         $this->fail('Cannot create key: ' . $e->getMessage());
         return;
     }
     $app->blankValues();
     $app->load('phpunit test');
     $this->assertEquals($key, $app->getConsumerKey(), 'Consumer Key changed to our custom value.');
     // End create key
     // Begin delete
     try {
         $app->delete();
     } catch (\Exception $e) {
         $this->fail('Cannot delete app');
     }
     $app->blankValues();
     try {
         $app->load($mail);
         // If we succeed in the load, the developer was not deleted.
         $this->fail('App deletion failed.');
     } catch (\Exception $e) {
         $this->assertEquals(404, $e->getCode());
     }
     // End delete
     // Clean up
     try {
         $developer->delete();
     } catch (\Exception $e) {
     }
 }
Ejemplo n.º 2
0
 /**
  * Implements DrupalEntityControllerInterface::load().
  *
  * @param array $names
  * @param array $conditions
  * @return array
  */
 public function load($ids = array(), $conditions = array())
 {
     $orgs = self::getOrgs($conditions);
     $disableLogging = isset($conditions['disableLogging']) && $conditions['disableLogging'] === TRUE;
     $list = array();
     foreach ($orgs as $org) {
         $config = devconnect_default_org_config($org);
         if ($disableLogging) {
             $config->logger = new \Psr\Log\NullLogger();
             $config->subscribers = array();
         }
         if (array_key_exists('mail', $conditions)) {
             $identifier = $conditions['mail'];
         } elseif (array_key_exists('developerId', $conditions)) {
             $identifier = $conditions['developerId'];
         } else {
             $identifier = NULL;
         }
         if (isset($identifier) && empty($ids)) {
             $dev_app = new DeveloperApp($config, $identifier);
             if (variable_get('devconnect_paging_enabled', FALSE) && method_exists($dev_app, 'usePaging')) {
                 $dev_app->usePaging();
             }
             if (array_key_exists('name', $conditions)) {
                 try {
                     $dev_app->load($conditions['name']);
                     $list += array($dev_app);
                 } catch (ResponseException $e) {
                     self::$lastException = $e;
                 }
             } else {
                 try {
                     $list += $dev_app->getListDetail();
                 } catch (ResponseException $e) {
                     self::$lastException = $e;
                 }
             }
         } elseif (empty($ids)) {
             // Fetch all apps in the org.
             $dev_app = new DeveloperApp($config, '');
             if (variable_get('devconnect_paging_enabled', FALSE) && method_exists($dev_app, 'usePaging')) {
                 $dev_app->usePaging();
             }
             try {
                 $list += $dev_app->listAllApps();
                 $this->addListToCache($list, $ids);
             } catch (ResponseException $e) {
                 self::$lastException = $e;
             }
         } else {
             $sub_list = array();
             // We have a list of appIds. Fetch them now.
             foreach ($ids as $id) {
                 if (isset($this->appCache[$id])) {
                     $sub_list[$id] = $this->appCache[$id];
                 }
             }
             if (count($list) < count($ids)) {
                 $remaining_ids = array_diff($ids, array_keys($list));
                 $dev_app = new DeveloperApp($config, '');
                 foreach ($remaining_ids as $id) {
                     $app = clone $dev_app;
                     try {
                         $app->loadByAppId($id, TRUE);
                         $sub_list[] = $app;
                     } catch (ResponseException $e) {
                         self::$lastException = $e;
                     } catch (ParameterException $e) {
                         self::$lastException = $e;
                     }
                 }
             }
             $list += array_values($sub_list);
         }
     }
     $this->addListToCache($list, $ids);
     $uids = array();
     foreach ($list as $dev_app) {
         if ($dev_app instanceof Apigee\ManagementAPI\DeveloperApp) {
             $email = $dev_app->getDeveloperMail();
             if (!array_key_exists($email, $uids)) {
                 $uids[strtolower($email)] = NULL;
             }
         }
     }
     if (!empty($uids)) {
         $stmt = db_select('users', 'u');
         $stmt->addExpression('LOWER(mail)', 'mail');
         $uids = $stmt->fields('u', array('uid'))->condition('mail', array_keys($uids))->execute()->fetchAllKeyed();
     }
     $uids = array_flip($uids);
     $app_entities = array();
     $include_debug_data = count($list) == 1;
     foreach ($list as $dev_app) {
         if ($dev_app instanceof Apigee\ManagementAPI\DeveloperApp) {
             $id = $dev_app->getAppId();
             $mail = strtolower($dev_app->getDeveloperMail());
             $array = $dev_app->toArray($include_debug_data);
             $array['orgName'] = $dev_app->getConfig()->orgName;
             $array['uid'] = array_key_exists($mail, $uids) ? $uids[$mail] : NULL;
             $app_entity = new DeveloperAppEntity($array);
             $app_entity->checkStatusChange();
             $app_entities[$id] = $app_entity;
         }
     }
     return $app_entities;
 }