public function testRelatedSiteAccesses()
{
$mainRepo = 'main';
$fooRepo = 'foo';
$rootLocationId1 = 123;
$rootLocationId2 = 456;
$rootLocationId3 = 2;
$config = array('siteaccess' => array('default_siteaccess' => 'ezdemo_site', 'list' => array('ezdemo_site', 'eng', 'fre', 'ezdemo_site2', 'eng2', 'ezdemo_site3', 'fre3'), 'groups' => array('ezdemo_group' => array('ezdemo_site', 'eng', 'fre'), 'ezdemo_group2' => array('ezdemo_site2', 'eng2'), 'ezdemo_group3' => array('ezdemo_site3', 'fre3')), 'match' => array()), 'repositories' => array($mainRepo => array('engine' => 'legacy', 'connection' => 'default'), $fooRepo => array('engine' => 'bar', 'connection' => 'blabla')), 'system' => array('ezdemo_group' => array('repository' => $mainRepo, 'content' => array('tree_root' => array('location_id' => $rootLocationId1))), 'ezdemo_group2' => array('repository' => $mainRepo, 'content' => array('tree_root' => array('location_id' => $rootLocationId2))), 'ezdemo_group3' => array('repository' => $fooRepo))) + $this->siteaccessConfig;
// Injecting needed config parsers.
$refExtension = new ReflectionObject($this->extension);
$refMethod = $refExtension->getMethod('getMainConfigParser');
$refMethod->setAccessible(true);
$refMethod->invoke($this->extension);
$refParser = $refExtension->getProperty('mainConfigParser');
$refParser->setAccessible(true);
/** @var \eZ\Bundle\EzPublishCoreBundle\DependencyInjection\Configuration\ConfigParser $parser */
$parser = $refParser->getValue($this->extension);
$parser->setConfigParsers(array(new Common(), new Content()));
$this->load($config);
$relatedSiteAccesses1 = array('ezdemo_site', 'eng', 'fre');
$relatedSiteAccesses2 = array('ezdemo_site2', 'eng2');
$relatedSiteAccesses3 = array('ezdemo_site3', 'fre3');
$expectedRelationMap = array($mainRepo => array($rootLocationId1 => $relatedSiteAccesses1, $rootLocationId2 => $relatedSiteAccesses2), $fooRepo => array($rootLocationId3 => $relatedSiteAccesses3));
$this->assertContainerBuilderHasParameter('ezpublish.siteaccess.relation_map', $expectedRelationMap);
$this->assertContainerBuilderHasParameter('ezsettings.ezdemo_site.related_siteaccesses', $relatedSiteAccesses1);
$this->assertContainerBuilderHasParameter('ezsettings.eng.related_siteaccesses', $relatedSiteAccesses1);
$this->assertContainerBuilderHasParameter('ezsettings.fre.related_siteaccesses', $relatedSiteAccesses1);
$this->assertContainerBuilderHasParameter('ezsettings.ezdemo_site2.related_siteaccesses', $relatedSiteAccesses2);
$this->assertContainerBuilderHasParameter('ezsettings.eng2.related_siteaccesses', $relatedSiteAccesses2);
$this->assertContainerBuilderHasParameter('ezsettings.ezdemo_site3.related_siteaccesses', $relatedSiteAccesses3);
$this->assertContainerBuilderHasParameter('ezsettings.fre3.related_siteaccesses', $relatedSiteAccesses3);
}