/** * Attempts to fetch the email address associated with a developerId. * * If no such developer exists, null is returned. We turn off all logging, * both by the main logger and by any subscribers. (The exception is that * non-404 ResponseExceptions are logged.) It is therefore the * responsibility of any client of this method to handle appropriate * logging. * * @param string $id * The developerId of the developer in question * * @return string|null * The email address of the developer, or null if no such developer * exists. */ private function getDeveloperMailById($id) { static $devs = array(); if (!isset($devs[$id])) { $cached_logger = self::$logger; $config = clone $this->config; // Suppress (almost) all logging. $config->logger = new \Psr\Log\NullLogger(); $config->subscribers = array(); $dev = new Developer($config); try { $dev->load($id); $devs[$id] = $dev->getEmail(); } catch (ResponseException $e) { $devs[$id] = null; // Log exceptions that are NOT 404s. if ($e->getCode() != 404) { $warning = 'Attempt to load dev “%s” resulted in response code of %d.'; $warningArgs = array($id, $e->getCode()); $cached_logger->warning(vsprintf($warning, $warningArgs)); } } self::$logger = $cached_logger; } return $devs[$id]; }
public function testDeveloperLoadAll() { $developer = new Developer(self::$orgConfig); try { $list = $developer->loadAllDevelopers(); } catch (\Exception $e) { $this->fail('Error fetching all developers'); return; } if (empty($list)) { $this->fail('Empty detailed developer list'); return; } }
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) { } }
/** * Updates the email address associated with a developer. * * By default, we do not support changing the developer's email address on * the user-profile form -- we disable the element. However, customer- * specific code may do so, hence this function. * * @param \Drupal\devconnect_user\DeveloperEntity $entity * The entity whose email address is to be changed. * @param string $new_email * The new email to be assigned to this entity. * * @return bool * TRUE on success, FALSE on failure. */ public function updateEmail(DeveloperEntity $entity, $new_email) { $saved = FALSE; if (empty($entity->orgNames)) { $entity->orgNames = array('default'); } foreach ($entity->orgNames as $org) { if (module_exists('devconnect_multiorg')) { $org = devconnect_multiorg_find_requested_org($org); } $config = devconnect_default_org_config($org); try { $dev = new Developer($config); $dev->load($entity->developerId); $dev->setEmail($new_email); $dev->save(TRUE, $entity->email); $saved = TRUE; $this->devCache[$entity->developerId] = $dev; $entity->email = $new_email; } catch (Exception $e) { watchdog('devconnect_user', 'Error updating the developer email: %response_message', array('%response_message' => $e->getMessage()), WATCHDOG_ERROR); } } return $saved; }