]> git.openstreetmap.org Git - rails.git/blobdiff - test/functional/api_controller_test.rb
Include layers in hash
[rails.git] / test / functional / api_controller_test.rb
index 9226e38926e8195c082fbfcbda2e379efd0b9239..c92e1132e3786760ea2278df679818229df4246c 100644 (file)
@@ -18,6 +18,35 @@ class ApiControllerTest < ActionController::TestCase
     # reall reject it, however this is to test to see if the api changes.
   end
 
+  ##
+  # test all routes which lead to this controller
+  def test_routes
+    assert_routing(
+      { :path => "/api/capabilities", :method => :get },
+      { :controller => "api", :action => "capabilities" }
+    )
+    assert_recognizes(
+      { :controller => "api", :action => "capabilities" }, 
+      { :path => "/api/0.6/capabilities", :method => :get }
+    )
+    assert_routing(
+      { :path => "/api/0.6/permissions", :method => :get },
+      { :controller => "api", :action => "permissions" }
+    )
+    assert_routing(
+      { :path => "/api/0.6/map", :method => :get },
+      { :controller => "api", :action => "map" }
+    )
+    assert_routing(
+      { :path => "/api/0.6/trackpoints", :method => :get },
+      { :controller => "api", :action => "trackpoints" }
+    )
+    assert_routing(
+      { :path => "/api/0.6/changes", :method => :get },
+      { :controller => "api", :action => "changes" }
+    )
+  end
+
   # -------------------------------------
   # Test reading a bounding box.
   # -------------------------------------
@@ -237,14 +266,6 @@ class ApiControllerTest < ActionController::TestCase
     end
   end
   
-  def test_start_end_time_invalid
-    
-  end
-  
-  def test_start_end_time_invalid
-    
-  end
-  
   def test_hours_invalid
     invalid = %w{ -21 335 -1 0 25 26 100 one two three ping pong : }
     invalid.each do |hour|
@@ -270,7 +291,47 @@ class ApiControllerTest < ActionController::TestCase
         assert_select "area[maximum=#{MAX_REQUEST_AREA}]", :count => 1
         assert_select "tracepoints[per_page=#{TRACEPOINTS_PER_PAGE}]", :count => 1
         assert_select "changesets[maximum_elements=#{Changeset::MAX_ELEMENTS}]", :count => 1
+        assert_select "status[database=online]", :count => 1
+        assert_select "status[api=online]", :count => 1
+        assert_select "status[gpx=online]", :count => 1
+      end
+    end
+  end
+
+  def test_permissions_anonymous
+    get :permissions
+    assert_response :success
+    assert_select "osm > permissions", :count => 1 do
+      assert_select "permission", :count => 0
+    end
+  end
+
+  def test_permissions_basic_auth
+    basic_authorization(users(:normal_user).email, "test")
+    get :permissions
+    assert_response :success
+    assert_select "osm > permissions", :count => 1 do
+      assert_select "permission", :count => ClientApplication.all_permissions.size
+      ClientApplication.all_permissions.each do |p|
+        assert_select "permission[name=#{p}]", :count => 1
       end
     end
   end
+
+  def test_permissions_oauth
+    @request.env["oauth.token"] =  AccessToken.new do |token|
+      # Just to test a few
+      token.allow_read_prefs = true
+      token.allow_write_api = true
+      token.allow_read_gpx = false
+    end
+    get :permissions
+    assert_response :success
+    assert_select "osm > permissions", :count => 1 do
+      assert_select "permission", :count => 2
+      assert_select "permission[name=allow_read_prefs]", :count => 1
+      assert_select "permission[name=allow_write_api]", :count => 1
+      assert_select "permission[name=allow_read_gpx]", :count => 0
+    end
+  end
 end