require_once dirname(__FILE__).'/../common/testFormAuthentication.php';
class testUsersAuthenticationSaml extends testFormAuthentication {
protected function onBeforeTestSuite() {
if (!defined('PHPUNIT_SAML_TESTS_ENABLED') || !PHPUNIT_SAML_TESTS_ENABLED) {
self::markTestSuiteSkipped();
public function testUsersAuthenticationSaml_Layout() {
$saml_form = $this->openFormAndCheckBasics('SAML');
'Enable JIT provisioning' => ['value' => false, 'visible' => true],
'IdP entity ID' => ['value' => '', 'visible' => true, 'maxlength' => 1024],
'SSO service URL' => ['value' => '', 'visible' => true, 'maxlength' => 2048],
'SLO service URL' => ['value' => '', 'visible' => true, 'maxlength' => 2048],
'Username attribute' => ['value' => '', 'visible' => true, 'maxlength' => 128],
'SP entity ID' => ['value' => '', 'visible' => true, 'maxlength' => 1024],
'SP name ID format' => ['value' => '', 'visible' => true, 'maxlength' => 2048,
'placeholder' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient'
'id:sign_messages' => ['value' => false, 'visible' => true],
'id:sign_assertions' => ['value' => false, 'visible' => true],
'id:sign_authn_requests' => ['value' => false, 'visible' => true],
'id:sign_logout_requests' => ['value' => false, 'visible' => true],
'id:sign_logout_responses' => ['value' => false, 'visible' => true],
'id:encrypt_nameid' => ['value' => false, 'visible' => true],
'id:encrypt_assertions' => ['value' => false, 'visible' => true],
'Case-sensitive login' => ['value' => false, 'visible' => true],
'Configure JIT provisioning' => ['value' => false, 'visible' => true],
'Group name attribute' => ['value' => '', 'visible' => false, 'maxlength' => 255],
'User name attribute' => ['value' => '', 'visible' => false, 'maxlength' => 255],
'User last name attribute' => ['value' => '', 'visible' => false, 'maxlength' => 255],
'User group mapping' => ['visible' => false],
'Media type mapping' => ['visible' => false],
'Enable SCIM provisioning' => ['value' => false, 'visible' => false]
foreach ($saml_fields as $field => $attributes) {
$this->assertEquals($attributes['visible'], $saml_form->getField($field)->isVisible());
$this->assertFalse($saml_form->getField($field)->isEnabled());
if (array_key_exists('value', $attributes)) {
$this->assertEquals($attributes['value'], $saml_form->getField($field)->getValue());
if (array_key_exists('maxlength', $attributes)) {
$this->assertEquals($attributes['maxlength'], $saml_form->getField($field)->getAttribute('maxlength'));
if (array_key_exists('placeholder', $attributes)) {
$this->assertEquals($attributes['placeholder'], $saml_form->getField($field)->getAttribute('placeholder'));
$this->assertEquals(['IdP entity ID', 'SSO service URL', 'Username attribute', 'SP entity ID'],
$saml_form->getRequiredLabels()
foreach (['Group name attribute', 'User group mapping'] as $manadatory_field) {
$saml_form->isRequired($manadatory_field);
$saml_form->fill(['Enable SAML authentication' => true]);
foreach (array_keys($saml_fields) as $label) {