2 * @author Graeme Rocher
5 * Created: Sep 20, 2007
7 package org
.codehaus
.groovy
.grails
.web
.mapping
9 import org
.codehaus
.groovy
.grails
.web
.servlet
.mvc
.AbstractGrailsControllerTests
10 import org
.springframework
.core
.io
.ByteArrayResource
12 class IdUrlMappingTests
extends AbstractGrailsControllerTests
{
14 def mappingScript
= '''
16 "/emailConfirmation/$id?" {
17 controller = "emailConfirmation"
21 controller = "content"
29 class EmailConfirmationController {
31 [result: "ID = " + params.id]
34 class ContentController {
40 def res
= new ByteArrayResource(mappingScript
.bytes
)
42 def evaluator
= new DefaultUrlMappingEvaluator()
43 def mappings
= evaluator
.evaluateMappings(res
)
45 def holder
= new DefaultUrlMappingsHolder(mappings
)
48 def infos
= holder
.matchAll("/emailConfirmation/foo")
51 infos
[0].configure(webRequest
)
53 def c
= ga
.getControllerClass("EmailConfirmationController").newInstance()
55 assertEquals
"foo",c
.params
.id
58 void testIdInParam() {
60 def res
= new ByteArrayResource(mappingScript
.bytes
)
62 def evaluator
= new DefaultUrlMappingEvaluator()
63 def mappings
= evaluator
.evaluateMappings(res
)
65 def holder
= new DefaultUrlMappingsHolder(mappings
)
68 request
.addParameter("id", "foo")
69 def infos
= holder
.matchAll("/emailConfirmation")
72 infos
[0].configure(webRequest
)
75 def c
= ga
.getControllerClass("EmailConfirmationController").newInstance()
77 assertEquals
"foo",c
.params
.id
80 void testMappingWithUrlEncodedCharsInId() {
81 def res
= new ByteArrayResource(mappingScript
.bytes
)
83 def evaluator
= new DefaultUrlMappingEvaluator()
84 def mappings
= evaluator
.evaluateMappings(res
)
86 def holder
= new DefaultUrlMappingsHolder(mappings
)
89 def infos
= holder
.matchAll("/emailConfirmation/my%20foo")
92 infos
[0].configure(webRequest
)
94 def c
= ga
.getControllerClass("EmailConfirmationController").newInstance()
96 assertEquals
"my foo",c
.params
.id
98 infos
= holder
.matchAll("/emailConfirmation/my%2Ffoo")
101 infos
[0].configure(webRequest
)
103 c
= ga
.getControllerClass("EmailConfirmationController").newInstance()
105 assertEquals
"my/foo",c
.params
.id