Package saganx

Source Code of saganx.BasicAcceptanceTests

package saganx;

import sagan.support.FreePortFinder;

import java.io.IOException;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;

import org.springframework.boot.SpringApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.web.client.DefaultResponseErrorHandler;
import org.springframework.web.client.RestTemplate;

import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;

@Ignore
public class BasicAcceptanceTests {

    public static int port;

    private static ConfigurableApplicationContext context;

    private static String serverAddress;

    @BeforeClass
    public static void start() throws Exception {
        port = FreePortFinder.find();
        serverAddress = "http://localhost:" + port;

        Future<ConfigurableApplicationContext> future =
                Executors.newSingleThreadExecutor().submit(() ->
                        SpringApplication.run(IntegrationTestsConfig.class, "--server.port=" + port));
        context = future.get(30, TimeUnit.SECONDS);
    }

    @AfterClass
    public static void stop() {
        if (context != null) {
            context.close();
        }
    }

    private ResponseEntity<String> doGet(String path) {
        return getRestTemplate().getForEntity(serverAddress + path, String.class);
    }

    private RestTemplate getRestTemplate() {
        RestTemplate restTemplate = new RestTemplate();
        restTemplate.setErrorHandler(new DefaultResponseErrorHandler() {
            @Override
            public boolean hasError(ClientHttpResponse response) throws IOException {
                return false;
            }
        });
        return restTemplate;
    }

    @Test
    public void getStaticPage() throws Exception {
        ResponseEntity<String> response = doGet("/");
        assertEquals(HttpStatus.OK, response.getStatusCode());
        assertTrue(response.getHeaders().getContentType().isCompatibleWith(MediaType.valueOf("text/html")));
    }

    @Test
    public void getStyleSheet() throws Exception {
        ResponseEntity<String> response = doGet("/css/main.css");
        assertEquals(HttpStatus.OK, response.getStatusCode());
        assertTrue(response.getHeaders().getContentType().isCompatibleWith(MediaType.valueOf("text/css")));
    }

    @Test
    public void adminIsSecure() {
        ResponseEntity<String> response = doGet("/admin/blog");
        assertEquals(HttpStatus.OK, response.getStatusCode());

        Document html = Jsoup.parse(response.getBody());
        Element loginButton = html.select(".body--container form button").first();
        assertThat("No login button found", loginButton, is(notNullValue()));
        assertThat(loginButton.text(), is(equalTo("Sign in with github")));
    }

    @Test
    public void userCanSignOut() throws Exception {
        ResponseEntity<String> response = doGet("/signout");
        assertEquals(HttpStatus.OK, response.getStatusCode());
    }
}
TOP

Related Classes of saganx.BasicAcceptanceTests

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.