@Test(expectedExceptions = InvalidBindingException.class) public final void bindRequestDetectInvalid() { final HttpServletRequest request = createMock(HttpServletRequest.class); expect(request.getParameterMap()) .andReturn( new HashMap<String, String[]>() { { put("name.toString()", new String[] {"Dhanji"}); put("2 + 12", new String[] {"27"}); put("#@!*^&", new String[] {"true"}); put("id", new String[] {"12"}); put("height", new String[] {"6.0"}); } }); replay(request); final AnObject o = new AnObject(); final Evaluator evaluator = Guice.createInjector().getInstance(Evaluator.class); new MvelRequestBinder( evaluator, new Provider<FlashCache>() { public FlashCache get() { return new HttpSessionFlashCache(); } }) .bind(TestRequestCreator.from(request, null), o); }
@Test public final void bindRequestToPrimitivesAndIgnoreExtras() { final HttpServletRequest request = createMock(HttpServletRequest.class); expect(request.getParameterMap()) .andReturn( new HashMap<String, String[]>() { { put("name", new String[] {"Dhanji"}); put("age", new String[] {"27"}); put("alive", new String[] {"true"}); put("id", new String[] {"12"}); put("height", new String[] {"6.0"}); put("weight", new String[] {"6.0"}); put("hiphop", new String[] {"6.0"}); } }); replay(request); final AnObject o = new AnObject(); final Evaluator evaluator = Guice.createInjector().getInstance(Evaluator.class); new MvelRequestBinder( evaluator, new Provider<FlashCache>() { public FlashCache get() { return new HttpSessionFlashCache(); } }) .bind(TestRequestCreator.from(request, null), o); assert "Dhanji".equals(o.getName()); assert 27 == (o.getAge()); assert 12L == (o.getId()); assert 6.0 == (o.getHeight()); assert (o.isAlive()); verify(request); }
@Test public final void bindRequestToCollections() { final HttpServletRequest request = createMock(HttpServletRequest.class); final String choice = "AChoice"; // setup preliminary request final HttpSessionFlashCache cache = new HttpSessionFlashCache(); cache.put("names", Arrays.asList("First", choice, "BobLee", "JasonLee", "Mowglee")); expect(request.getParameterMap()) .andReturn( new HashMap<String, String[]>() { { put( "select", new String[] { RequestBinder.COLLECTION_BIND_PREFIX + "names/" + choice.hashCode() }); } }); replay(request); final AnObject o = new AnObject(); final Evaluator evaluator = Guice.createInjector().getInstance(Evaluator.class); new MvelRequestBinder( evaluator, new Provider<FlashCache>() { public FlashCache get() { return cache; } }) .bind(TestRequestCreator.from(request, null), o); assert choice.equals(o.getSelect()) : "Collection selectee was not bound: " + o.getSelect(); verify(request); }
@Test(dataProvider = HEADERS_AND_NEGOTIATIONS) public final void variousHeadersAndNegotiations( Map<String, String> negotiations, final Multimap<String, String> headers, boolean shouldPass) { HttpServletRequest request = new HttpServletRequestWrapper(createMock(HttpServletRequest.class)) { @Override public Enumeration getHeaders(String name) { return Iterators.asEnumeration(headers.get(name).iterator()); } @Override public Enumeration getHeaderNames() { return Iterators.asEnumeration(headers.keys().iterator()); } }; assert shouldPass == new WildcardNegotiator() .shouldCall(negotiations, TestRequestCreator.from(request, null)); }