]> git.openstreetmap.org Git - rails.git/blobdiff - test/test_helper.rb
Add extra visibility options for GPS traces, and enhance the API call
[rails.git] / test / test_helper.rb
index e38f74af58863a73ae7960c0761b97c0ad7e6d73..97c74900075def22db5e50c94a17d818b8b42334 100644 (file)
@@ -3,7 +3,7 @@ require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
 require 'test_help'
 load 'composite_primary_keys/fixtures.rb'
 
-class Test::Unit::TestCase
+class ActiveSupport::TestCase
   # Transactional fixtures accelerate your tests by wrapping each test method
   # in a transaction that's rolled back on completion.  This ensures that the
   # test database remains unchanged so your fixtures don't have to be reloaded
@@ -25,43 +25,52 @@ class Test::Unit::TestCase
   # then set this back to true.
   self.use_instantiated_fixtures  = false
 
+
   # Load standard fixtures needed to test API methods
   def self.api_fixtures
     #print "setting up the api_fixtures"
-    fixtures :users, :changesets
+    fixtures :users, :changesets, :changeset_tags
 
     fixtures :current_nodes, :nodes
-    set_fixture_class :current_nodes => Node
-    set_fixture_class :nodes => OldNode
+    set_fixture_class :current_nodes => 'Node'
+    set_fixture_class :nodes => 'OldNode'
 
     fixtures  :current_node_tags,:node_tags
-    set_fixture_class :current_node_tags => NodeTag
-    set_fixture_class :node_tags => OldNodeTag
-
-    fixtures :current_ways, :current_way_nodes, :current_way_tags
-    set_fixture_class :current_ways => Way
-    set_fixture_class :current_way_nodes => WayNode
-    set_fixture_class :current_way_tags => WayTag
-
-    fixtures :ways, :way_nodes, :way_tags
-    set_fixture_class :ways => OldWay
-    set_fixture_class :way_nodes => OldWayNode
-    set_fixture_class :way_tags => OldWayTag
-
-    fixtures :current_relations, :current_relation_members, :current_relation_tags
-    set_fixture_class :current_relations => Relation
-    set_fixture_class :current_relation_members => RelationMember
-    set_fixture_class :current_relation_tags => RelationTag
-
-    fixtures :relations, :relation_members, :relation_tags
-    set_fixture_class :relations => OldRelation
-    set_fixture_class :relation_members => OldRelationMember
-    set_fixture_class :relation_tags => OldRelationTag
+    set_fixture_class :current_node_tags => 'NodeTag'
+    set_fixture_class :node_tags => 'OldNodeTag'
+
+    fixtures :current_ways
+    set_fixture_class :current_ways => 'Way'
+
+    fixtures :current_way_nodes, :current_way_tags
+    set_fixture_class :current_way_nodes => 'WayNode'
+    set_fixture_class :current_way_tags => 'WayTag'
+
+    fixtures :ways
+    set_fixture_class :ways => 'OldWay'
+
+    fixtures :way_nodes, :way_tags
+    set_fixture_class :way_nodes => 'OldWayNode'
+    set_fixture_class :way_tags => 'OldWayTag'
+
+    fixtures :current_relations
+    set_fixture_class :current_relations => 'Relation'
+
+    fixtures :current_relation_members, :current_relation_tags
+    set_fixture_class :current_relation_members => 'RelationMember'
+    set_fixture_class :current_relation_tags => 'RelationTag'
+
+    fixtures :relations
+    set_fixture_class :relations => 'OldRelation'
+
+    fixtures :relation_members, :relation_tags
+    set_fixture_class :relation_members => 'OldRelationMember'
+    set_fixture_class :relation_tags => 'OldRelationTag'
     
     fixtures :gpx_files, :gps_points, :gpx_file_tags
-    set_fixture_class :gpx_files => Trace
-    set_fixture_class :gps_points => Tracepoint
-    set_fixture_class :gpx_file_tags => Tracetag
+    set_fixture_class :gpx_files => 'Trace'
+    set_fixture_class :gps_points => 'Tracepoint'
+    set_fixture_class :gpx_file_tags => 'Tracetag'
   end
 
   ##
@@ -106,5 +115,30 @@ 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
+  
+  # Used to check that the error header and the forbidden responses are given
+  # when the owner of the changset has their data not marked as public
+  def assert_require_public_data(msg = "Shouldn't be able to use API when the user's data is not public")
+    assert_response :forbidden, msg
+    assert_equal @response.headers['Error'], "You must make your edits public to upload new data", "Wrong error message"
+  end
+  
+  # Not sure this is the best response we could give
+  def assert_inactive_user(msg = "an inactive user shouldn't be able to access the API")
+    assert_response :unauthorized, msg
+    #assert_equal @response.headers['Error'], ""
+  end
+  
+  def assert_no_missing_translations(msg="")
+    assert_select "span[class=translation_missing]", false, "Missing translation #{msg}"
+  end
+  
   # Add more helper methods to be used by all tests here...
 end