Advertisement
Guest User

Untitled

a guest
Dec 11th, 2018
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.30 KB | None | 0 0
  1. package de.churchhostel.integration_test;
  2.  
  3. import java.beans.PropertyVetoException;
  4. import java.util.HashMap;
  5. import java.util.Map;
  6.  
  7. import org.apache.logging.log4j.LogManager;
  8. import org.apache.logging.log4j.Logger;
  9. import org.eclipse.jetty.server.Server;
  10. import org.eclipse.jetty.servlet.ServletContextHandler;
  11. import org.eclipse.jetty.servlet.ServletHolder;
  12. import org.glassfish.jersey.media.multipart.MultiPartFeature;
  13. import org.glassfish.jersey.server.ResourceConfig;
  14. import org.glassfish.jersey.servlet.ServletContainer;
  15. import org.junit.AfterClass;
  16. import org.junit.BeforeClass;
  17. import org.junit.Rule;
  18. import org.junit.runner.RunWith;
  19. import org.junit.runners.Suite;
  20. import org.testcontainers.containers.GenericContainer;
  21.  
  22. import de.churchhostel.ServerConfiguration;
  23. import de.churchhostel.repository.database.ConnectionPool;
  24.  
  25. @RunWith(Suite.class)
  26. @Suite.SuiteClasses({HostelTest.class, MarkerTest.class, ContactTest.class, TrailTest.class, ImageTest.class, FileTest.class
  27. })
  28. public class IntegrationTestSuite {
  29.  
  30.     private static final Logger log = LogManager.getLogger(IntegrationTestSuite.class);
  31.  
  32.     @Rule
  33.     public static GenericContainer mysql = new GenericContainer("ch/database:latest").withExposedPorts(3306);
  34.  
  35.     public static Server server;
  36.  
  37.     @BeforeClass
  38.     public static void setup() throws PropertyVetoException {
  39.         log.info("Setting up test database...");
  40.         mysql.start();
  41.  
  42.         // Set database connection properties for test
  43.         Map<String, String> persistenceConfig = new HashMap<>();
  44.         persistenceConfig.put("url", "jdbc:mysql://127.0.0.1:"+mysql.getMappedPort(3306) +"/ch");
  45.         persistenceConfig.put("user", "root");
  46.         persistenceConfig.put("password", "root");
  47.         log.info(String.format("Test database container:\n\tContainer ID: %s\n\tJDBC URL: %s\n\tJDBC User: %s\n\tJDBC Password: %s",
  48.                 mysql.getContainerId(), persistenceConfig.get("url"), persistenceConfig.get("user"), persistenceConfig.get("password")));
  49.         ConnectionPool.getInstance().setDatasourceProperties(persistenceConfig);
  50.        
  51.         // Set a JWT signing key for test
  52.         ServerConfiguration.setJWTSigningKey("testkey");
  53.  
  54.         ServletContextHandler context =
  55.                 new ServletContextHandler(ServletContextHandler.NO_SESSIONS);
  56.         context.setContextPath("/");
  57.  
  58.         server = new Server(8080);
  59.         server.setHandler(context);
  60.  
  61.         final ResourceConfig resourceConfig = new ResourceConfig();
  62.         resourceConfig.packages("de.churchhostel.rest");
  63.         resourceConfig.register(MultiPartFeature.class);
  64.  
  65.         ServletHolder jerseyServlet = new ServletHolder(new ServletContainer(resourceConfig));
  66.         jerseyServlet.setInitOrder(1);
  67.         context.addServlet(jerseyServlet, "/api/*");
  68.  
  69.         try {
  70.             server.start();
  71.         } catch (Exception e) {
  72.             LogManager.getLogger(IntegrationTestSuite.class).error(e);
  73.         }
  74.     }
  75.  
  76.     @AfterClass
  77.     public static void teardown() {
  78.         System.out.println("Stopping server");
  79.         try {
  80.             server.stop();
  81.         } catch (Exception e) {
  82.             LogManager.getLogger(IntegrationTestSuite.class).error(e);
  83.         } finally {
  84.             server.destroy();
  85.         }
  86.         mysql.stop();
  87.     }
  88.  
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement