Permalink
Browse files

Fix moduled controller URLs in WSDL, and add unit test to verify the …

…generated URL.

See ticket #1428.


git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1408 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
1 parent 1fde44b commit 887e67c80e12308467526d731e74fafef9f07ac9 @leonbreedt leonbreedt committed Jun 13, 2005
@@ -1,5 +1,7 @@
*SVN*
+* Fix moduled controller URLs in WSDL, and add unit test to verify the generated URL #1428
+
* Fix scaffolding template paths, it was broken on Win32
* Fix that functional testing of :layered controllers failed when using the SOAP protocol
@@ -167,7 +167,7 @@ def base_uri
host = request.env['HTTP_HOST'] || request.env['SERVER_NAME'] || 'localhost'
relative_url_root = request.relative_url_root
scheme = request.ssl? ? 'https' : 'http'
- '%s://%s%s/%s/' % [scheme, host, relative_url_root, controller_name]
+ '%s://%s%s/%s/' % [scheme, host, relative_url_root, self.class.controller_path]
end
def to_wsdl
@@ -92,10 +92,10 @@ def service_name(container)
def ensure_valid_wsdl_generation(controller)
wsdl = controller.generate_wsdl
- ensure_valid_wsdl(wsdl)
+ ensure_valid_wsdl(controller, wsdl)
end
- def ensure_valid_wsdl(wsdl)
+ def ensure_valid_wsdl(controller, wsdl)
definitions = WSDL::Parser.new.parse(wsdl)
assert(definitions.is_a?(WSDL::Definitions))
definitions.bindings.each do |binding|
@@ -110,15 +110,21 @@ def ensure_valid_wsdl(wsdl)
types.each do |type|
assert(type.namespace == 'urn:ActionWebService')
end
+ location = definitions.services[0].ports[0].soap_address.location
+ if controller.is_a?(DelegatedController)
+ assert_match %r{http://localhost/dispatcher_test/delegated/test_service$}, location
+ elsif controller.is_a?(DirectController)
+ assert_match %r{http://localhost/dispatcher_test/direct/api$}, location
+ end
definitions.collect_complextypes
end
def ensure_valid_wsdl_action(controller)
test_request = ActionController::TestRequest.new({ 'action' => 'wsdl' })
test_request.env['REQUEST_METHOD'] = 'GET'
- test_request.env['HTTP_HOST'] = 'localhost:3000'
+ test_request.env['HTTP_HOST'] = 'localhost'
test_response = ActionController::TestResponse.new
wsdl = controller.process(test_request, test_response).body
- ensure_valid_wsdl(wsdl)
+ ensure_valid_wsdl(controller, wsdl)
end
end

0 comments on commit 887e67c

Please sign in to comment.