Serenity BDD - HTTP Client Builder - Проблема с прокси - Как настроить аутентификацию NTLM? - PullRequest
0 голосов
/ 24 октября 2019

Привет, я пытаюсь запустить API-тесты с моего рабочего места, используя Serenity BDD и будьте уверены, но прокси-сервер или что-то блокирует меня и вызывает проблему с тайм-аутом соединения

Serenity BDD - код Resassured:

SerenityRest.rest().given().proxy(proxy_host, proxyPort).auth().basic("xxusernmexx", "xxpassword")
        .spec(com.api.utils.ReuseableSpecifications.getGenericRequestSpec())
        .get("bin/userInfo").
        then().
        log().all();

Приведенный выше код работает на моем локальном ноутбуке, подключенном к моему рабочему Wi-Fi. но в моей работе это не работает VM (citrix)

Но при использовании одной только Java для построения клиентского компоновщика контента и выполнения запросов с ним это работает. Java-код:

public class api{

    private HttpClient client; 
    Date expires = null ; 
    String cooki_1 = ""; 
    HashMap<String, String> data_Header_1 = new  HashMap<String, String>();
    HttpCoreContext localContext ;
    BasicCookieStore cookieStore; 
    HttpClientContext httpClientContext;    
    String proxy_host = "xxxxxx.xxxxx.intra"; 
    int proxyPort = 8080;


    public api()
    {
        cookieStore  = new BasicCookieStore();
        localContext= new HttpCoreContext();
        httpClientContext = HttpClientContext.create();
        Registry<AuthSchemeProvider> authSchemeRegistry = RegistryBuilder.<AuthSchemeProvider>create()
                .register(AuthSchemes.NTLM,  new NTLMSchemeFactory())
                .register(AuthSchemes.BASIC, new BasicSchemeFactory())
                .register(AuthSchemes.DIGEST, new DigestSchemeFactory())
                .register(AuthSchemes.SPNEGO, new SPNegoSchemeFactory())
                .register(AuthSchemes.KERBEROS, new KerberosSchemeFactory())
                .build(); 
        httpClientContext.setCookieStore(cookieStore);


        NTCredentials credentials = new NTCredentials("xxusernamexx","xxpasswordxx",null,"xxdomainxx" );
        CredentialsProvider credProvider = new BasicCredentialsProvider();
        credProvider.setCredentials(new AuthScope(proxy_host, proxyPort), credentials );

        this.client = HttpClientBuilder.create().setProxy(new HttpHost(proxy_host, proxyPort)).setDefaultAuthSchemeRegistry(authSchemeRegistry)
                .setDefaultCredentialsProvider(credProvider).setProxyAuthenticationStrategy(new ProxyAuthenticationStrategy())
                .setRedirectStrategy(new LaxRedirectStrategy()).setDefaultRequestConfig(RequestConfig.custom()
            .setCookieSpec(CookieSpecs.STANDARD).build()).setDefaultCookieStore(cookieStore).build();
        //System.setProperty("java.net.useSystemProxies", "true");

        }

    public RestResponse postRequest(String url)
    {
......
}

Это работает .. на моем рабочем месте (виртуальные машины)

Может кто-нибудь, пожалуйста, дайте мне знать, как реализовать вышеупомянутый Java-код в спокойствиеBDD и будьте уверены, классы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...