public boolean service(Request request, Response response) throws IOException { // Update RequestGlobals with the current request/response (in case // some filter replaced the // normal set). requestGlobals.storeRequestResponse(request, response); return masterDispatcher.dispatch(request, response); } }
@Test public void no_dot_or_colon_in_path() throws Exception { Request request = mockRequest(); Response response = mockResponse(); LocalizationSetter ls = mockLocalizationSetter(); expect(ls.isSupportedLocaleName("foo")).andReturn(false); train_getPath(request, "/foo/bar/baz"); replay(); Dispatcher dispatcher = new ComponentEventDispatcher(null, new ComponentEventLinkEncoderImpl(null, contextPathEncoder, ls, response, null, null, null, true, null, "", null, null)); assertFalse(dispatcher.dispatch(request, response)); verify(); }
@Test public void request_path_reference_non_existent_page() throws Exception { Request request = mockRequest(); Response response = mockResponse(); ComponentClassResolver resolver = mockComponentClassResolver(); LocalizationSetter ls = mockLocalizationSetter(); expect(ls.isSupportedLocaleName("en")).andReturn(true); train_getPath(request, "/en/mypage.foo"); train_isPageName(resolver, "mypage", false); replay(); Dispatcher dispatcher = new ComponentEventDispatcher(null, new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, response, null, null, null, true, null, "", null, null)); assertFalse(dispatcher.dispatch(request, response)); verify(); }
@Test public void request_for_whitelist_only_page_from_client_not_on_whitelist() throws IOException { String requestPath = "/foo/MyPage:anevent"; String localeName = "foo"; String containerPageName = "foo/MyPage"; ComponentRequestHandler handler = mockComponentRequestHandler(); Request request = mockRequest(); Response response = mockResponse(); ComponentClassResolver resolver = mockComponentClassResolver(); LocalizationSetter localizationSetter = mockLocalizationSetter(); MetaDataLocator metaDataLocator = newMock(MetaDataLocator.class); ClientWhitelist whitelist = newMock(ClientWhitelist.class); train_getPath(request, requestPath); expect(localizationSetter.isSupportedLocaleName("foo")).andReturn(false); train_isPageName(resolver, containerPageName, true); train_canonicalizePageName(resolver, containerPageName, containerPageName); expect(metaDataLocator.findMeta(MetaDataConstants.WHITELIST_ONLY_PAGE, containerPageName, boolean.class)).andReturn(true); expect(whitelist.isClientRequestOnWhitelist()).andReturn(false); replay(); Dispatcher dispatcher = new ComponentEventDispatcher(handler, new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, localizationSetter, response, null, null, null, true, null, "", metaDataLocator, whitelist)); assertFalse(dispatcher.dispatch(request, response)); verify(); }
response, null, null, null, true, null, "", metaDataLocator, whitelist)); assertTrue(dispatcher.dispatch(request, response));
@Test public void page_activation_context_in_request() throws Exception { ComponentRequestHandler handler = mockComponentRequestHandler(); Request request = mockRequest(); Response response = mockResponse(); ComponentClassResolver resolver = mockComponentClassResolver(); LocalizationSetter ls = mockLocalizationSetter(); MetaDataLocator metaDataLocator = neverWhitelistProtected(); ComponentEventRequestParameters expectedParameters = new ComponentEventRequestParameters( "mypage", "mypage", "", "eventname", new URLEventContext(contextValueEncoder, new String[] {"alpha", "beta"}), new EmptyEventContext()); train_getPath(request, "/mypage:eventname"); expect(ls.isSupportedLocaleName("mypage:eventname")).andReturn(false); train_isPageName(resolver, "mypage", true); train_canonicalizePageName(resolver, "mypage", "mypage"); train_getParameter(request, InternalConstants.PAGE_CONTEXT_NAME, "alpha/beta"); train_getParameter(request, InternalConstants.CONTAINER_PAGE_NAME, null); expect(request.getAttribute(InternalConstants.REFERENCED_COMPONENT_NOT_FOUND)).andStubReturn(null); train_for_request_locale(request, ls); handler.handleComponentEvent(expectedParameters); replay(); Dispatcher dispatcher = new ComponentEventDispatcher(handler, new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, response, null, null, null, true, null, "", metaDataLocator, null)); assertTrue(dispatcher.dispatch(request, response)); verify(); }
@Test public void different_active_and_containing_pages() throws Exception { ComponentRequestHandler handler = mockComponentRequestHandler(); Request request = mockRequest(); Response response = mockResponse(); ComponentClassResolver resolver = mockComponentClassResolver(); LocalizationSetter ls = mockLocalizationSetter(); MetaDataLocator metaDataLocator = neverWhitelistProtected(); ComponentEventRequestParameters expectedParameters = new ComponentEventRequestParameters( "activepage", "mypage", "", "eventname", new EmptyEventContext(), new EmptyEventContext()); train_getPath(request, "/activepage:eventname"); expect(ls.isSupportedLocaleName("activepage:eventname")).andReturn(false); train_isPageName(resolver, "activepage", true); train_canonicalizePageName(resolver, "activepage", "activepage"); train_getParameter(request, InternalConstants.PAGE_CONTEXT_NAME, null); train_getParameter(request, InternalConstants.CONTAINER_PAGE_NAME, "mypage"); expect(request.getAttribute(InternalConstants.REFERENCED_COMPONENT_NOT_FOUND)).andStubReturn(null); train_canonicalizePageName(resolver, "mypage", "mypage"); train_for_request_locale(request, ls); handler.handleComponentEvent(expectedParameters); replay(); Dispatcher dispatcher = new ComponentEventDispatcher(handler, new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, response, null, null, null, true, null, "", metaDataLocator, null)); assertTrue(dispatcher.dispatch(request, response)); verify(); }
private void test(String requestPath, String localeName, String containerPageName, String nestedComponentId, String eventType, String... eventContext) throws IOException { ComponentRequestHandler handler = mockComponentRequestHandler(); Request request = mockRequest(); Response response = mockResponse(); ComponentClassResolver resolver = mockComponentClassResolver(); LocalizationSetter localizationSetter = mockLocalizationSetter(); MetaDataLocator metaDataLocator = neverWhitelistProtected(); ComponentEventRequestParameters expectedParameters = new ComponentEventRequestParameters( containerPageName, containerPageName, nestedComponentId, eventType, new EmptyEventContext(), new URLEventContext(contextValueEncoder, eventContext)); train_getPath(request, requestPath); expect(localizationSetter.isSupportedLocaleName(localeName)).andReturn(false); train_isPageName(resolver, containerPageName, true); train_canonicalizePageName(resolver, containerPageName, containerPageName); train_getParameter(request, InternalConstants.PAGE_CONTEXT_NAME, null); train_getParameter(request, InternalConstants.CONTAINER_PAGE_NAME, null); expect(request.getAttribute(InternalConstants.REFERENCED_COMPONENT_NOT_FOUND)).andStubReturn(null); handler.handleComponentEvent(expectedParameters); train_for_request_locale(request, localizationSetter); replay(); Dispatcher dispatcher = new ComponentEventDispatcher(handler, new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, localizationSetter, response, null, null, null, true, null, "", metaDataLocator, null)); assertTrue(dispatcher.dispatch(request, response)); verify(); }