# -----------------------
def test_create
- auth_header = basic_authorization_header create(:user, :data_public => false).email, "test"
+ auth_header = bearer_authorization_header create(:user, :data_public => false)
# Create the first user's changeset
xml = "<osm><changeset>" \
"<tag k='created_by' v='osm test suite checking changesets'/>" \
put changeset_create_path, :params => xml, :headers => auth_header
assert_require_public_data
- auth_header = basic_authorization_header create(:user).email, "test"
+ auth_header = bearer_authorization_header
# Create the first user's changeset
xml = "<osm><changeset>" \
"<tag k='created_by' v='osm test suite checking changesets'/>" \
end
def test_create_invalid
- auth_header = basic_authorization_header create(:user, :data_public => false).email, "test"
+ auth_header = bearer_authorization_header create(:user, :data_public => false)
xml = "<osm><changeset></osm>"
put changeset_create_path, :params => xml, :headers => auth_header
assert_require_public_data
## Try the public user
- auth_header = basic_authorization_header create(:user).email, "test"
+ auth_header = bearer_authorization_header
xml = "<osm><changeset></osm>"
put changeset_create_path, :params => xml, :headers => auth_header
assert_response :bad_request, "creating a invalid changeset should fail"
assert_response :unauthorized, "shouldn't be able to create a changeset with no auth"
## Now try to with a non-public user
- auth_header = basic_authorization_header create(:user, :data_public => false).email, "test"
+ auth_header = bearer_authorization_header create(:user, :data_public => false)
put changeset_create_path, :headers => auth_header
assert_require_public_data
## Try an inactive user
- auth_header = basic_authorization_header create(:user, :pending).email, "test"
+ auth_header = bearer_authorization_header create(:user, :pending)
put changeset_create_path, :headers => auth_header
assert_inactive_user
## Now try to use a normal user
- auth_header = basic_authorization_header create(:user).email, "test"
+ auth_header = bearer_authorization_header
put changeset_create_path, :headers => auth_header
assert_response :bad_request, "creating a changeset with no content should fail"
end
def test_create_wrong_method
- auth_header = basic_authorization_header create(:user).email, "test"
+ auth_header = bearer_authorization_header
get changeset_create_path, :headers => auth_header
assert_response :not_found
# one hidden comment shown to moderators
moderator_user = create(:moderator_user)
- auth_header = basic_authorization_header moderator_user.email, "test"
+ auth_header = bearer_authorization_header moderator_user
get changeset_show_path(changeset), :params => { :include_discussion => true, :show_hidden_comments => true },
:headers => auth_header
assert_response :success, "cannot get closed changeset with comments"
# one hidden comment shown to moderators
moderator_user = create(:moderator_user)
- auth_header = basic_authorization_header moderator_user.email, "test"
+ auth_header = bearer_authorization_header moderator_user
get changeset_show_path(changeset), :params => { :format => "json", :include_discussion => true, :show_hidden_comments => true },
:headers => auth_header
assert_response :success, "cannot get closed changeset with comments"
assert_response :unauthorized
## Try using the non-public user
- auth_header = basic_authorization_header private_user.email, "test"
+ auth_header = bearer_authorization_header private_user
put changeset_close_path(private_changeset), :headers => auth_header
assert_require_public_data
## The try with the public user
- auth_header = basic_authorization_header user.email, "test"
+ auth_header = bearer_authorization_header user
cs_id = changeset.id
put changeset_close_path(cs_id), :headers => auth_header
user = create(:user)
changeset = create(:changeset)
- auth_header = basic_authorization_header user.email, "test"
+ auth_header = bearer_authorization_header user
put changeset_close_path(changeset), :headers => auth_header
assert_response :conflict
user = create(:user)
changeset = create(:changeset, :user => user)
- auth_header = basic_authorization_header user.email, "test"
+ auth_header = bearer_authorization_header user
get changeset_close_path(changeset), :headers => auth_header
assert_response :not_found
end
# Now try with auth
- auth_header = basic_authorization_header create(:user).email, "test"
+ auth_header = bearer_authorization_header
cs_ids.each do |id|
put changeset_close_path(id), :headers => auth_header
assert_response :not_found, "The changeset #{id} doesn't exist, so can't be closed"
"shouldn't be able to upload a simple valid diff to changeset: #{@response.body}"
## Now try with a private user
- auth_header = basic_authorization_header private_user.email, "test"
+ auth_header = bearer_authorization_header private_user
changeset_id = private_changeset.id
# simple diff to change a node, way and relation by removing
"can't upload a simple valid diff to changeset: #{@response.body}"
## Now try with the public user
- auth_header = basic_authorization_header user.email, "test"
+ auth_header = bearer_authorization_header user
changeset_id = changeset.id
# simple diff to change a node, way and relation by removing
way = create(:way_with_nodes, :nodes_count => 2)
relation = create(:relation)
- auth_header = basic_authorization_header user.email, "test"
+ auth_header = bearer_authorization_header user
# simple diff to create a node way and relation using placeholders
diff = <<~CHANGESET
create(:relation_member, :relation => super_relation, :member => used_way)
create(:relation_member, :relation => super_relation, :member => used_node)
- auth_header = basic_authorization_header changeset.user.display_name, "test"
+ auth_header = bearer_authorization_header changeset.user
diff = XML::Document.new
diff.root = XML::Node.new "osmChange"
node = create(:node)
changeset = create(:changeset)
- auth_header = basic_authorization_header changeset.user.display_name, "test"
+ auth_header = bearer_authorization_header changeset.user
diff = "<osmChange><delete><node id='#{node.id}' version='#{node.version}' changeset='#{changeset.id}'/></delete></osmChange>"
# upload it
def test_repeated_changeset_create
3.times do
- auth_header = basic_authorization_header create(:user).email, "test"
+ auth_header = bearer_authorization_header
# create a temporary changeset
xml = "<osm><changeset>" \
def test_upload_large_changeset
user = create(:user)
- auth_header = basic_authorization_header user.email, "test"
+ auth_header = bearer_authorization_header user
# create an old changeset to ensure we have the maximum rate limit
create(:changeset, :user => user, :created_at => Time.now.utc - 28.days)
create(:relation_member, :relation => relation, :member => used_way)
create(:relation_member, :relation => relation, :member => used_node)
- auth_header = basic_authorization_header changeset.user.email, "test"
+ auth_header = bearer_authorization_header changeset.user
diff = XML::Document.new
diff.root = XML::Node.new "osmChange"
create(:relation_member, :relation => super_relation, :member => used_way)
create(:relation_member, :relation => super_relation, :member => used_node)
- auth_header = basic_authorization_header changeset.user.email, "test"
+ auth_header = bearer_authorization_header changeset.user
diff = XML::Document.new
diff.root = XML::Node.new "osmChange"
def test_upload_invalid_too_long_tag
changeset = create(:changeset)
- auth_header = basic_authorization_header changeset.user.email, "test"
+ auth_header = bearer_authorization_header changeset.user
# simple diff to create a node way and relation using placeholders
diff = <<~CHANGESET
changeset = create(:changeset)
- auth_header = basic_authorization_header changeset.user.email, "test"
+ auth_header = bearer_authorization_header changeset.user
# simple diff to create a node way and relation using placeholders
diff = <<~CHANGESET
relation = create(:relation)
other_relation = create(:relation)
- auth_header = basic_authorization_header changeset.user.email, "test"
+ auth_header = bearer_authorization_header changeset.user
# simple diff to create a node way and relation using placeholders
diff = <<~CHANGESET
def test_upload_multiple_valid
node = create(:node)
changeset = create(:changeset)
- auth_header = basic_authorization_header changeset.user.email, "test"
+ auth_header = bearer_authorization_header changeset.user
# change the location of a node multiple times, each time referencing
# the last version. doesn't this depend on version numbers being
node = create(:node)
changeset = create(:changeset)
- auth_header = basic_authorization_header changeset.user.email, "test"
+ auth_header = bearer_authorization_header changeset.user
diff = <<~CHANGESET
<osmChange>
def test_upload_missing_version
changeset = create(:changeset)
- auth_header = basic_authorization_header changeset.user.email, "test"
+ auth_header = bearer_authorization_header changeset.user
diff = <<~CHANGESET
<osmChange>
def test_action_upload_invalid
changeset = create(:changeset)
- auth_header = basic_authorization_header changeset.user.email, "test"
+ auth_header = bearer_authorization_header changeset.user
diff = <<~CHANGESET
<osmChange>
other_relation = create(:relation)
create(:relation_tag, :relation => relation)
- auth_header = basic_authorization_header changeset.user.email, "test"
+ auth_header = bearer_authorization_header changeset.user
diff = <<~CHANGESET
<osmChange>
def test_upload_reuse_placeholder_valid
changeset = create(:changeset)
- auth_header = basic_authorization_header changeset.user.email, "test"
+ auth_header = bearer_authorization_header changeset.user
diff = <<~CHANGESET
<osmChange>
def test_upload_placeholder_invalid
changeset = create(:changeset)
- auth_header = basic_authorization_header changeset.user.email, "test"
+ auth_header = bearer_authorization_header changeset.user
diff = <<~CHANGESET
<osmChange>
def test_upload_process_order
changeset = create(:changeset)
- auth_header = basic_authorization_header changeset.user.email, "test"
+ auth_header = bearer_authorization_header changeset.user
diff = <<~CHANGESET
<osmChange>
def test_upload_duplicate_delete
changeset = create(:changeset)
- auth_header = basic_authorization_header changeset.user.email, "test"
+ auth_header = bearer_authorization_header changeset.user
diff = <<~CHANGESET
<osmChange>
changeset = create(:changeset)
way = create(:way)
- auth_header = basic_authorization_header changeset.user.email, "test"
+ auth_header = bearer_authorization_header changeset.user
diff = <<~CHANGESET
<osmChange>
changeset = create(:changeset)
relation = create(:relation)
- auth_header = basic_authorization_header changeset.user.email, "test"
+ auth_header = bearer_authorization_header changeset.user
diff = <<~CHANGESET
<osmChange>
# test what happens if a diff is uploaded containing only a node
# move.
def test_upload_node_move
- auth_header = basic_authorization_header create(:user).email, "test"
+ auth_header = bearer_authorization_header
xml = "<osm><changeset>" \
"<tag k='created_by' v='osm test suite checking changesets'/>" \
##
# test what happens if a diff is uploaded adding a node to a way.
def test_upload_way_extend
- auth_header = basic_authorization_header create(:user).email, "test"
+ auth_header = bearer_authorization_header
xml = "<osm><changeset>" \
"<tag k='created_by' v='osm test suite checking changesets'/>" \
def test_upload_empty_invalid
changeset = create(:changeset)
- auth_header = basic_authorization_header changeset.user.email, "test"
+ auth_header = bearer_authorization_header changeset.user
["<osmChange/>",
"<osmChange></osmChange>",
node = create(:node)
create(:relation_member, :member => node)
- auth_header = basic_authorization_header changeset.user.email, "test"
+ auth_header = bearer_authorization_header changeset.user
# try and delete a node that is in use
diff = XML::Document.new
def test_upload_not_found
changeset = create(:changeset)
- auth_header = basic_authorization_header changeset.user.email, "test"
+ auth_header = bearer_authorization_header changeset.user
# modify node
diff = <<~CHANGESET
def test_upload_relation_placeholder_not_fix
changeset = create(:changeset)
- auth_header = basic_authorization_header changeset.user.email, "test"
+ auth_header = bearer_authorization_header changeset.user
# modify node
diff = <<~CHANGESET
def test_upload_multiple_delete_block
changeset = create(:changeset)
- auth_header = basic_authorization_header changeset.user.email, "test"
+ auth_header = bearer_authorization_header changeset.user
node = create(:node)
way = create(:way)
:num_changes => Settings.initial_changes_per_hour - 2)
# create authentication header
- auth_header = basic_authorization_header user.email, "test"
+ auth_header = bearer_authorization_header user
# simple diff to create a node way and relation using placeholders
diff = <<~CHANGESET
end
# create authentication header
- auth_header = basic_authorization_header user.email, "test"
+ auth_header = bearer_authorization_header user
# simple diff to create a node way and relation using placeholders
diff = <<~CHANGESET
:max_lat => (0.5 * GeoRecord::SCALE).round, :max_lon => (2.5 * GeoRecord::SCALE).round)
# create authentication header
- auth_header = basic_authorization_header user.email, "test"
+ auth_header = bearer_authorization_header user
# simple diff to create a node
diff = <<~CHANGESET
:max_lat => (0.5 * GeoRecord::SCALE).round, :max_lon => (2.5 * GeoRecord::SCALE).round)
# create authentication header
- auth_header = basic_authorization_header user.email, "test"
+ auth_header = bearer_authorization_header user
# simple diff to create a node way and relation using placeholders
diff = <<~CHANGESET
node = create(:node)
## First try with a non-public user, which should get a forbidden
- auth_header = basic_authorization_header create(:user, :data_public => false).email, "test"
+ auth_header = bearer_authorization_header create(:user, :data_public => false)
# create a temporary changeset
xml = "<osm><changeset>" \
assert_response :forbidden
## Now try with a normal user
- auth_header = basic_authorization_header create(:user).email, "test"
+ auth_header = bearer_authorization_header
# create a temporary changeset
xml = "<osm><changeset>" \
#
# NOTE: the error turned out to be something else completely!
def test_josm_upload
- auth_header = basic_authorization_header create(:user).email, "test"
+ auth_header = bearer_authorization_header
# create a temporary changeset
xml = "<osm><changeset>" \
node = create(:node)
node2 = create(:node)
way = create(:way)
- auth_header = basic_authorization_header create(:user).email, "test"
+ auth_header = bearer_authorization_header
# create a temporary changeset
xml = "<osm><changeset>" \
way = create(:way)
create(:way_node, :way => way, :node => create(:node, :lat => 0.3, :lon => 0.3))
- auth_header = basic_authorization_header create(:user).email, "test"
+ auth_header = bearer_authorization_header
# create a new changeset
xml = "<osm><changeset/></osm>"
get changesets_path(:bbox => "-10,-10, 10, 10")
assert_response :success, "can't get changesets in bbox"
- assert_changesets [changeset2, changeset3]
+ assert_changesets_in_order [changeset3, changeset2]
get changesets_path(:bbox => "4.5,4.5,4.6,4.6")
assert_response :success, "can't get changesets in bbox"
- assert_changesets [changeset3]
+ assert_changesets_in_order [changeset3]
# not found when looking for changesets of non-existing users
get changesets_path(:user => User.maximum(:id) + 1)
assert_response :not_found, "shouldn't be able to get changesets by non-public user (name)"
# but this should work
- auth_header = basic_authorization_header private_user.email, "test"
+ auth_header = bearer_authorization_header private_user
get changesets_path(:user => private_user.id), :headers => auth_header
assert_response :success, "can't get changesets by user ID"
- assert_changesets [private_user_changeset, private_user_closed_changeset]
+ assert_changesets_in_order [private_user_changeset, private_user_closed_changeset]
get changesets_path(:display_name => private_user.display_name), :headers => auth_header
assert_response :success, "can't get changesets by user name"
- assert_changesets [private_user_changeset, private_user_closed_changeset]
+ assert_changesets_in_order [private_user_changeset, private_user_closed_changeset]
# test json endpoint
get changesets_path(:display_name => private_user.display_name), :headers => auth_header, :params => { :format => "json" }
get changesets_path(:user => private_user.id, :open => true), :headers => auth_header
assert_response :success, "can't get changesets by user and open"
- assert_changesets [private_user_changeset]
+ assert_changesets_in_order [private_user_changeset]
get changesets_path(:time => "2007-12-31"), :headers => auth_header
assert_response :success, "can't get changesets by time-since"
- assert_changesets [private_user_changeset, private_user_closed_changeset, changeset, closed_changeset, changeset2, changeset3]
+ assert_changesets_in_order [changeset3, changeset2, changeset, private_user_changeset, private_user_closed_changeset, closed_changeset]
get changesets_path(:time => "2008-01-01T12:34Z"), :headers => auth_header
assert_response :success, "can't get changesets by time-since with hour"
- assert_changesets [private_user_changeset, private_user_closed_changeset, changeset, closed_changeset, changeset2, changeset3]
+ assert_changesets_in_order [changeset3, changeset2, changeset, private_user_changeset, private_user_closed_changeset, closed_changeset]
get changesets_path(:time => "2007-12-31T23:59Z,2008-01-02T00:01Z"), :headers => auth_header
assert_response :success, "can't get changesets by time-range"
- assert_changesets [closed_changeset]
+ assert_changesets_in_order [closed_changeset]
get changesets_path(:open => "true"), :headers => auth_header
assert_response :success, "can't get changesets by open-ness"
- assert_changesets [private_user_changeset, changeset, changeset2, changeset3]
+ assert_changesets_in_order [changeset3, changeset2, changeset, private_user_changeset]
get changesets_path(:closed => "true"), :headers => auth_header
assert_response :success, "can't get changesets by closed-ness"
- assert_changesets [private_user_closed_changeset, closed_changeset]
+ assert_changesets_in_order [private_user_closed_changeset, closed_changeset]
get changesets_path(:closed => "true", :user => private_user.id), :headers => auth_header
assert_response :success, "can't get changesets by closed-ness and user"
- assert_changesets [private_user_closed_changeset]
+ assert_changesets_in_order [private_user_closed_changeset]
get changesets_path(:closed => "true", :user => user.id), :headers => auth_header
assert_response :success, "can't get changesets by closed-ness and user"
- assert_changesets [closed_changeset]
+ assert_changesets_in_order [closed_changeset]
get changesets_path(:changesets => "#{private_user_changeset.id},#{changeset.id},#{closed_changeset.id}"), :headers => auth_header
assert_response :success, "can't get changesets by id (as comma-separated string)"
- assert_changesets [private_user_changeset, changeset, closed_changeset]
+ assert_changesets_in_order [changeset, private_user_changeset, closed_changeset]
get changesets_path(:changesets => ""), :headers => auth_header
assert_response :bad_request, "should be a bad request since changesets is empty"
assert_response :unauthorized
# try with the wrong authorization
- auth_header = basic_authorization_header create(:user).email, "test"
+ auth_header = bearer_authorization_header
put changeset_show_path(private_changeset), :params => new_changeset.to_s, :headers => auth_header
assert_response :conflict
# now this should get an unauthorized
- auth_header = basic_authorization_header private_user.email, "test"
+ auth_header = bearer_authorization_header private_user
put changeset_show_path(private_changeset), :params => new_changeset.to_s, :headers => auth_header
assert_require_public_data "user with their data non-public, shouldn't be able to edit their changeset"
assert_response :unauthorized
# try with the wrong authorization
- auth_header = basic_authorization_header create(:user).email, "test"
+ auth_header = bearer_authorization_header
put changeset_show_path(changeset), :params => new_changeset.to_s, :headers => auth_header
assert_response :conflict
# now this should work...
- auth_header = basic_authorization_header user.email, "test"
+ auth_header = bearer_authorization_header user
put changeset_show_path(changeset), :params => new_changeset.to_s, :headers => auth_header
assert_response :success
# check that a user different from the one who opened the changeset
# can't modify it.
def test_changeset_update_invalid
- auth_header = basic_authorization_header create(:user).email, "test"
+ auth_header = bearer_authorization_header
changeset = create(:changeset)
new_changeset = create_changeset_xml(:user => changeset.user, :id => changeset.id)
## FIXME should be changed to an integration test due to the with_controller
def test_changeset_limits
user = create(:user)
- auth_header = basic_authorization_header user.email, "test"
+ auth_header = bearer_authorization_header user
# create an old changeset to ensure we have the maximum rate limit
create(:changeset, :user => user, :created_at => Time.now.utc - 28.days)
##
# test subscribe success
def test_subscribe_success
- auth_header = basic_authorization_header create(:user).email, "test"
+ auth_header = bearer_authorization_header
changeset = create(:changeset, :closed)
assert_difference "changeset.subscribers.count", 1 do
end
assert_response :unauthorized
- auth_header = basic_authorization_header user.email, "test"
+ auth_header = bearer_authorization_header user
# bad changeset id
assert_no_difference "changeset.subscribers.count" do
# test unsubscribe success
def test_unsubscribe_success
user = create(:user)
- auth_header = basic_authorization_header user.email, "test"
+ auth_header = bearer_authorization_header user
changeset = create(:changeset, :closed)
changeset.subscribers.push(user)
end
assert_response :unauthorized
- auth_header = basic_authorization_header create(:user).email, "test"
+ auth_header = bearer_authorization_header
# bad changeset id
assert_no_difference "changeset.subscribers.count" do
end
end
- ##
- # check that certain changesets exist in the output
- def assert_changesets(changesets)
- assert_select "osm>changeset", changesets.size
- changesets.each do |changeset|
- assert_select "osm>changeset[id='#{changeset.id}']", 1
- end
- end
-
##
# check that certain changesets exist in the output in the specified order
def assert_changesets_in_order(changesets)