ref: refs/heads/jr_ntp
commit f14b66fbb6af38ff673cdc54f1bcb81fdd23959d
Author: Jiri Suchomel
Date: Fri Sep 11 16:07:44 2009 +0200
return whole object, not just aliases
make aliases a string, not list
---
.../app/controllers/administrator_controller.rb | 29 +++++++++++++-------
plugins/administrator/app/models/administrator.rb | 28 +++++++++++++++---
.../functional/administrator_controller_test.rb | 8 +++--
.../administrator/test/unit/administrator_test.rb | 6 ++--
4 files changed, 50 insertions(+), 21 deletions(-)
diff --git a/plugins/administrator/app/controllers/administrator_controller.rb b/plugins/administrator/app/controllers/administrator_controller.rb
index 60b90e0..21e560d 100644
--- a/plugins/administrator/app/controllers/administrator_controller.rb
+++ b/plugins/administrator/app/controllers/administrator_controller.rb
@@ -4,38 +4,47 @@ class AdministratorController < ApplicationController
# GET action
def show
+
unless permission_check("org.opensuse.yast.modules.yapi.administrator.read")
render ErrorResult.error(403, 1, "no permission for reading") and return
end
@admin = Administrator.instance
- @aliases = @admin.read_aliases
+ @admin.read_aliases
respond_to do |format|
- format.html { render :xml => @aliases.to_xml(:root => 'aliases'), :location => "none" } #return xml only
- format.xml { render :xml => @aliases.to_xml(:root => 'aliases'), :location => "none" }
- format.json { render :json => @aliases.to_json, :location => "none" }
+ format.html { render :xml => @admin.to_xml(:root => "administrator"), :location => "none" } #return xml only
+ format.xml { render :xml => @admin.to_xml(:root => "administrator"), :location => "none" }
+ format.json { render :json => @admin.to_json, :location => "none" }
end
end
# PUT action
def update
-
unless permission_check("org.opensuse.yast.modules.yapi.administrator.write")
render ErrorResult.error(403, 1, "no permission for writing") and return
end
+ data = params["administrator"]
@admin = Administrator.instance
+ @admin.read_aliases
- if params.has_key?(:password) && !params[:password].empty?
- @admin.save_password(params[:password])
+ if data.has_key?(:password) && !data[:password].nil? && !data[:password].empty?
+ @admin.save_password(data[:password])
end
- if params.has_key?(:aliases)
- @admin.save_aliases(params[:aliases])
+ if data.has_key?(:aliases)
+ begin
+ @admin.save_aliases(data[:aliases])
+ rescue Exception => e
+ render ErrorResult.error(500, 2, e.message) and return
+ end
end
-
show
end
+ def create
+ update
+ end
+
end
diff --git a/plugins/administrator/app/models/administrator.rb b/plugins/administrator/app/models/administrator.rb
index 87186fd..abda993 100644
--- a/plugins/administrator/app/models/administrator.rb
+++ b/plugins/administrator/app/models/administrator.rb
@@ -3,12 +3,14 @@ require 'yast_service'
class Administrator
- attr_reader :aliases
+ attr_accessor :aliases
+ attr_reader :password
include Singleton
def initialize
- @aliases = []
+ @aliases = ""
+ @password = ""
end
def read_aliases
@@ -16,7 +18,7 @@ class Administrator
if yapi_ret.nil?
raise "Can't read administrator data"
elsif yapi_ret.has_key?("aliases")
- @aliases = yapi_ret["aliases"]
+ @aliases = yapi_ret["aliases"].join(",")
end
@aliases
end
@@ -30,12 +32,13 @@ class Administrator
end
def save_aliases(new_aliases)
- if @aliases.sort == new_aliases
+ new_aliases = "" if new_aliases.nil?
+ if @aliases.split(",").sort == new_aliases.split(",").sort
Rails.logger.debug "mail aliases have not been changed"
return
end
parameters = {
- "aliases" => ["as", new_aliases]
+ "aliases" => ["as", new_aliases.split(",")]
}
yapi_ret = YastService.Call("YaPI::ADMINISTRATOR::Write", parameters)
Rails.logger.debug "YaPI returns: '#{yapi_ret}'"
@@ -44,4 +47,19 @@ class Administrator
@aliases = new_aliases
end
+ def to_xml( options = {} )
+ xml = options[:builder] ||= Builder::XmlMarkup.new(options)
+ xml.instruct! unless options[:skip_instruct]
+
+ xml.administrator do
+ xml.password password
+ xml.aliases aliases
+ end
+ end
+
+ def to_json( options = {} )
+ hash = Hash.from_xml(to_xml())
+ return hash.to_json
+ end
+
end
diff --git a/plugins/administrator/test/functional/administrator_controller_test.rb b/plugins/administrator/test/functional/administrator_controller_test.rb
index d3a4879..85faa7b 100644
--- a/plugins/administrator/test/functional/administrator_controller_test.rb
+++ b/plugins/administrator/test/functional/administrator_controller_test.rb
@@ -12,10 +12,11 @@ class AdministratorControllerTest < ActionController::TestCase
@request.session[:account_id] = 1 # defined in fixtures
@model = Administrator.instance
- @model.stubs(:read_aliases).returns([])
+ @model.stubs(:read_aliases).returns("")
end
test "check 'show' result" do
+
ret = get :show
# success (200 OK)
assert_response :success
@@ -23,8 +24,9 @@ class AdministratorControllerTest < ActionController::TestCase
# is returned a valid XML?
ret_hash = Hash.from_xml(ret.body)
assert ret_hash
- assert ret_hash.has_key?("aliases")
- assert ret_hash["aliases"].is_a? Array
+ assert ret_hash.has_key?("administrator")
+ assert ret_hash["administrator"].has_key?("aliases")
+ Rails.logger.debug ret_hash.inspect
end
end
diff --git a/plugins/administrator/test/unit/administrator_test.rb b/plugins/administrator/test/unit/administrator_test.rb
index 1e8ef08..008977d 100644
--- a/plugins/administrator/test/unit/administrator_test.rb
+++ b/plugins/administrator/test/unit/administrator_test.rb
@@ -18,15 +18,15 @@ class AdministratorTest < ActiveSupport::TestCase
YastService.stubs(:Call).with('YaPI::ADMINISTRATOR::Read').returns({ "aliases" => [ "a@b" ] })
ret = @model.read_aliases
assert ret
- assert @model.aliases.size == 1
+ assert @model.aliases.split(",").size == 1
end
def test_save_aliases
new_aliases = [ "test@domain.com", "a@b" ];
YastService.stubs(:Call).with('YaPI::ADMINISTRATOR::Write', {"aliases" => [ "as", new_aliases ]}).returns("")
- ret = @model.save_aliases(new_aliases)
+ ret = @model.save_aliases(new_aliases.join(","))
assert ret
- assert @model.aliases.size == 2
+ assert @model.aliases.split(",").size == 2
end
end
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org