/**
* Tests the builder method of the OneLogin_Saml2_Metadata
*
* @covers OneLogin_Saml2_Metadata::builder
*/
public function testBuilder()
{
$settingsDir = TEST_ROOT . '/settings/';
include $settingsDir . 'settings1.php';
$settings = new OneLogin_Saml2_Settings($settingsInfo);
$spData = $settings->getSPData();
$security = $settings->getSecurityData();
$organization = $settings->getOrganization();
$contacts = $settings->getContacts();
$metadata = OneLogin_Saml2_Metadata::builder($spData, $security['authnRequestsSigned'], $security['wantAssertionsSigned'], null, null, $contacts, $organization);
$this->assertNotEmpty($metadata);
$this->assertContains('<md:SPSSODescriptor', $metadata);
$this->assertContains('entityID="http://stuff.com/endpoints/metadata.php"', $metadata);
$this->assertContains('AuthnRequestsSigned="false"', $metadata);
$this->assertContains('WantAssertionsSigned="false"', $metadata);
$this->assertContains('<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"', $metadata);
$this->assertContains('Location="http://stuff.com/endpoints/endpoints/acs.php"', $metadata);
$this->assertContains('<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"', $metadata);
$this->assertContains('Location="http://stuff.com/endpoints/endpoints/sls.php"', $metadata);
$this->assertContains('<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified</md:NameIDFormat>', $metadata);
$this->assertContains('<md:OrganizationName xml:lang="en-US">sp_test</md:OrganizationName>', $metadata);
$this->assertContains('<md:ContactPerson contactType="technical">', $metadata);
$this->assertContains('<md:GivenName>technical_name</md:GivenName>', $metadata);
$security['authnRequestsSigned'] = true;
$security['wantAssertionsSigned'] = true;
unset($spData['singleLogoutService']);
$metadata2 = OneLogin_Saml2_Metadata::builder($spData, $security['authnRequestsSigned'], $security['wantAssertionsSigned']);
$this->assertNotEmpty($metadata2);
$this->assertContains('AuthnRequestsSigned="true"', $metadata2);
$this->assertContains('WantAssertionsSigned="true"', $metadata2);
$this->assertNotContains('<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"', $metadata2);
$this->assertNotContains(' Location="http://stuff.com/endpoints/endpoints/sls.php"/>', $metadata2);
}