/**
     * Tests ContainerConfig::removeComments()
     */
    public function testRemoveComments()
    {
        $jsFile = <<<EOD
/*
 * Comments
 */

// Comments
{"gadgets.container" : ["default"],
"gadgets.parent" : null,
"gadgets.lockedDomainSuffix" : "-a.example.com:8080",
"gadgets.iframeBaseUri" : "/gadgets/ifr",
"gadgets.jsUriTemplate" : "http://%host%/gadgets/js/%js%",
"gadgets.uri.oauth.callbackTemplate" : "//%host%/gadgets/oauthcallback"
}
EOD;
        $containerConfig = new ContainerConfig(Config::get('container_path'));
        $uncommented = $containerConfig->removeComments($jsFile);
        $jsonObj = json_decode($uncommented, true);
        $this->assertNotEquals($uncommented, $jsonObj);
        $this->assertEquals(array("default"), $jsonObj["gadgets.container"]);
        $this->assertEquals(null, $jsonObj["gadgets.parent"]);
        $this->assertEquals("-a.example.com:8080", $jsonObj["gadgets.lockedDomainSuffix"]);
        $this->assertEquals("/gadgets/ifr", $jsonObj["gadgets.iframeBaseUri"]);
        $this->assertEquals("http://%host%/gadgets/js/%js%", $jsonObj["gadgets.jsUriTemplate"]);
        $this->assertEquals("//%host%/gadgets/oauthcallback", $jsonObj["gadgets.uri.oauth.callbackTemplate"]);
    }
 public function handleListMethods(RequestItem $request)
 {
     $containerConfig = new ContainerConfig(Shindig_Config::get('container_path'));
     $gadgetConfig = $containerConfig->getConfig('default', 'gadgets.features');
     if (!isset($gadgetConfig['osapi.services']) || count($gadgetConfig['osapi.services']) == 1) {
         // this should really be set in config/container.js, but if not, we build a complete default set so at least most of it works out-of-the-box
         $gadgetConfig['osapi.services'] = array('gadgets.rpc' => array('container.listMethods'), 'http://%host%/social/rpc' => array("messages.update", "albums.update", "activities.delete", "activities.update", "activities.supportedFields", "albums.get", "activities.get", "mediaitems.update", "messages.get", "appdata.get", "system.listMethods", "people.supportedFields", "messages.create", "mediaitems.delete", "mediaitems.create", "people.get", "people.create", "albums.delete", "messages.delete", "appdata.update", "activities.create", "mediaitems.get", "albums.create", "appdata.delete", "people.update", "appdata.create"), 'http://%host%/gadgets/api/rpc' => array('cache.invalidate'));
     }
     return $gadgetConfig['osapi.services'];
 }
 /**
  * Tests ContainerConfig->getConfig()
  */
 public function testGetConfig()
 {
     $config = $this->ContainerConfig->getConfig('default', 'gadgets.features');
     $this->assertArrayHasKey('core.io', $config);
     $this->assertArrayHasKey('views', $config);
     $this->assertArrayHasKey('rpc', $config);
     $this->assertArrayHasKey('skins', $config);
     $this->assertArrayHasKey('opensocial-0.8', $config);
     $this->assertArrayHasKey('path', $config['opensocial-0.8']);
 }
 public function getSupportedFields($parameters)
 {
     $context = new GadgetContext('GADGET');
     $container = $context->getContainer();
     $containerConfig = new ContainerConfig(Config::get('container_path'));
     $config = $containerConfig->getConfig($container, 'gadgets.features');
     $version = $this->getOpenSocialVersion($config);
     $supportedFields = $config[$version]['supportedFields'];
     if (in_array('people', $parameters)) {
         $ret = $supportedFields['person'];
     } else {
         $ret = $supportedFields['activity'];
     }
     return new ResponseItem(null, null, $ret);
 }