Improving the not found handling of preferences. adding a user preference test. adding some utility methods to the test helper
This commit is contained in:
parent
541c24b23d
commit
c76e60f052
4 changed files with 62 additions and 43 deletions
|
@ -5,11 +5,9 @@ class UserPreferenceController < ApplicationController
|
||||||
def read_one
|
def read_one
|
||||||
pref = UserPreference.find(@user.id, params[:preference_key])
|
pref = UserPreference.find(@user.id, params[:preference_key])
|
||||||
|
|
||||||
if pref
|
|
||||||
render :text => pref.v.to_s
|
render :text => pref.v.to_s
|
||||||
else
|
rescue ActiveRecord::RecordNotFound => ex
|
||||||
render :text => 'OH NOES! PREF NOT FOUND!', :status => 404
|
render :text => 'OH NOES! PREF NOT FOUND!', :status => :not_found
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_one
|
def update_one
|
||||||
|
@ -32,6 +30,8 @@ class UserPreferenceController < ApplicationController
|
||||||
UserPreference.delete(@user.id, params[:preference_key])
|
UserPreference.delete(@user.id, params[:preference_key])
|
||||||
|
|
||||||
render :nothing => true
|
render :nothing => true
|
||||||
|
rescue ActiveRecord::RecordNotFound => ex
|
||||||
|
render :text => "param: #{params[:preference_key]} not found", :status => :not_found
|
||||||
end
|
end
|
||||||
|
|
||||||
# print out all the preferences as a big xml block
|
# print out all the preferences as a big xml block
|
||||||
|
@ -52,7 +52,6 @@ class UserPreferenceController < ApplicationController
|
||||||
|
|
||||||
# update the entire set of preferences
|
# update the entire set of preferences
|
||||||
def update
|
def update
|
||||||
begin
|
|
||||||
p = XML::Parser.new
|
p = XML::Parser.new
|
||||||
p.string = request.raw_post
|
p.string = request.raw_post
|
||||||
doc = p.parse
|
doc = p.parse
|
||||||
|
@ -66,7 +65,6 @@ class UserPreferenceController < ApplicationController
|
||||||
|
|
||||||
unless keyhash[pt['k']].nil? # already have that key
|
unless keyhash[pt['k']].nil? # already have that key
|
||||||
render :text => 'OH NOES! CAN HAS UNIQUE KEYS?', :status => :not_acceptable
|
render :text => 'OH NOES! CAN HAS UNIQUE KEYS?', :status => :not_acceptable
|
||||||
return
|
|
||||||
end
|
end
|
||||||
|
|
||||||
keyhash[pt['k']] = 1
|
keyhash[pt['k']] = 1
|
||||||
|
@ -79,7 +77,6 @@ class UserPreferenceController < ApplicationController
|
||||||
|
|
||||||
if prefs.size > 150
|
if prefs.size > 150
|
||||||
render :text => 'Too many preferences', :status => :request_entity_too_large
|
render :text => 'Too many preferences', :status => :request_entity_too_large
|
||||||
return
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# kill the existing ones
|
# kill the existing ones
|
||||||
|
@ -89,12 +86,9 @@ class UserPreferenceController < ApplicationController
|
||||||
prefs.each do |pref|
|
prefs.each do |pref|
|
||||||
pref.save!
|
pref.save!
|
||||||
end
|
end
|
||||||
|
render :nothing => true
|
||||||
|
|
||||||
rescue Exception => ex
|
rescue Exception => ex
|
||||||
render :text => 'OH NOES! FAIL!: ' + ex.to_s, :status => :internal_server_error
|
render :text => 'OH NOES! FAIL!: ' + ex.to_s, :status => :internal_server_error
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
render :nothing => true
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
require File.dirname(__FILE__) + '/../test_helper'
|
require File.dirname(__FILE__) + '/../test_helper'
|
||||||
require 'node_controller'
|
|
||||||
|
|
||||||
class NodeControllerTest < ActionController::TestCase
|
class NodeControllerTest < ActionController::TestCase
|
||||||
api_fixtures
|
api_fixtures
|
||||||
|
|
|
@ -1,8 +1,26 @@
|
||||||
require File.dirname(__FILE__) + '/../test_helper'
|
require File.dirname(__FILE__) + '/../test_helper'
|
||||||
|
|
||||||
class UserPreferenceControllerTest < ActionController::TestCase
|
class UserPreferenceControllerTest < ActionController::TestCase
|
||||||
# Replace this with your real tests.
|
fixtures :users, :user_preferences
|
||||||
def test_truth
|
|
||||||
assert true
|
def test_read
|
||||||
|
# first try without auth
|
||||||
|
get :read
|
||||||
|
assert_response :unauthorized, "should be authenticated"
|
||||||
|
|
||||||
|
# now set the auth
|
||||||
|
basic_authorization("test@openstreetmap.org", "test")
|
||||||
|
|
||||||
|
get :read
|
||||||
|
assert_response :success
|
||||||
|
print @response.body
|
||||||
|
assert_select "osm:root" do
|
||||||
|
assert_select "preferences", :count => 1 do
|
||||||
|
assert_select "preference", :count => 2
|
||||||
|
assert_select "preference[k=\"#{user_preferences(:a).k}\"][v=\"#{user_preferences(:a).v}\"]", :count => 1
|
||||||
|
assert_select "preference[k=\"#{user_preferences(:two).k}\"][v=\"#{user_preferences(:two).v}\"]", :count => 1
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -106,5 +106,13 @@ class Test::Unit::TestCase
|
||||||
assert_equal a.tags, b.tags, "tags on node #{a.id}"
|
assert_equal a.tags, b.tags, "tags on node #{a.id}"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def basic_authorization(user, pass)
|
||||||
|
@request.env["HTTP_AUTHORIZATION"] = "Basic %s" % Base64.encode64("#{user}:#{pass}")
|
||||||
|
end
|
||||||
|
|
||||||
|
def content(c)
|
||||||
|
@request.env["RAW_POST_DATA"] = c.to_s
|
||||||
|
end
|
||||||
|
|
||||||
# Add more helper methods to be used by all tests here...
|
# Add more helper methods to be used by all tests here...
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue