Merge remote-tracking branch 'openstreetmap/pull/1339'
authorTom Hughes <tom@compton.nu>
Wed, 26 Oct 2016 14:54:42 +0000 (15:54 +0100)
committerTom Hughes <tom@compton.nu>
Wed, 26 Oct 2016 14:54:42 +0000 (15:54 +0100)
20 files changed:
app/controllers/changeset_controller.rb
app/controllers/user_preference_controller.rb
app/models/acl.rb
app/models/node.rb
app/models/relation.rb
app/models/trace.rb
app/models/way.rb
test/controllers/message_controller_test.rb
test/controllers/trace_controller_test.rb
test/controllers/user_controller_test.rb
test/controllers/user_preference_controller_test.rb
test/factories/acls.rb [new file with mode: 0644]
test/factories/messages.rb [new file with mode: 0644]
test/factories/user_preferences.rb [new file with mode: 0644]
test/fixtures/acls.yml [deleted file]
test/fixtures/messages.yml [deleted file]
test/fixtures/user_preferences.yml [deleted file]
test/models/acl_test.rb
test/models/message_test.rb
test/models/user_preference_test.rb

index 09bad34bc07f3a19f69afd6ef24a7ccdaac7aa00..da066a73afa4bc703f293067ad536ea7c63536e7 100644 (file)
@@ -83,7 +83,7 @@ class ChangesetController < ApplicationController
 
     # the request is in pseudo-osm format... this is kind-of an
     # abuse, maybe should change to some other format?
-    doc = XML::Parser.string(request.raw_post).parse
+    doc = XML::Parser.string(request.raw_post, :options => XML::Parser::Options::NOERROR).parse
     doc.find("//osm/node").each do |n|
       lon << n["lon"].to_f * GeoRecord::SCALE
       lat << n["lat"].to_f * GeoRecord::SCALE
index 78ab45308e874a9d7e56cad7efab1c6d63ca32c4..bf9bab213296f1ad4bc3324b480ad89f9a4895cd 100644 (file)
@@ -39,7 +39,7 @@ class UserPreferenceController < ApplicationController
 
     new_preferences = {}
 
-    doc = XML::Parser.string(request.raw_post).parse
+    doc = XML::Parser.string(request.raw_post, :options => XML::Parser::Options::NOERROR).parse
 
     doc.find("//preferences/preference").each do |pt|
       if preference = old_preferences.delete(pt["k"])
index 8bb4ae4b9dd8ebf294419aa141ebeaea5f4d7994..529ccbe3bc26640dfb057674aca5b433ec1582d3 100644 (file)
@@ -1,4 +1,6 @@
 class Acl < ActiveRecord::Base
+  validates :k, :presence => true
+
   def self.match(address, domain = nil)
     if domain
       Acl.where("address >>= ? OR domain = ?", address, domain)
index 578735688be4253bb90bef0967c9f7244aee5de4..2a64259c10c0832d16c4ec8e2008aa7e34985947 100644 (file)
@@ -49,7 +49,7 @@ class Node < ActiveRecord::Base
 
   # Read in xml as text and return it's Node object representation
   def self.from_xml(xml, create = false)
-    p = XML::Parser.string(xml)
+    p = XML::Parser.string(xml, :options => XML::Parser::Options::NOERROR)
     doc = p.parse
 
     doc.find("//osm/node").each do |pt|
index 4c80be210e6c64ef23004641f2d64ed8d6c770d0..ed37d159af3422437bdda4d00ce0319b381a3417 100644 (file)
@@ -36,7 +36,7 @@ class Relation < ActiveRecord::Base
   TYPES = %w(node way relation).freeze
 
   def self.from_xml(xml, create = false)
-    p = XML::Parser.string(xml)
+    p = XML::Parser.string(xml, :options => XML::Parser::Options::NOERROR)
     doc = p.parse
 
     doc.find("//osm/relation").each do |pt|
index 85c0244d5b89175e595e436119280feb7b8b8ec3..47e5c38b7ee79be23de54384a73b11d0bf881006 100644 (file)
@@ -174,7 +174,7 @@ class Trace < ActiveRecord::Base
 
   # Read in xml as text and return it's Node object representation
   def self.from_xml(xml, create = false)
-    p = XML::Parser.string(xml)
+    p = XML::Parser.string(xml, :options => XML::Parser::Options::NOERROR)
     doc = p.parse
 
     doc.find("//osm/gpx_file").each do |pt|
index ecbdd2f9ccd054ab4120fe7f627afb0c93f14e5c..98c4902f9e693cd2396aaf84761df00c0c3a8d83 100644 (file)
@@ -34,7 +34,7 @@ class Way < ActiveRecord::Base
 
   # Read in xml as text and return it's Way object representation
   def self.from_xml(xml, create = false)
-    p = XML::Parser.string(xml)
+    p = XML::Parser.string(xml, :options => XML::Parser::Options::NOERROR)
     doc = p.parse
 
     doc.find("//osm/way").each do |pt|
index 427519c3220a0fbd1acf4b83302f3ac071e5b3f4..60192abcece5c4571fe822643af7151c07016712 100644 (file)
@@ -1,7 +1,7 @@
 require "test_helper"
 
 class MessageControllerTest < ActionController::TestCase
-  fixtures :users, :messages
+  fixtures :users
 
   ##
   # test all routes which lead to this controller
@@ -119,7 +119,7 @@ class MessageControllerTest < ActionController::TestCase
     assert_match /Test message body/, e.text_part.decoded
     assert_match /Test message body/, e.html_part.decoded
     ActionMailer::Base.deliveries.clear
-    m = Message.find(3)
+    m = Message.last
     assert_equal users(:normal_user).id, m.from_user_id
     assert_equal users(:public_user).id, m.to_user_id
     assert_in_delta Time.now, m.sent_on, 2
@@ -158,32 +158,34 @@ class MessageControllerTest < ActionController::TestCase
   ##
   # test the reply action
   def test_reply
+    unread_message = create(:message, :unread, :sender => users(:normal_user), :recipient => users(:public_user))
+
     # Check that the message reply page requires us to login
-    get :reply, :message_id => messages(:unread_message).id
-    assert_redirected_to login_path(:referer => reply_message_path(:message_id => messages(:unread_message).id))
+    get :reply, :message_id => unread_message.id
+    assert_redirected_to login_path(:referer => reply_message_path(:message_id => unread_message.id))
 
     # Login as the wrong user
     session[:user] = users(:second_public_user).id
 
     # Check that we can't reply to somebody else's message
-    get :reply, :message_id => messages(:unread_message).id
-    assert_redirected_to login_path(:referer => reply_message_path(:message_id => messages(:unread_message).id))
+    get :reply, :message_id => unread_message.id
+    assert_redirected_to login_path(:referer => reply_message_path(:message_id => unread_message.id))
     assert_equal "You are logged in as `pulibc_test2' but the message you have asked to reply to was not sent to that user. Please login as the correct user in order to reply.", flash[:notice]
 
     # Login as the right user
     session[:user] = users(:public_user).id
 
     # Check that the message reply page loads
-    get :reply, :message_id => messages(:unread_message).id
+    get :reply, :message_id => unread_message.id
     assert_response :success
     assert_template "new"
-    assert_select "title", "OpenStreetMap | Re: test message 1"
+    assert_select "title", "OpenStreetMap | Re: #{unread_message.title}"
     assert_select "form[action='#{new_message_path(:display_name => users(:normal_user).display_name)}']", :count => 1 do
-      assert_select "input#message_title[value='Re: test message 1']", :count => 1
+      assert_select "input#message_title[value='Re: #{unread_message.title}']", :count => 1
       assert_select "textarea#message_body", :count => 1
       assert_select "input[type='submit'][value='Send']", :count => 1
     end
-    assert_equal true, Message.find(messages(:unread_message).id).message_read
+    assert_equal true, Message.find(unread_message.id).message_read
 
     # Asking to reply to a message with no ID should fail
     assert_raise ActionController::UrlGenerationError do
@@ -199,35 +201,37 @@ class MessageControllerTest < ActionController::TestCase
   ##
   # test the read action
   def test_read
+    unread_message = create(:message, :unread, :sender => users(:normal_user), :recipient => users(:public_user))
+
     # Check that the read message page requires us to login
-    get :read, :message_id => messages(:unread_message).id
-    assert_redirected_to login_path(:referer => read_message_path(:message_id => messages(:unread_message).id))
+    get :read, :message_id => unread_message.id
+    assert_redirected_to login_path(:referer => read_message_path(:message_id => unread_message.id))
 
     # Login as the wrong user
     session[:user] = users(:second_public_user).id
 
     # Check that we can't read the message
-    get :read, :message_id => messages(:unread_message).id
-    assert_redirected_to login_path(:referer => read_message_path(:message_id => messages(:unread_message).id))
+    get :read, :message_id => unread_message.id
+    assert_redirected_to login_path(:referer => read_message_path(:message_id => unread_message.id))
     assert_equal "You are logged in as `pulibc_test2' but the message you have asked to read was not sent by or to that user. Please login as the correct user in order to read it.", flash[:notice]
 
     # Login as the message sender
     session[:user] = users(:normal_user).id
 
     # Check that the message sender can read the message
-    get :read, :message_id => messages(:unread_message).id
+    get :read, :message_id => unread_message.id
     assert_response :success
     assert_template "read"
-    assert_equal false, Message.find(messages(:unread_message).id).message_read
+    assert_equal false, Message.find(unread_message.id).message_read
 
     # Login as the message recipient
     session[:user] = users(:public_user).id
 
     # Check that the message recipient can read the message
-    get :read, :message_id => messages(:unread_message).id
+    get :read, :message_id => unread_message.id
     assert_response :success
     assert_template "read"
-    assert_equal true, Message.find(messages(:unread_message).id).message_read
+    assert_equal true, Message.find(unread_message.id).message_read
 
     # Asking to read a message with no ID should fail
     assert_raise ActionController::UrlGenerationError do
@@ -243,6 +247,7 @@ class MessageControllerTest < ActionController::TestCase
   ##
   # test the inbox action
   def test_inbox
+    read_message = create(:message, :read, :recipient => users(:normal_user))
     # Check that the inbox page requires us to login
     get :inbox, :display_name => users(:normal_user).display_name
     assert_redirected_to login_path(:referer => inbox_path(:display_name => users(:normal_user).display_name))
@@ -256,7 +261,7 @@ class MessageControllerTest < ActionController::TestCase
     assert_template "inbox"
     assert_select "table.messages", :count => 1 do
       assert_select "tr", :count => 2
-      assert_select "tr#inbox-#{messages(:read_message).id}.inbox-row", :count => 1
+      assert_select "tr#inbox-#{read_message.id}.inbox-row", :count => 1
     end
 
     # Check that we can't view somebody else's inbox when logged in
@@ -267,6 +272,8 @@ class MessageControllerTest < ActionController::TestCase
   ##
   # test the outbox action
   def test_outbox
+    create(:message, :sender => users(:normal_user))
+
     # Check that the outbox page requires us to login
     get :outbox, :display_name => users(:normal_user).display_name
     assert_redirected_to login_path(:referer => outbox_path(:display_name => users(:normal_user).display_name))
@@ -291,15 +298,17 @@ class MessageControllerTest < ActionController::TestCase
   ##
   # test the mark action
   def test_mark
+    unread_message = create(:message, :unread, :sender => users(:normal_user), :recipient => users(:public_user))
+
     # Check that the marking a message requires us to login
-    post :mark, :message_id => messages(:unread_message).id
+    post :mark, :message_id => unread_message.id
     assert_response :forbidden
 
     # Login as a user with no messages
     session[:user] = users(:second_public_user).id
 
     # Check that marking a message we didn't send or receive fails
-    post :mark, :message_id => messages(:read_message).id
+    post :mark, :message_id => unread_message.id
     assert_response :not_found
     assert_template "no_such_message"
 
@@ -307,26 +316,26 @@ class MessageControllerTest < ActionController::TestCase
     session[:user] = users(:public_user).id
 
     # Check that the marking a message read works
-    post :mark, :message_id => messages(:unread_message).id, :mark => "read"
+    post :mark, :message_id => unread_message.id, :mark => "read"
     assert_redirected_to inbox_path(:display_name => users(:public_user).display_name)
-    assert_equal true, Message.find(messages(:unread_message).id).message_read
+    assert_equal true, Message.find(unread_message.id).message_read
 
     # Check that the marking a message unread works
-    post :mark, :message_id => messages(:unread_message).id, :mark => "unread"
+    post :mark, :message_id => unread_message.id, :mark => "unread"
     assert_redirected_to inbox_path(:display_name => users(:public_user).display_name)
-    assert_equal false, Message.find(messages(:unread_message).id).message_read
+    assert_equal false, Message.find(unread_message.id).message_read
 
     # Check that the marking a message read via XHR works
-    xhr :post, :mark, :message_id => messages(:unread_message).id, :mark => "read"
+    xhr :post, :mark, :message_id => unread_message.id, :mark => "read"
     assert_response :success
     assert_template "mark"
-    assert_equal true, Message.find(messages(:unread_message).id).message_read
+    assert_equal true, Message.find(unread_message.id).message_read
 
     # Check that the marking a message unread via XHR works
-    xhr :post, :mark, :message_id => messages(:unread_message).id, :mark => "unread"
+    xhr :post, :mark, :message_id => unread_message.id, :mark => "unread"
     assert_response :success
     assert_template "mark"
-    assert_equal false, Message.find(messages(:unread_message).id).message_read
+    assert_equal false, Message.find(unread_message.id).message_read
 
     # Asking to mark a message with no ID should fail
     assert_raise ActionController::UrlGenerationError do
@@ -342,15 +351,18 @@ class MessageControllerTest < ActionController::TestCase
   ##
   # test the delete action
   def test_delete
+    read_message = create(:message, :read, :recipient => users(:normal_user), :sender => users(:public_user))
+    sent_message = create(:message, :unread, :recipient => users(:public_user), :sender => users(:normal_user))
+
     # Check that the deleting a message requires us to login
-    post :delete, :message_id => messages(:read_message).id
+    post :delete, :message_id => read_message.id
     assert_response :forbidden
 
     # Login as a user with no messages
     session[:user] = users(:second_public_user).id
 
     # Check that deleting a message we didn't send or receive fails
-    post :delete, :message_id => messages(:read_message).id
+    post :delete, :message_id => read_message.id
     assert_response :not_found
     assert_template "no_such_message"
 
@@ -358,18 +370,18 @@ class MessageControllerTest < ActionController::TestCase
     session[:user] = users(:normal_user).id
 
     # Check that the deleting a received message works
-    post :delete, :message_id => messages(:read_message).id
+    post :delete, :message_id => read_message.id
     assert_redirected_to inbox_path(:display_name => users(:normal_user).display_name)
     assert_equal "Message deleted", flash[:notice]
-    m = Message.find(messages(:read_message).id)
+    m = Message.find(read_message.id)
     assert_equal true, m.from_user_visible
     assert_equal false, m.to_user_visible
 
     # Check that the deleting a sent message works
-    post :delete, :message_id => messages(:unread_message).id, :referer => outbox_path(:display_name => users(:normal_user).display_name)
+    post :delete, :message_id => sent_message.id, :referer => outbox_path(:display_name => users(:normal_user).display_name)
     assert_redirected_to outbox_path(:display_name => users(:normal_user).display_name)
     assert_equal "Message deleted", flash[:notice]
-    m = Message.find(messages(:unread_message).id)
+    m = Message.find(sent_message.id)
     assert_equal false, m.from_user_visible
     assert_equal true, m.to_user_visible
 
index 2fec258af4855a2cfe0ecd8a54a3fe6f0ee647ad..5a5234cb5c4b92e6a0caeafbfb3ea4ca1d16ea7c 100644 (file)
@@ -1,7 +1,7 @@
 require "test_helper"
 
 class TraceControllerTest < ActionController::TestCase
-  fixtures :users, :user_preferences, :gpx_files
+  fixtures :users, :gpx_files
   set_fixture_class :gpx_files => Trace
 
   def setup
@@ -455,12 +455,14 @@ class TraceControllerTest < ActionController::TestCase
     assert_redirected_to :controller => :user, :action => :login, :referer => trace_create_path
 
     # Now authenticated as a user with gps.trace.visibility set
+    create(:user_preference, :user => users(:public_user), :k => "gps.trace.visibility", :v => "identifiable")
     get :create, {}, { :user => users(:public_user).id }
     assert_response :success
     assert_template :create
     assert_select "select#trace_visibility option[value=identifiable][selected]", 1
 
     # Now authenticated as a user with gps.trace.public set
+    create(:user_preference, :user => users(:second_public_user), :k => "gps.trace.public", :v => "default")
     get :create, {}, { :user => users(:second_public_user).id }
     assert_response :success
     assert_template :create
@@ -483,6 +485,7 @@ class TraceControllerTest < ActionController::TestCase
     assert_response :forbidden
 
     # Now authenticated
+    create(:user_preference, :user => users(:public_user), :k => "gps.trace.visibility", :v => "identifiable")
     assert_not_equal "trackable", users(:public_user).preferences.where(:k => "gps.trace.visibility").first.v
     post :create, { :trace => { :gpx_file => file, :description => "New Trace", :tagstring => "new,trace", :visibility => "trackable" } }, { :user => users(:public_user).id }
     assert_response :redirect
@@ -710,6 +713,7 @@ class TraceControllerTest < ActionController::TestCase
     assert_response :unauthorized
 
     # Now authenticated
+    create(:user_preference, :user => users(:public_user), :k => "gps.trace.visibility", :v => "identifiable")
     assert_not_equal "trackable", users(:public_user).preferences.where(:k => "gps.trace.visibility").first.v
     basic_authorization(users(:public_user).display_name, "test")
     post :api_create, :file => file, :description => "New Trace", :tags => "new,trace", :visibility => "trackable"
index 14bea63740707babb7a4246179af0ff897d7ebf4..409a93b4e26b61b52ea56e99f18b18713b6173f1 100644 (file)
@@ -2,7 +2,6 @@ require "test_helper"
 
 class UserControllerTest < ActionController::TestCase
   api_fixtures
-  fixtures :messages
 
   ##
   # test all routes which lead to this controller
@@ -1036,6 +1035,8 @@ class UserControllerTest < ActionController::TestCase
   end
 
   def test_api_details
+    create(:message, :read, :recipient => users(:normal_user))
+
     # check that nothing is returned when not logged in
     get :api_details
     assert_response :unauthorized
index 752ec56cb33b6d6a8dfdd2a75e9a67a825e24792..96ba4375c2d6fe59980ff37b9a34d6e98809d48e 100644 (file)
@@ -1,7 +1,7 @@
 require "test_helper"
 
 class UserPreferenceControllerTest < ActionController::TestCase
-  fixtures :users, :user_preferences
+  fixtures :users
 
   ##
   # test all routes which lead to this controller
@@ -47,6 +47,8 @@ class UserPreferenceControllerTest < ActionController::TestCase
     end
 
     # authenticate as a user with preferences
+    user_preference = create(:user_preference, :user => users(:normal_user))
+    user_preference2 = create(:user_preference, :user => users(:normal_user))
     basic_authorization("test@openstreetmap.org", "test")
 
     # try the read again
@@ -56,8 +58,8 @@ class UserPreferenceControllerTest < ActionController::TestCase
     assert_select "osm" 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
+        assert_select "preference[k=\"#{user_preference.k}\"][v=\"#{user_preference.v}\"]", :count => 1
+        assert_select "preference[k=\"#{user_preference2.k}\"][v=\"#{user_preference2.v}\"]", :count => 1
       end
     end
   end
@@ -65,6 +67,8 @@ class UserPreferenceControllerTest < ActionController::TestCase
   ##
   # test read_one action
   def test_read_one
+    create(:user_preference, :user => users(:normal_user), :k => "key", :v => "value")
+
     # try a read without auth
     get :read_one, :preference_key => "key"
     assert_response :unauthorized, "should be authenticated"
@@ -86,16 +90,19 @@ class UserPreferenceControllerTest < ActionController::TestCase
   ##
   # test update action
   def test_update
+    create(:user_preference, :user => users(:normal_user), :k => "key", :v => "value")
+    create(:user_preference, :user => users(:normal_user), :k => "some_key", :v => "some_value")
+
     # try a put without auth
     assert_no_difference "UserPreference.count" do
       content "<osm><preferences><preference k='key' v='new_value'/><preference k='new_key' v='value'/></preferences></osm>"
       put :update
     end
     assert_response :unauthorized, "should be authenticated"
-    assert_equal "value", UserPreference.find([1, "key"]).v
-    assert_equal "some_value", UserPreference.find([1, "some_key"]).v
+    assert_equal "value", UserPreference.find([users(:normal_user).id, "key"]).v
+    assert_equal "some_value", UserPreference.find([users(:normal_user).id, "some_key"]).v
     assert_raises ActiveRecord::RecordNotFound do
-      UserPreference.find([1, "new_key"])
+      UserPreference.find([users(:normal_user).id, "new_key"])
     end
 
     # authenticate as a user with preferences
@@ -109,10 +116,10 @@ class UserPreferenceControllerTest < ActionController::TestCase
     assert_response :success
     assert_equal "text/plain", @response.content_type
     assert_equal "", @response.body
-    assert_equal "new_value", UserPreference.find([1, "key"]).v
-    assert_equal "value", UserPreference.find([1, "new_key"]).v
+    assert_equal "new_value", UserPreference.find([users(:normal_user).id, "key"]).v
+    assert_equal "value", UserPreference.find([users(:normal_user).id, "new_key"]).v
     assert_raises ActiveRecord::RecordNotFound do
-      UserPreference.find([1, "some_key"])
+      UserPreference.find([users(:normal_user).id, "some_key"])
     end
 
     # try a put with duplicate keys
@@ -123,7 +130,7 @@ class UserPreferenceControllerTest < ActionController::TestCase
     assert_response :bad_request
     assert_equal "text/plain", @response.content_type
     assert_equal "Duplicate preferences with key key", @response.body
-    assert_equal "new_value", UserPreference.find([1, "key"]).v
+    assert_equal "new_value", UserPreference.find([users(:normal_user).id, "key"]).v
 
     # try a put with invalid content
     assert_no_difference "UserPreference.count" do
@@ -143,7 +150,7 @@ class UserPreferenceControllerTest < ActionController::TestCase
     end
     assert_response :unauthorized, "should be authenticated"
     assert_raises ActiveRecord::RecordNotFound do
-      UserPreference.find([1, "new_key"])
+      UserPreference.find([users(:normal_user).id, "new_key"])
     end
 
     # authenticate as a user with preferences
@@ -157,7 +164,7 @@ class UserPreferenceControllerTest < ActionController::TestCase
     assert_response :success
     assert_equal "text/plain", @response.content_type
     assert_equal "", @response.body
-    assert_equal "new_value", UserPreference.find([1, "new_key"]).v
+    assert_equal "new_value", UserPreference.find([users(:normal_user).id, "new_key"]).v
 
     # try changing the value of a preference
     assert_no_difference "UserPreference.count" do
@@ -167,18 +174,20 @@ class UserPreferenceControllerTest < ActionController::TestCase
     assert_response :success
     assert_equal "text/plain", @response.content_type
     assert_equal "", @response.body
-    assert_equal "newer_value", UserPreference.find([1, "new_key"]).v
+    assert_equal "newer_value", UserPreference.find([users(:normal_user).id, "new_key"]).v
   end
 
   ##
   # test delete_one action
   def test_delete_one
+    create(:user_preference, :user => users(:normal_user), :k => "key", :v => "value")
+
     # try a delete without auth
     assert_no_difference "UserPreference.count" do
       delete :delete_one, :preference_key => "key"
     end
     assert_response :unauthorized, "should be authenticated"
-    assert_equal "value", UserPreference.find([1, "key"]).v
+    assert_equal "value", UserPreference.find([users(:normal_user).id, "key"]).v
 
     # authenticate as a user with preferences
     basic_authorization("test@openstreetmap.org", "test")
@@ -191,7 +200,7 @@ class UserPreferenceControllerTest < ActionController::TestCase
     assert_equal "text/plain", @response.content_type
     assert_equal "", @response.body
     assert_raises ActiveRecord::RecordNotFound do
-      UserPreference.find([1, "key"])
+      UserPreference.find([users(:normal_user).id, "key"])
     end
 
     # try the delete again for the same key
@@ -200,7 +209,7 @@ class UserPreferenceControllerTest < ActionController::TestCase
     end
     assert_response :not_found
     assert_raises ActiveRecord::RecordNotFound do
-      UserPreference.find([1, "key"])
+      UserPreference.find([users(:normal_user).id, "key"])
     end
   end
 end
diff --git a/test/factories/acls.rb b/test/factories/acls.rb
new file mode 100644 (file)
index 0000000..3f91df3
--- /dev/null
@@ -0,0 +1,5 @@
+FactoryGirl.define do
+  factory :acl do
+    sequence(:k) { |n| "Key #{n}" }
+  end
+end
diff --git a/test/factories/messages.rb b/test/factories/messages.rb
new file mode 100644 (file)
index 0000000..75e65cd
--- /dev/null
@@ -0,0 +1,21 @@
+FactoryGirl.define do
+  factory :message do
+    sequence(:title) { |n| "Message #{n}" }
+    sequence(:body) { |n| "Body text for message #{n}" }
+    sent_on Time.now
+
+    # FIXME: needs user factory
+    from_user_id 1
+
+    # FIXME: needs user factory
+    to_user_id 2
+
+    trait :unread do
+      message_read false
+    end
+
+    trait :read do
+      message_read true
+    end
+  end
+end
diff --git a/test/factories/user_preferences.rb b/test/factories/user_preferences.rb
new file mode 100644 (file)
index 0000000..552cfcd
--- /dev/null
@@ -0,0 +1,9 @@
+FactoryGirl.define do
+  factory :user_preference do
+    sequence(:k) { |n| "Key #{n}" }
+    sequence(:v) { |n| "Value #{n}" }
+
+    # FIXME: needs user factory
+    user_id 1
+  end
+end
diff --git a/test/fixtures/acls.yml b/test/fixtures/acls.yml
deleted file mode 100644 (file)
index 399e088..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
-
-one:
-  address: 1
-  netmask: 1
-  k: MyText
-  v: MyText
-
-two:
-  address: 1
-  netmask: 1
-  k: MyText
-  v: MyText
diff --git a/test/fixtures/messages.yml b/test/fixtures/messages.yml
deleted file mode 100644 (file)
index 0a54cce..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-unread_message:
-  id: 1
-  from_user_id: 1
-  title: test message 1
-  body: some body text
-  sent_on: "2008-05-01 12:34:56"
-  message_read: false
-  to_user_id: 2
-  from_user_visible: true
-  to_user_visible: true
-  
-read_message:
-  id: 2
-  from_user_id: 2
-  title: test message 2
-  body: some body test
-  sent_on: "2008-05-02 12:45:23"
-  message_read: true
-  to_user_id: 1
-  from_user_visible: true
-  to_user_visible: true
diff --git a/test/fixtures/user_preferences.yml b/test/fixtures/user_preferences.yml
deleted file mode 100644 (file)
index 03065a9..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
-
-a:
-  user_id: 1
-  k: "key"
-  v: "value"
-
-two:
-  user_id: 1
-  k: "some_key"
-  v: "some_value"
-
-u2_trace:
-  user_id: 2
-  k: "gps.trace.visibility"
-  v: "identifiable"
-
-u3_trace:
-  user_id: 4
-  k: "gps.trace.public"
-  v: "default"
index 4022b8adb0673aeb51679620e68b6ee2d68b0e2c..189f92677019bae19f1f7c557563b64f243ae668 100644 (file)
@@ -1,8 +1,22 @@
 require "test_helper"
 
 class AclTest < ActiveSupport::TestCase
-  # Replace this with your real tests.
-  def test_truth
-    assert true
+  def test_k_required
+    acl = create(:acl)
+    assert acl.valid?
+    acl.k = nil
+    assert !acl.valid?
+  end
+
+  def test_no_account_creation_by_subnet
+    assert !Acl.no_account_creation("192.168.1.1")
+    create(:acl, :address => "192.168.0.0/16", :k => "no_account_creation")
+    assert Acl.no_account_creation("192.168.1.1")
+  end
+
+  def test_no_account_creation_by_domain
+    assert !Acl.no_account_creation("192.168.1.1", "example.com")
+    create(:acl, :domain => "example.com", :k => "no_account_creation")
+    assert Acl.no_account_creation("192.168.1.1", "example.com")
   end
 end
index ff9f24da42c71b17ccc9938c0faa271d230ca9b7..4f8c4b8e2ca2d06e7ea492b4c247f0b0766751ba 100644 (file)
@@ -3,16 +3,9 @@ require "test_helper"
 
 class MessageTest < ActiveSupport::TestCase
   api_fixtures
-  fixtures :messages
 
   EURO = "\xe2\x82\xac".freeze # euro symbol
 
-  # This needs to be updated when new fixtures are added
-  # or removed.
-  def test_check_message_count
-    assert_equal 2, Message.count
-  end
-
   def test_check_empty_message_fails
     message = Message.new
     assert !message.valid?
@@ -23,14 +16,14 @@ class MessageTest < ActiveSupport::TestCase
   end
 
   def test_validating_msgs
-    message = messages(:unread_message)
+    message = create(:message, :unread)
     assert message.valid?
-    message = messages(:read_message)
+    message = create(:message, :read)
     assert message.valid?
   end
 
   def test_invalid_send_recipient
-    message = messages(:unread_message)
+    message = create(:message, :unread)
     message.sender = nil
     message.recipient = nil
     assert !message.valid?
@@ -184,7 +177,7 @@ class MessageTest < ActiveSupport::TestCase
   private
 
   def make_message(char, count)
-    message = messages(:unread_message)
+    message = build(:message, :unread)
     message.title = char * count
     message
   end
index d3400bc9d4d8cc2bdba5bf68109435987b0fb1e2..c61bd607dcce10e92e5ab7c85ccb38cf22cf84d4 100644 (file)
@@ -2,19 +2,10 @@ require "test_helper"
 
 class UserPreferenceTest < ActiveSupport::TestCase
   api_fixtures
-  fixtures :user_preferences
-
-  # This checks to make sure that there are two user preferences
-  # stored in the test database.
-  # This test needs to be updated for every addition/deletion from
-  # the fixture file
-  def test_check_count
-    assert_equal 4, UserPreference.count
-  end
 
   # Checks that you cannot add a new preference, that is a duplicate
   def test_add_duplicate_preference
-    up = user_preferences(:a)
+    up = create(:user_preference)
     new_up = UserPreference.new
     new_up.user = users(:normal_user)
     new_up.k = up.k