Выполнение тестов дыма RestAssured с maven в различных средах с собственными уникальными ключами API в качестве заголовков - PullRequest
0 голосов
/ 05 октября 2019

У меня есть набор тестов 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;
    }

1 Ответ

1 голос
/ 22 октября 2019

вы можете передать ключ API, используя переменные командной строки, аналогично тому, как вы передаете env.

mvn test -PSmokeTests -Denv=QA -DapiKey="keyvalue123"

Вы можете переписать API-ключ внутри вашего Java-проекта, используя следующую команду

String apiKey = System.getProperty("apiKey");
...