У меня есть набор тестов RestAssured, помеченных как тесты дыма, и я использую maven для запуска их через командную строку с помощью команды mvn test -PSmokeTests -Denv = QA
env = QA определяется каксистемное свойство в pom.xml. Я понимаю, что если мне нужно запустить это в другом окружении, таком как dev, staging или prod, я могу указать это в качестве аргумента командной строки и в своих тестах, я могу справиться с этим.
Однако в каждой из этих среднеобходимо использовать другой ключ API для этой среды, передаваемый в качестве заголовка в запросах API. Я храню ключи в отдельном файле headers_key и ссылаюсь на них в коде. Однако я хочу избежать этого, поскольку не хочу, чтобы ключи были видны, когда я помещаю свой код в репозиторий с исходным кодом, например, git.
Есть ли эффективный способ справиться с этим в Maven? Могут ли ключи API храниться таким образом, чтобы их можно было подбирать в зависимости от среды, не сохраняя их в отдельном файле в структуре RestAssured?
Вот мой фрагмент pom.xml:
<profile>
<id>SmokeTests</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<systemPropertyVariables>
<env>${env}</env>
</systemPropertyVariables>
<suiteXmlFiles>
<suiteXmlFile>SmokeTests.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
</profile>
И вот как я сейчас обращаюсь с этим в коде RestAssured:
public static RequestSpecification getJSONRequestSpecification() {
REQUESTBUILDER = new RequestSpecBuilder();
env = System.getProperty("env");
if (env.matches("QA")) {
REQUESTBUILDER.setBaseUri(Path.BASE_URI_QA);
REQUESTBUILDER.addHeader("X-Api-Key", APIKeys.QA_API_KEY);
}
if (env.matches("Dev")) {
REQUESTBUILDER.setBaseUri(Path.BASE_URI_Dev);
REQUESTBUILDER.addHeader("X-Api-Key", APIKeys.Dev_API_KEY);
}
if (env.matches("Staging")) {
REQUESTBUILDER.setBaseUri(Path.BASE_URI_Staging);
REQUESTBUILDER.addHeader("X-Api-Key", APIKeys.Staging_API_KEY);
}
if (env.matches("Integration")) {
REQUESTBUILDER.setBaseUri(Path.BASE_URI_Int);
REQUESTBUILDER.addHeader("X-Api-Key", APIKeys.Int_API_KEY);
}
REQUESTBUILDER.setContentType(Headers.CONTENT_TYPE_JSON);
REQUEST_SPEC = REQUESTBUILDER.build();
REQUEST_SPEC.log().ifValidationFails();
return REQUEST_SPEC;
}