use of org.apache.sling.commons.testing.osgi.MockServiceReference in project sling by apache.
the class ServletResourceProviderCreateTest method testCreateSelectorsExtensions.
public void testCreateSelectorsExtensions() {
MockServiceReference msr = new MockServiceReference(null);
msr.setProperty(ServletResolverConstants.SLING_SERVLET_RESOURCE_TYPES, RES_TYPE);
msr.setProperty(ServletResolverConstants.SLING_SERVLET_METHODS, new String[] { HttpConstants.METHOD_GET });
msr.setProperty(ServletResolverConstants.SLING_SERVLET_SELECTORS, new String[] { "ext" });
msr.setProperty(ServletResolverConstants.SLING_SERVLET_EXTENSIONS, new String[] { "json" });
ServletResourceProvider srp = factory.create(msr, TEST_SERVLET);
assertNotNull(srp);
String[] paths = srp.getServletPaths();
assertNotNull(paths);
assertEquals(1, paths.length);
Set<String> checkerSet = new HashSet<>();
checkerSet.add(ROOT + RES_TYPE_PATH + "/ext.json." + HttpConstants.METHOD_GET + ServletResourceProviderFactory.SERVLET_PATH_EXTENSION);
for (String path : paths) {
assertTrue(path + " not expected", checkerSet.remove(path));
}
assertTrue(checkerSet.isEmpty());
}
use of org.apache.sling.commons.testing.osgi.MockServiceReference in project sling by apache.
the class ServletResourceProviderCreateTest method testCreateMethodsExtensions.
public void testCreateMethodsExtensions() {
MockServiceReference msr = new MockServiceReference(null);
msr.setProperty(ServletResolverConstants.SLING_SERVLET_RESOURCE_TYPES, RES_TYPE);
msr.setProperty(ServletResolverConstants.SLING_SERVLET_METHODS, new String[] { HttpConstants.METHOD_GET, HttpConstants.METHOD_POST });
msr.setProperty(ServletResolverConstants.SLING_SERVLET_EXTENSIONS, new String[] { "json", "html" });
ServletResourceProvider srp = factory.create(msr, TEST_SERVLET);
assertNotNull(srp);
String[] paths = srp.getServletPaths();
assertNotNull(paths);
assertEquals(4, paths.length);
Set<String> checkerSet = new HashSet<>();
checkerSet.add(ROOT + RES_TYPE_PATH + "/json." + HttpConstants.METHOD_GET + ServletResourceProviderFactory.SERVLET_PATH_EXTENSION);
checkerSet.add(ROOT + RES_TYPE_PATH + "/html." + HttpConstants.METHOD_GET + ServletResourceProviderFactory.SERVLET_PATH_EXTENSION);
checkerSet.add(ROOT + RES_TYPE_PATH + "/json." + HttpConstants.METHOD_POST + ServletResourceProviderFactory.SERVLET_PATH_EXTENSION);
checkerSet.add(ROOT + RES_TYPE_PATH + "/html." + HttpConstants.METHOD_POST + ServletResourceProviderFactory.SERVLET_PATH_EXTENSION);
for (String path : paths) {
assertTrue(path + " not expected", checkerSet.remove(path));
}
assertTrue(checkerSet.isEmpty());
}
use of org.apache.sling.commons.testing.osgi.MockServiceReference in project sling by apache.
the class SlingServletResolverTest method setUp.
@Before
public void setUp() throws Exception {
mockResourceResolver = new MockResourceResolver() {
@Override
public void close() {
// nothing to do;
}
@Override
public <AdapterType> AdapterType adaptTo(Class<AdapterType> type) {
return null;
}
@Override
public ResourceResolver clone(Map<String, Object> authenticationInfo) throws LoginException {
throw new LoginException("MockResourceResolver can't be cloned - excepted for this test!");
}
@Override
public void refresh() {
// nothing to do
}
};
mockResourceResolver.setSearchPath("/");
final ResourceResolverFactory factory = new ResourceResolverFactory() {
@Override
public ResourceResolver getAdministrativeResourceResolver(Map<String, Object> authenticationInfo) throws LoginException {
return mockResourceResolver;
}
@Override
public ResourceResolver getResourceResolver(Map<String, Object> authenticationInfo) throws LoginException {
return mockResourceResolver;
}
@Override
public ResourceResolver getServiceResourceResolver(Map<String, Object> authenticationInfo) throws LoginException {
return mockResourceResolver;
}
@Override
public ResourceResolver getThreadResourceResolver() {
// TODO Auto-generated method stub
return null;
}
};
servlet = new MockSlingRequestHandlerServlet();
servletResolver = new SlingServletResolver();
Class<?> resolverClass = servletResolver.getClass();
// set resource resolver factory
final Field resolverField = resolverClass.getDeclaredField("resourceResolverFactory");
resolverField.setAccessible(true);
resolverField.set(servletResolver, factory);
MockBundle bundle = new MockBundle(1L);
MockBundleContext bundleContext = new MockBundleContext(bundle) {
@Override
public ServiceRegistration registerService(String s, Object o, Dictionary dictionary) {
return null;
}
@Override
public ServiceRegistration registerService(String[] strings, Object o, Dictionary dictionary) {
return null;
}
};
MockServiceReference serviceReference = new MockServiceReference(bundle);
serviceReference.setProperty(Constants.SERVICE_ID, 1L);
serviceReference.setProperty(ServletResolverConstants.SLING_SERVLET_NAME, SERVLET_NAME);
serviceReference.setProperty(ServletResolverConstants.SLING_SERVLET_PATHS, SERVLET_PATH);
serviceReference.setProperty(ServletResolverConstants.SLING_SERVLET_EXTENSIONS, SERVLET_EXTENSION);
servletResolver.bindServlet(SlingServletResolverTest.this.servlet, serviceReference);
servletResolver.activate(bundleContext, new SlingServletResolver.Config() {
@Override
public Class<? extends Annotation> annotationType() {
return SlingServletResolver.Config.class;
}
@Override
public String servletresolver_servletRoot() {
return "0";
}
@Override
public String[] servletresolver_paths() {
return new String[] { "/" };
}
@Override
public String[] servletresolver_defaultExtensions() {
// TODO Auto-generated method stub
return new String[] { "html" };
}
@Override
public int servletresolver_cacheSize() {
return 200;
}
});
String path = "/" + MockSlingHttpServletRequest.RESOURCE_TYPE + "/" + ResourceUtil.getName(MockSlingHttpServletRequest.RESOURCE_TYPE) + ".servlet";
MockServletResource res = new MockServletResource(mockResourceResolver, servlet, path);
mockResourceResolver.addResource(res);
MockResource parent = new MockResource(mockResourceResolver, ResourceUtil.getParent(res.getPath()), "nt:folder");
mockResourceResolver.addResource(parent);
List<Resource> childRes = new ArrayList<>();
childRes.add(res);
mockResourceResolver.addChildren(parent, childRes);
}
use of org.apache.sling.commons.testing.osgi.MockServiceReference in project sling by apache.
the class SlingServletResolverTest method testCreateServiceRegistrationProperties.
@Test
public void testCreateServiceRegistrationProperties() throws Throwable {
MockServiceReference msr = new MockServiceReference(null);
msr.setProperty(ServletResolverConstants.SLING_SERVLET_RESOURCE_TYPES, "sample");
msr.setProperty(ServletResolverConstants.SLING_SERVLET_METHODS, "GET");
Field srpf = SlingServletResolver.class.getDeclaredField("servletResourceProviderFactory");
srpf.setAccessible(true);
ServletResourceProviderFactory factory = (ServletResourceProviderFactory) srpf.get(servletResolver);
ServletResourceProvider servlet = factory.create(msr, null);
Method createServiceProperties = SlingServletResolver.class.getDeclaredMethod("createServiceProperties", ServiceReference.class, ServletResourceProvider.class, String.class);
createServiceProperties.setAccessible(true);
// no ranking
assertNull(msr.getProperty(Constants.SERVICE_RANKING));
@SuppressWarnings("unchecked") final Dictionary<String, Object> p1 = (Dictionary<String, Object>) createServiceProperties.invoke(servletResolver, msr, servlet, "/a");
assertNull(p1.get(Constants.SERVICE_RANKING));
// illegal type of ranking
Object nonIntValue = "Some Non Integer Value";
msr.setProperty(Constants.SERVICE_RANKING, nonIntValue);
assertEquals(nonIntValue, msr.getProperty(Constants.SERVICE_RANKING));
@SuppressWarnings("unchecked") final Dictionary<String, Object> p2 = (Dictionary<String, Object>) createServiceProperties.invoke(servletResolver, msr, servlet, "/a");
assertNull(p2.get(Constants.SERVICE_RANKING));
// illegal type of ranking
Object intValue = Integer.valueOf(123);
msr.setProperty(Constants.SERVICE_RANKING, intValue);
assertEquals(intValue, msr.getProperty(Constants.SERVICE_RANKING));
@SuppressWarnings("unchecked") final Dictionary<String, Object> p3 = (Dictionary<String, Object>) createServiceProperties.invoke(servletResolver, msr, servlet, "/a");
assertEquals(intValue, p3.get(Constants.SERVICE_RANKING));
}
use of org.apache.sling.commons.testing.osgi.MockServiceReference in project sling by apache.
the class ServletResourceProviderCreateTest method testCreateMethodsMultiple.
public void testCreateMethodsMultiple() {
MockServiceReference msr = new MockServiceReference(null);
msr.setProperty(ServletResolverConstants.SLING_SERVLET_RESOURCE_TYPES, RES_TYPE);
msr.setProperty(ServletResolverConstants.SLING_SERVLET_METHODS, new String[] { "GET", "POST", "PUT" });
ServletResourceProvider srp = factory.create(msr, TEST_SERVLET);
assertNotNull(srp);
String[] paths = srp.getServletPaths();
assertNotNull(paths);
assertEquals(3, paths.length);
Set<String> checkerSet = new HashSet<>();
checkerSet.add(ROOT + RES_TYPE_PATH + "/" + HttpConstants.METHOD_GET + ServletResourceProviderFactory.SERVLET_PATH_EXTENSION);
checkerSet.add(ROOT + RES_TYPE_PATH + "/" + HttpConstants.METHOD_POST + ServletResourceProviderFactory.SERVLET_PATH_EXTENSION);
checkerSet.add(ROOT + RES_TYPE_PATH + "/" + HttpConstants.METHOD_PUT + ServletResourceProviderFactory.SERVLET_PATH_EXTENSION);
for (String path : paths) {
assertTrue(path + " not expected", checkerSet.remove(path));
}
assertTrue(checkerSet.isEmpty());
}
Aggregations