public function generateDBEntries() { $peter = ApiTest_Author::create(array('Name' => 'Peter', 'IsMan' => true)); $marie = ApiTest_Author::create(array('Name' => 'Marie', 'IsMan' => false)); $bible = ApiTest_Book::create(array('Title' => 'The Bible', 'Pages' => 2000)); $kamasutra = ApiTest_Book::create(array('Title' => 'Kama Sutra', 'Pages' => 1000)); $helsinki = ApiTest_Library::create(array('Name' => 'Helsinki')); $paris = ApiTest_Library::create(array('Name' => 'Paris')); // write to DB $peter->write(); $marie->write(); $bible->write(); $kamasutra->write(); $helsinki->write(); $paris->write(); // relations $peter->Books()->add($bible); $marie->Books()->add($kamasutra); $helsinki->Books()->add($bible); $helsinki->Books()->add($kamasutra); $paris->Books()->add($kamasutra); // since it doesn't seem to be called automatically $ext = new RESTfulAPI_GroupExtension(); $ext->requireDefaultRecords(); }
/** * Checks sideloading records config */ public function testSideloadedRecords() { Config::inst()->update('RESTfulAPI_EmberDataSerializer', 'sideloaded_records', array('ApiTest_Library' => array('Books'))); Config::inst()->update('ApiTest_Book', 'api_access', true); $serializer = $this->getSerializer(); $dataObject = ApiTest_Library::get()->filter(array('Name' => 'Helsinki'))->first(); $jsonString = $serializer->serialize($dataObject); $jsonObject = json_decode($jsonString); $booksRoot = $serializer->formatName('ApiTest_Book'); $booksRoot = Inflector::pluralize($booksRoot); $this->assertFalse(is_null($jsonObject->{$booksRoot}), "EmberData Serialize should sideload records in an object in JSON root"); $this->assertTrue(is_array($jsonObject->{$booksRoot}), "EmberData Serialize should sideload records as array"); }
/** * Checks embedded records config */ public function testEmbeddedRecords() { Config::inst()->update('RESTfulAPI', 'access_control_policy', 'ACL_CHECK_CONFIG_ONLY'); Config::inst()->update('ApiTest_Library', 'api_access', true); Config::inst()->update('RESTfulAPI', 'embedded_records', array('ApiTest_Library' => array('Books'))); $serializer = $this->getSerializer(); $dataObject = ApiTest_Library::get()->filter(array('Name' => 'Helsinki'))->first(); // api access disabled Config::inst()->update('ApiTest_Book', 'api_access', false); $result = $serializer->serialize($dataObject); $result = json_decode($result); $this->assertEmpty($result->Books, 'Basic Serialize should return empty array for DataObject without permission'); // api access enabled Config::inst()->update('ApiTest_Book', 'api_access', true); $result = $serializer->serialize($dataObject); $result = json_decode($result); $this->assertTrue(is_numeric($result->Books[0]->ID), "Basic Serialize should return a full record for embedded records"); }