/** * Validates an object * * @param stdClass $element object properties * @param AbstractSpecObject $schema schema this object generated of api specification */ protected function checkObject($element, $schema) { if (isset($schema->sample)) { $this->checkSample($element, $schema->sample); return; } if (isset($schema->discriminator)) { $discriminator = $schema->discriminator; if (!property_exists($element, $discriminator)) { $propName = $schema->getObjectName(); if (isset(static::$ignoreDiscriminatorValues[$propName]) && $discriminator == static::$ignoreDiscriminatorValues[$propName]) { ApiTest::markTestIncomplete(sprintf('%s unexpected discriminator value', $discriminator)); } else { $this->appendError($discriminator, ' unexpected discriminator value'); } return; } $schema = $this->getConcreteTypes($schema, $element->{$discriminator}); if (!$schema) { $this->appendError($element->{$discriminator}, ' unexpected concrete type value'); } unset($schema->discriminator); $this->check($element, $schema); return; } $properties = $schema instanceof ApiEntity ? $schema->getProperties() : (array) $schema; foreach ($element as $p => $value) { if (isset($properties[$p])) { $this->check($value, $properties[$p]); } else { $this->appendError($p, "this property don't exist in Api specifications"); } } return; }
/** * Creates and save RoleImage entity with data from fixtures * * @param string $name Role category data name */ protected function prepareRoleImage($name) { foreach ($this->sets[$name] as &$roleImageData) { if (in_array($roleImageData['platform'], [SERVER_PLATFORMS::GCE, SERVER_PLATFORMS::AZURE])) { $roleImageData['cloudLocation'] = ''; } /* @var $image Entity\Image */ $image = Entity\Image::findOne([['cloudLocation' => $roleImageData['cloudLocation']], ['platform' => $roleImageData['platform']], ['$or' => [['accountId' => static::$user->getAccountId()], ['accountId' => null]]]]); if (empty($image)) { ApiTest::markTestIncomplete(sprintf('Image with cloudLocation %s and platform %s not isset', $roleImageData['cloudLocation'], $roleImageData['platform'])); } $roleImageData['imageId'] = $image->id; ApiTest::createEntity(new Entity\RoleImage(), $roleImageData); } }