added modules, classloading and view packages to sonia.scm.lifecycle

This commit is contained in:
Sebastian Sdorra
2019-06-25 09:49:52 +02:00
parent 6efa6ff29f
commit 80febf9424
47 changed files with 105 additions and 107 deletions

View File

@@ -0,0 +1,64 @@
package sonia.scm.lifecycle.modules;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.servlet.GuiceFilter;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import sonia.scm.Default;
import javax.inject.Inject;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
class ServletContextModuleTest {
@Mock
private ServletContext servletContext;
private GuiceFilter guiceFilter;
@BeforeEach
void setUpEnvironment() throws ServletException {
guiceFilter = new GuiceFilter();
FilterConfig filterConfig = mock(FilterConfig.class);
when(filterConfig.getServletContext()).thenReturn(servletContext);
guiceFilter.init(filterConfig);
}
@AfterEach
void tearDownEnvironment() {
guiceFilter.destroy();
}
@Test
void shouldBeAbleToInjectServletContext() {
Injector injector = Guice.createInjector(new ServletContextModule());
WebComponent instance = injector.getInstance(WebComponent.class);
assertThat(instance.context).isSameAs(servletContext);
}
public static class WebComponent {
private ServletContext context;
@Inject
public WebComponent(@Default ServletContext context) {
this.context = context;
}
}
}