001package edu.pdx.cs.joy.web;
002
003import org.junit.jupiter.api.Test;
004
005import java.io.IOException;
006import java.io.PrintWriter;
007import java.io.StringWriter;
008import java.net.HttpURLConnection;
009import java.util.Map;
010
011import static org.hamcrest.MatcherAssert.assertThat;
012import static org.hamcrest.Matchers.containsString;
013import static org.junit.jupiter.api.Assertions.assertEquals;
014import static org.junit.jupiter.api.Assertions.assertTrue;
015
016/**
017 * Unit tests for the <code>HttpRequestHelper</code> class
018 */
019public class HttpRequestHelperTest {
020
021  @Test
022  public void testGet() throws IOException {
023    HttpRequestHelper helper = new HttpRequestHelper("http://www.google.com");
024    HttpRequestHelper.Response response = helper.get(Map.of());
025    assertEquals(HttpURLConnection.HTTP_OK, response.getHttpStatusCode());
026    assertTrue(response.getContent().contains("Google"));
027  }
028
029  @Test
030  public void testGetWithParameters() throws IOException {
031    HttpRequestHelper helper = new HttpRequestHelper("https://www.google.com/search");
032    HttpRequestHelper.Response response = helper.get(Map.of("p", "Java"));
033    assertEquals(HttpURLConnection.HTTP_OK, response.getHttpStatusCode());
034    assertTrue(response.getContent().contains("Java"));
035  }
036
037  @Test
038  void restExceptionStackTraceContainsHttpCode() {
039    int httpCode = 42;
040    String message = "MESSAGE";
041    HttpRequestHelper.RestException ex = new HttpRequestHelper.RestException(httpCode, message);
042
043    StringWriter sw = new StringWriter();
044    ex.printStackTrace(new PrintWriter(sw, true));
045
046    String stackTrace = sw.toString();
047    assertThat(stackTrace, containsString(String.valueOf(httpCode)));
048    assertThat(stackTrace, containsString(message));
049  }
050
051}