package com.sequenceiq.it;
import javax.inject.Inject;
import org.slf4j.MDC;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.ConfigFileApplicationContextInitializer;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.springframework.util.StringUtils;
import org.testng.ITestContext;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Optional;
import org.testng.annotations.Parameters;
import com.sequenceiq.it.config.IntegrationTestConfiguration;
@ContextConfiguration(classes = IntegrationTestConfiguration.class, initializers = ConfigFileApplicationContextInitializer.class)
public class TestSuiteInitializer extends AbstractTestNGSpringContextTests {
@Value("${integrationtest.uaa.server}")
private String defaultUaaServer;
@Value("${integrationtest.uaa.user}")
private String defaultUaaUser;
@Value("${integrationtest.uaa.password}")
private String defaultUaaPassword;
@Inject
private SuiteContext suiteContext;
private IntegrationTestContext itContext;
@BeforeSuite
public void initSuiteMap(ITestContext testContext) throws Exception {
String suiteName = testContext.getSuite().getName();
MDC.put("suite", suiteName);
// Workaround of https://jira.spring.io/browse/SPR-4072
springTestContextBeforeTestClass();
springTestContextPrepareTestInstance();
suiteContext.putItContext(suiteName, new IntegrationTestContext());
itContext = suiteContext.getItContext(suiteName);
}
@BeforeSuite(dependsOnMethods = "initSuiteMap", groups = "suiteInit")
@Parameters({ "uaaServer", "uaaUser", "uaaPassword" })
public void initTestSuite(@Optional("") String uaaServer, @Optional("") String uaaUser, @Optional("") String uaaPassword) {
uaaServer = getString(uaaServer, defaultUaaServer);
uaaUser = getString(uaaUser, defaultUaaUser);
uaaPassword = getString(uaaPassword, defaultUaaPassword);
itContext.putContextParam(IntegrationTestContext.IDENTITY_URL, uaaServer);
itContext.putContextParam(IntegrationTestContext.AUTH_USER, uaaUser);
itContext.putContextParam(IntegrationTestContext.AUTH_PASSWORD, uaaPassword);
}
private String getString(String paramValue, String defaultValue) {
return StringUtils.hasLength(paramValue) ? paramValue : defaultValue;
}
}