ref: refs/heads/master
commit cb389a8174acf209bf2276738013d74725963734
Author: Josef Reidinger
Date: Tue Jul 14 16:52:04 2009 +0200
fix broken call redirect_to in lib function, fix indentation
---
.../test/functional/systemtime_controller_test.rb | 12 +++++++
webclient/lib/proxy_loader.rb | 10 +++++-
webclient/lib/yast/service_resource.rb | 32 ++++++++++----------
3 files changed, 36 insertions(+), 18 deletions(-)
diff --git a/plugins/systemtime/test/functional/systemtime_controller_test.rb b/plugins/systemtime/test/functional/systemtime_controller_test.rb
index 512e0a2..8a5ed66 100644
--- a/plugins/systemtime/test/functional/systemtime_controller_test.rb
+++ b/plugins/systemtime/test/functional/systemtime_controller_test.rb
@@ -113,4 +113,16 @@ class SystemTimeControllerTest < ActionController::TestCase
assert @result.saved
end
+ def test_failing_permissions
+ YaST::ServiceResource.stubs(:proxy_for).with('org.opensuse.yast.modules.yapi.time').returns(@proxy)
+ def @proxy.permissions
+ raise "Cannot find permission"
+ end
+
+ get :index
+
+ assert_response :redirect
+ assert_redirected_to "/bad_permissions"
+ end
+
end
diff --git a/webclient/lib/proxy_loader.rb b/webclient/lib/proxy_loader.rb
index 32934e3..6187dfa 100644
--- a/webclient/lib/proxy_loader.rb
+++ b/webclient/lib/proxy_loader.rb
@@ -31,8 +31,14 @@ module ProxyLoader
return nil
end
- @permissions = proxy.permissions
-
+ begin
+ @permissions = proxy.permissions
+ rescue Exception => e
+ ExceptionLogger.log_exception e
+ redirect_to "/bad_permissions"
+ return nil
+ end
+
ret = nil
begin
if find_arg
diff --git a/webclient/lib/yast/service_resource.rb b/webclient/lib/yast/service_resource.rb
index 2ce5e34..8bd34c8 100644
--- a/webclient/lib/yast/service_resource.rb
+++ b/webclient/lib/yast/service_resource.rb
@@ -83,13 +83,13 @@ module YaST
# returns back the rest-service error message if the HTTP error 4** happens
def self.error(net_error)
- begin
- h = Hash.from_xml(net_error.response.body)["error"]
- rescue NoMethodError
- h = { "message" => net_error.response.body }
- end
+ begin
+ h = Hash.from_xml(net_error.response.body)["error"]
+ rescue NoMethodError
+ h = { "message" => net_error.response.body }
+ end
- return h.nil? ? h : h["message"]
+ return h.nil? ? h : h["message"]
end
# all dynamic proxies are created under this module
@@ -126,7 +126,7 @@ module YaST
def obj.collection_path(prefix_options = {}, query_options = nil)
prefix_options, query_options = split_options(prefix_options) if query_options.nil?
# original: "#{prefix(prefix_options)}#{collection_name}.#{format.extension}#{query_string(query_options)}"
- "#{prefix(prefix_options)}#{collection_name}.#{format.extension}#{query_string(query_options)}"
+ "#{prefix(prefix_options)}#{collection_name}.#{format.extension}#{query_string(query_options)}"
end
end
@@ -150,15 +150,15 @@ module YaST
raise "object does not implement any interface" if not (self.respond_to?(:interface) and self.interface)
ret = Hash.new
interface_name = self.interface
- begin
- permissions = proxy.find(:all, :params => { :user_id => login, :filter => interface_name })
- rescue
- redirect_to "/bad_permissions"
- return
- end
+ begin
+ permissions = proxy.find(:all, :params =>
+ { :user_id => login, :filter => interface_name })
+ rescue
+ raise "Cannot find permission for user #{login} and interface #{interface_name}"
+ end
RAILS_DEFAULT_LOGGER.warn "#{proxy.element_name} #{proxy.site}"
permissions.each do |perm|
- break if perm.name.nil? # no permissions
+ break if perm.name.nil? # no permissions
# the permission name is an extension
# of the interface name, if the
# interface is not a subset of the permission
@@ -221,8 +221,8 @@ module YaST
# use options site if available, otherwise
# the ServiceResource site
site = opts.fetch(:site,
- Session.site.nil? ?
- ActiveResource::Base.site : Session.site)
+ Session.site.nil? ?
+ ActiveResource::Base.site : Session.site)
raise "Invalid site" if site.nil?
full_site = URI.join(site, base_path)
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org