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
|
||||
pref = UserPreference.find(@user.id, params[:preference_key])
|
||||
|
||||
if pref
|
||||
render :text => pref.v.to_s
|
||||
else
|
||||
render :text => 'OH NOES! PREF NOT FOUND!', :status => 404
|
||||
end
|
||||
rescue ActiveRecord::RecordNotFound => ex
|
||||
render :text => 'OH NOES! PREF NOT FOUND!', :status => :not_found
|
||||
end
|
||||
|
||||
def update_one
|
||||
|
@ -32,6 +30,8 @@ class UserPreferenceController < ApplicationController
|
|||
UserPreference.delete(@user.id, params[:preference_key])
|
||||
|
||||
render :nothing => true
|
||||
rescue ActiveRecord::RecordNotFound => ex
|
||||
render :text => "param: #{params[:preference_key]} not found", :status => :not_found
|
||||
end
|
||||
|
||||
# print out all the preferences as a big xml block
|
||||
|
@ -52,7 +52,6 @@ class UserPreferenceController < ApplicationController
|
|||
|
||||
# update the entire set of preferences
|
||||
def update
|
||||
begin
|
||||
p = XML::Parser.new
|
||||
p.string = request.raw_post
|
||||
doc = p.parse
|
||||
|
@ -66,7 +65,6 @@ class UserPreferenceController < ApplicationController
|
|||
|
||||
unless keyhash[pt['k']].nil? # already have that key
|
||||
render :text => 'OH NOES! CAN HAS UNIQUE KEYS?', :status => :not_acceptable
|
||||
return
|
||||
end
|
||||
|
||||
keyhash[pt['k']] = 1
|
||||
|
@ -79,7 +77,6 @@ class UserPreferenceController < ApplicationController
|
|||
|
||||
if prefs.size > 150
|
||||
render :text => 'Too many preferences', :status => :request_entity_too_large
|
||||
return
|
||||
end
|
||||
|
||||
# kill the existing ones
|
||||
|
@ -89,12 +86,9 @@ class UserPreferenceController < ApplicationController
|
|||
prefs.each do |pref|
|
||||
pref.save!
|
||||
end
|
||||
render :nothing => true
|
||||
|
||||
rescue Exception => ex
|
||||
render :text => 'OH NOES! FAIL!: ' + ex.to_s, :status => :internal_server_error
|
||||
return
|
||||
end
|
||||
|
||||
render :nothing => true
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
require 'node_controller'
|
||||
|
||||
class NodeControllerTest < ActionController::TestCase
|
||||
api_fixtures
|
||||
|
|
|
@ -1,8 +1,26 @@
|
|||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class UserPreferenceControllerTest < ActionController::TestCase
|
||||
# Replace this with your real tests.
|
||||
def test_truth
|
||||
assert true
|
||||
fixtures :users, :user_preferences
|
||||
|
||||
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
|
||||
|
|
|
@ -106,5 +106,13 @@ class Test::Unit::TestCase
|
|||
assert_equal a.tags, b.tags, "tags on node #{a.id}"
|
||||
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...
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue