use of org.jenkinsci.test.acceptance.docker.fixtures.SAMLContainer in project acceptance-test-harness by jenkinsci.
the class SAMLPluginTest method authenticationOKFromURL.
@Test
@WithDocker
@WithPlugins({ "saml", "matrix-auth" })
public void authenticationOKFromURL() throws IOException, InterruptedException {
// navigate to root
jenkins.open();
String rootUrl = jenkins.getCurrentUrl();
SAMLContainer samlServer = startSimpleSAML(rootUrl);
GlobalSecurityConfig sc = new GlobalSecurityConfig(jenkins);
sc.open();
// Authentication
SamlSecurityRealm realm = configureBasicSettings(sc);
realm.setUrl(createIdPMetadataURL(samlServer));
configureEncrytion(realm);
configureAuthorization(sc);
// SAML service login page
waitFor().withTimeout(10, TimeUnit.SECONDS).until(() -> hasContent("Enter your username and password"));
// SAML server login
makeLoginWithUser1();
}
use of org.jenkinsci.test.acceptance.docker.fixtures.SAMLContainer in project acceptance-test-harness by jenkinsci.
the class SAMLPluginTest method authenticationFail.
@Test
@WithDocker
@WithPlugins({ "saml", "matrix-auth" })
public void authenticationFail() throws IOException, InterruptedException {
// navigate to root
jenkins.open();
String rootUrl = jenkins.getCurrentUrl();
SAMLContainer samlServer = startSimpleSAML(rootUrl);
GlobalSecurityConfig sc = new GlobalSecurityConfig(jenkins);
sc.open();
// Authentication
SamlSecurityRealm realm = configureBasicSettings(sc);
String idpMetadata = readIdPMetadataFromURL(samlServer);
realm.setXml(idpMetadata);
configureEncrytion(realm);
configureAuthorization(sc);
// SAML service login page
waitFor().withTimeout(10, TimeUnit.SECONDS).until(() -> hasContent("Enter your username and password"));
// SAML server login
find(by.id("username")).sendKeys("user1");
find(by.id("password")).sendKeys("WrOnGpAsSwOrD");
find(by.button("Login")).click();
// wait for the login to propagate
waitFor().withTimeout(5, TimeUnit.SECONDS).until(() -> hasContent("Either no user with the given username could be found, or the password you gave was wrong").matchesSafely(driver));
assertThat(jenkins.getCurrentUrl(), containsString("simplesaml/module.php/core/loginuserpass.php"));
}
use of org.jenkinsci.test.acceptance.docker.fixtures.SAMLContainer in project acceptance-test-harness by jenkinsci.
the class SAMLPluginTest method authenticationOK.
@Test
@WithDocker
@WithPlugins({ "saml", "matrix-auth" })
public void authenticationOK() throws IOException, InterruptedException {
// navigate to root
jenkins.open();
String rootUrl = jenkins.getCurrentUrl();
SAMLContainer samlServer = startSimpleSAML(rootUrl);
GlobalSecurityConfig sc = new GlobalSecurityConfig(jenkins);
sc.open();
// Authentication
SamlSecurityRealm realm = configureBasicSettings(sc);
String idpMetadata = readIdPMetadataFromURL(samlServer);
realm.setXml(idpMetadata);
realm.setBinding(SAML2_REDIRECT_BINDING_URI);
configureEncrytion(realm);
configureAuthorization(sc);
// SAML service login page
waitFor().withTimeout(10, TimeUnit.SECONDS).until(() -> hasContent("Enter your username and password"));
makeLoginWithUser1();
}
use of org.jenkinsci.test.acceptance.docker.fixtures.SAMLContainer in project acceptance-test-harness by jenkinsci.
the class SAMLPluginTest method startSimpleSAML.
private SAMLContainer startSimpleSAML(String rootUrl) throws IOException, InterruptedException {
Starter<SAMLContainer> starter = samlContainer.starter();
File users = new File("src/test/resources/saml_plugin/users.php");
File config = new File("src/test/resources/saml_plugin/config.php");
File idp_metadata = new File("src/test/resources/saml_plugin/saml20-idp-hosted.php");
starter.withOptions(new CommandBuilder(// service provider ID
"-e", // service provider ID
"SIMPLESAMLPHP_SP_ENTITY_ID=" + SERVICE_PROVIDER_ID, // login back URL
"-e", // login back URL
"SIMPLESAMLPHP_SP_ASSERTION_CONSUMER_SERVICE=" + rootUrl + "securityRealm/finishLogin", // unused
"-e", // unused
"SIMPLESAMLPHP_SP_SINGLE_LOGOUT_SERVICE=" + rootUrl + "logout", // users info
"-v", // users info
users.getAbsolutePath() + ":/var/www/simplesamlphp/config/authsources.php", // config info,
"-v", // config info,
config.getAbsolutePath() + ":/var/www/simplesamlphp/config/config.php", // IdP advanced configuration
"-v", // IdP advanced configuration
idp_metadata.getAbsolutePath() + ":/var/www/simplesamlphp/metadata/saml20-idp-hosted.php"));
SAMLContainer samlServer = starter.start();
System.out.println("============ SAML Server: " + samlServer.host() + ":" + samlServer.port());
return samlServer;
}
use of org.jenkinsci.test.acceptance.docker.fixtures.SAMLContainer in project acceptance-test-harness by jenkinsci.
the class SAMLPluginTest method authenticationOKPostBinding.
@Test
@WithDocker
@WithPlugins({ "saml", "matrix-auth" })
public void authenticationOKPostBinding() throws IOException, InterruptedException {
// navigate to root
jenkins.open();
String rootUrl = jenkins.getCurrentUrl();
SAMLContainer samlServer = startSimpleSAML(rootUrl);
GlobalSecurityConfig sc = new GlobalSecurityConfig(jenkins);
sc.open();
// Authentication
SamlSecurityRealm realm = configureBasicSettings(sc);
String idpMetadata = readIdPMetadataFromURL(samlServer);
realm.setXml(idpMetadata);
realm.setBinding(SAML2_POST_BINDING_URI);
configureEncrytion(realm);
configureAuthorization(sc);
// SAML service login page
waitFor().withTimeout(10, TimeUnit.SECONDS).until(() -> hasContent("Enter your username and password"));
// SAML server login
makeLoginWithUser1();
}
Aggregations