Tests: Verbose login failures
[vid.git] / vid-automation / src / main / java / vid / automation / test / utils / CookieAndJsonHttpHeadersInterceptor.java
1 package vid.automation.test.utils;
2
3 import java.io.IOException;
4 import java.net.URI;
5 import java.util.Collections;
6 import java.util.List;
7 import org.junit.Assert;
8 import org.onap.sdc.ci.tests.datatypes.UserCredentials;
9 import org.springframework.http.HttpEntity;
10 import org.springframework.http.HttpHeaders;
11 import org.springframework.http.HttpRequest;
12 import org.springframework.http.HttpStatus;
13 import org.springframework.http.MediaType;
14 import org.springframework.http.ResponseEntity;
15 import org.springframework.http.client.ClientHttpRequestExecution;
16 import org.springframework.http.client.ClientHttpRequestInterceptor;
17 import org.springframework.http.client.ClientHttpResponse;
18 import org.springframework.http.client.support.HttpRequestWrapper;
19 import org.springframework.web.client.RestTemplate;
20
21 public class CookieAndJsonHttpHeadersInterceptor implements ClientHttpRequestInterceptor {
22     private final HttpHeaders cookieAndJsonHttpHeaders;
23
24     public CookieAndJsonHttpHeadersInterceptor(URI uri, UserCredentials userCredentials) {
25         this.cookieAndJsonHttpHeaders = getCookieAndJsonHttpHeaders(uri, userCredentials);
26     }
27
28     @Override
29     public ClientHttpResponse intercept(HttpRequest request, byte[] body,
30                                         ClientHttpRequestExecution execution) throws IOException {
31         HttpRequestWrapper requestWrapper = new HttpRequestWrapper(request);
32         requestWrapper.getHeaders().putAll(cookieAndJsonHttpHeaders);
33
34         return execution.execute(requestWrapper, body);
35     }
36
37     protected HttpHeaders getCookieAndJsonHttpHeaders(URI uri, UserCredentials userCredentials) {
38         HttpHeaders loginRequestHeaders = new HttpHeaders();
39         loginRequestHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
40         HttpEntity<String> requestEntity =
41             new HttpEntity<>("loginId=" + userCredentials.getUserId() + "&password=" + userCredentials.getPassword(), loginRequestHeaders);
42
43         RestTemplate restTemplate = InsecureHttpsClient.newRestTemplate();
44         ResponseEntity<String> loginRes = restTemplate.postForEntity(uri.toASCIIString() + "/login_external.htm", requestEntity, String.class);
45         Assert.assertEquals("Failed to login " + describeLoginRes(uri, requestEntity, loginRes), HttpStatus.FOUND, loginRes.getStatusCode());
46         Assert.assertNull("Failed to login " + describeLoginRes(uri, requestEntity, loginRes), loginRes.getBody());
47         HttpHeaders loginResponseHeaders = loginRes.getHeaders();
48         List<String> cookie = loginResponseHeaders.get(HttpHeaders.SET_COOKIE);
49
50         HttpHeaders headers = new HttpHeaders();
51         headers.setContentType(MediaType.APPLICATION_JSON);
52         headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
53         headers.put(HttpHeaders.COOKIE, cookie);
54         return headers;
55     }
56
57     private String describeLoginRes(URI uri, HttpEntity<String> requestEntity, ResponseEntity<String> loginRes) {
58         return ""
59             + "Request was: "
60             + uri.toASCIIString() + " POST " + requestEntity
61             + "And response is: "
62             + loginRes;
63     }
64
65 }