Загрузка данных


public class SslConfiguration {
  public static RestAssuredConfig getP12Config() {
    return RestAssuredConfig.config()
        .sslConfig(new SSLConfig()
            .keyStore(
                AuthConfiguration.CERTIFICATE_PATH,
                AuthConfiguration.CERTIFICATE_PASSWORD)
            .keystoreType("PKCS12")
            .relaxedHTTPSValidation())
        .redirect(RedirectConfig.redirectConfig()
            .followRedirects(false)
            .allowCircularRedirects(true)
            .maxRedirects(1));
  }
}

  public void testWithSsl(RestService restService) {
//    System.setProperty("javax.net.debug", "ssl,handshake");
    RestAssuredConfig sslConfig = SslConfiguration.getP12Config();
    java.util.Map<String, String> cookies = new java.util.HashMap<>();
    String currentUrl = AuthConfiguration.AUTH_URL;

    System.out.println("========= Start auth =========");
    for (int i = 1; i <= 5; i++) {
      Response response = restService.restClient()
          .get(spec -> spec
              .config(sslConfig)
              .contentType("application/json;charset=UTF-8")
              .cookies(cookies)
              .redirects().follow(false)
              .urlEncodingEnabled(false),
              currentUrl)
          .toResponse();

      String locationHeader = response.getHeader("Location");
      if (locationHeader == null || locationHeader.isEmpty()) {
        response.then().log().all();
        break;
      }
      currentUrl = toAbsoluteUrl(locationHeader, currentUrl);
      response.getDetailedCookies().forEach(cookie -> cookies.put(cookie.getName(), cookie.getValue()));
    }
    System.out.println("========= End auth =========");
  }

  private String toAbsoluteUrl(String location, String baseUrl) {
    if (location.startsWith("http://") || location.startsWith("https://")) {
      return location;
    }
    return URI.create(baseUrl).resolve(location).toString();
  }

public class CertificateLoader {
  private CertificateLoader() {}

  public static KeyStore load() {
    try {
      InputStream is = Files.newInputStream(
          Paths.get(AuthConfiguration.CERTIFICATE_PATH));
      KeyStore keyStore = KeyStore.getInstance("PKCS12");
      keyStore.load(is, AuthConfiguration.CERTIFICATE_PASSWORD.toCharArray());
      return keyStore;
    } catch (Exception e) {
      throw new AuthException("Не могу загрузить сертификат, ошибка: ", e);
    }
  }
}

.
├── AuthClient.java
├── AuthConfiguration.java
├── AuthException.java
├── AuthService.java
├── CertificateLoader.java
└── CookieHolder.java

я тут архитектуру для тестов на бэк делаю, работать они буду в несколько потоков, выше получение куки, ее буду подкладывать во все запросы, получать ее хочу единожды перед всеми тестами. помоги раскидать всё по классам. и куда папку с ними(auth)? main-java? это своего рода beforeAll будет, хызы как оформить