@@ -17,6 +17,7 @@ package org.codehaus.groovy.grails.web.servlet;
1717
1818import org.codehaus.groovy.grails.web.metaclass.BindDynamicMethod
1919import org.codehaus.groovy.grails.web.servlet.mvc.AbstractGrailsControllerTests
20+ import org.codehaus.groovy.grails.web.servlet.mvc.GrailsParameterMap
2021
2122/**
2223 * Tests for the bindData method
@@ -69,7 +70,27 @@ class BindDataMethodTests extends AbstractGrailsControllerTests {
6970 }
7071 }
7172
72- void testBindDataWithPrefixFilterAndDisallowed () {
73+ void testBindDataWithDisallowedWithGrailsParameterMap () {
74+ runTest() {
75+ mockController = ga. getControllerClass(" BindController" )
76+ def input = [ ' metaClass' : this . metaClass, ' name' : ' Marc Palmer' , ' email' : ' dontwantthis' ,
77+ ' address.country' :' gbr' ]
78+ input. each() {
79+ webRequest. currentRequest. addParameter((String )it. key, (String )it. value)
80+ }
81+ def excludes = [' email' ]
82+ def params = new GrailsParameterMap (webRequest. currentRequest)
83+
84+ method. invoke( mockController," bindData" , [target, params, excludes]. toArray() )
85+
86+ assertEquals " Marc Palmer" , target. name
87+ assertEquals safeMeta, target. metaClass
88+ assertEquals " gbr" , target. address. country
89+ assertNull target. email
90+ }
91+ }
92+
93+ void testBindDataWithPrefixFilterAndDisallowed () {
7394 runTest() {
7495 mockController = ga. getControllerClass(" BindController" )
7596 def src = [ ' metaClass' : this . metaClass, ' mark.name' : ' Marc Palmer' , ' mark.email' : ' dontwantthis' ,
@@ -99,4 +120,9 @@ class BindController {
99120class CommandObject {
100121 String name
101122 String email
123+ Address address = new Address ()
102124}
125+
126+ class Address {
127+ String country
128+ }
0 commit comments