diff options
author | Heiko Bernloehr <Heiko.Bernloehr@FreeIT.de> | 2017-03-15 00:20:23 +0100 |
---|---|---|
committer | Heiko Bernloehr <Heiko.Bernloehr@FreeIT.de> | 2017-03-15 00:20:23 +0100 |
commit | 692068ba05d1c4c53b2cb1ba081f9c33fa358b9a (patch) | |
tree | c4bbe2f62930ae3a4a4f265ae34e7cf5c0cf23fe | |
parent | 5a14e7ac5661c5ad326ec41d94c193b0b8a72636 (diff) | |
download | ecs-692068ba05d1c4c53b2cb1ba081f9c33fa358b9a.tar.gz ecs-692068ba05d1c4c53b2cb1ba081f9c33fa358b9a.zip |
Adjust test code.
-rw-r--r-- | test/controllers/events_controller_test.rb | 3 | ||||
-rw-r--r-- | test/controllers/memberships_controller_test.rb | 5 | ||||
-rw-r--r-- | test/controllers/messages_controller_test.rb | 479 | ||||
-rw-r--r-- | test/integration/community_messages_test.rb | 2 | ||||
-rw-r--r-- | test/integration/ressource_test.rb | 16 | ||||
-rw-r--r-- | test/test_helper.rb | 40 |
6 files changed, 309 insertions, 236 deletions
diff --git a/test/controllers/events_controller_test.rb b/test/controllers/events_controller_test.rb index 28e5fce..2b03809 100644 --- a/test/controllers/events_controller_test.rb +++ b/test/controllers/events_controller_test.rb @@ -20,7 +20,8 @@ require 'test_helper' class EventsControllerTest < ActionController::TestCase test "index" do - @request.env["X-EcsAuthId"] = identities(:ulm_id1).name + request.headers["X-EcsAuthId"] = identities(:ulm_id1).name + request.headers["Accept"] = "application/json" get :index assert_response 200 end diff --git a/test/controllers/memberships_controller_test.rb b/test/controllers/memberships_controller_test.rb index 9612d60..ce24020 100644 --- a/test/controllers/memberships_controller_test.rb +++ b/test/controllers/memberships_controller_test.rb @@ -21,9 +21,8 @@ require 'test_helper' class MembershipsControllerTest < ActionController::TestCase test "prettyfied memberships" do - @request.env["X-EcsAuthId"] = identities(:ulm_id1).name - @request.set_REQUEST_URI("/sys/memberships") - @request.env["ACCEPT"] = "application/json" + request.headers["X-EcsAuthId"] = identities(:ulm_id1).name + request.headers["Accept"] = "application/json" get :index assert_response 200 f = StringIO.open @response.body diff --git a/test/controllers/messages_controller_test.rb b/test/controllers/messages_controller_test.rb index 7d683c3..0005352 100644 --- a/test/controllers/messages_controller_test.rb +++ b/test/controllers/messages_controller_test.rb @@ -19,18 +19,38 @@ require 'test_helper' class MessagesControllerTest < ActionController::TestCase +private + # param1: http method + # param2: controller method, e.g. :index + # param3: http headers, e.g. { "X-EcsAuthId" => "ganz geheim", ... } + # param4: URI path, e.g. "/numlab/solutions/3" + # param5: controller params, e.g. { :id => 3, ... } + def myrequest(http_method, controller_method, uri_path, http_headers=nil, controller_params={}) + request.path = uri_path + /[^\/]*$/ =~ uri_path + controller_params.merge!(:id => $~.to_s) unless $~.to_s.blank? + http_headers.each do |key,value| + request.headers[key] = value + end if http_headers + s = "#{http_method} :#{controller_method}, #{controller_params}" + eval s + end + +public test "index" do - @request.env["X-EcsAuthId"] = identities(:ulm_id1).name - @request.set_REQUEST_URI("/numlab/exercises") - get :index + myrequest("get", :index, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}", + "X-EcsAuthId" => identities(:ulm_id1).name + ) assert_response 200 assert_equal [1,2], assigns(:list).map {|e| e.id} end test "show first exercise as a receiver" do - @request.env["X-EcsAuthId"] = identities(:ulm_id1).name - @request.set_REQUEST_URI("/numlab/exercises") - get :show, { :id => messages(:numlab_ex1).id } + myrequest("get", :show, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}/#{messages(:numlab_ex1).id}", + "X-EcsAuthId" => identities(:ulm_id1).name + ) assert_response 200 assert_equal "Hallo Ihr da im Radio.", @response.body.strip assert_equal "X-EcsSender: "+memberships(:stgt_wuv).id.to_s, "X-EcsSender: "+@response.header['X-EcsSender'] @@ -38,111 +58,127 @@ class MessagesControllerTest < ActionController::TestCase end test "show solution" do - @request.env["X-EcsAuthId"] = identities(:ulm_id1).name - @request.set_REQUEST_URI("/numlab/solutions/3") - get :show, { :id => messages(:numlab_sol).id } - logger.debug "request.path = #{@request.path}" - logger.debug "app_namespace = #{assigns(:app_namespace)}" - logger.debug "ressource_name = #{assigns(:ressource_name)}" + myrequest("get", :show, + "/#{ressources(:numlab_solutions).namespace}/#{ressources(:numlab_solutions).ressource}/#{messages(:numlab_sol).id}", + "X-EcsAuthId" => identities(:ulm_id1).name + ) assert_response 200 end # not a receiver or sender of :numlab_ex1 test "show forbidden exercise" do - @request.env["X-EcsAuthId"] = identities(:numlab_comp_id1).name - @request.set_REQUEST_URI("/numlab/exercises/#{messages(:numlab_ulm_ex1).id.to_s}") - get :show, { :id => messages(:numlab_ulm_ex1).id } - logger.debug "request.path = #{@request.path}" + myrequest("get", :show, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}/#{messages(:numlab_ulm_ex1).id}", + "X-EcsAuthId" => identities(:numlab_comp_id1).name + ) assert_response 403 end test "show exercise as original sender but not as a receiver" do - @request.env["X-EcsAuthId"] = identities(:ulm_id1).name - @request.set_REQUEST_URI("/numlab/exercises") - get :show, { :id => messages(:numlab_ulm_ex1).id } - logger.debug "request.path = #{@request.path}" + myrequest("get", :show, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}/#{messages(:numlab_ulm_ex1).id}", + "X-EcsAuthId" => identities(:ulm_id1).name + ) assert_response 200 assert !@response.header.has_key?('X-EcsSender') assert !@response.header.has_key?('X-EcsReceiverCommunities') end test "create_X-EcsReceiverMemberships" do - @request.env["RAW_POST_DATA"] = "hallole" - @request.env["CONTENT_TYPE"] = "text/html" - @request.env["X-EcsAuthId"] = identities(:stgt_id1).name - @request.env["X-EcsReceiverMemberships"] = memberships(:ulm_wuv).id.to_s - @request.set_REQUEST_URI("/numlab/exercises") mm_count = MembershipMessage.all.count - post :create + myrequest("post", :create, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}", + { + "X-EcsAuthId" => identities(:stgt_id1).name, + "X-EcsReceiverMemberships" => memberships(:ulm_wuv).id.to_s, + "CONTENT_TYPE" => "text/html", + "RAW_POST_DATA" => "hallole" + } + ) assert_response 201 assert_equal assigns(:record).sender, assigns(:participant).id assert_equal mm_count+1, MembershipMessage.all.count - assert_match /^.*\/numlab\/exercises\/[0-9]+$/, @response.header['LOCATION'] + assert_match /^.*\/numlab\/exercises\/[0-9]+$/, @response.header['Location'] end test "create_X-EcsReceiverCommunities_single" do - @request.env["RAW_POST_DATA"] = "hallole" - @request.env["CONTENT_TYPE"] = "text/html" - @request.env["X-EcsAuthId"] = identities(:stgt_id1).name - @request.env["X-EcsReceiverCommunities"] = communities(:suv).name - @request.set_REQUEST_URI("/numlab/exercises") mm_count = MembershipMessage.all.count - post :create + myrequest("post", :create, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}", + { + "X-EcsAuthId" => identities(:stgt_id1).name, + "X-EcsReceiverCommunities" => communities(:suv).name, + "CONTENT_TYPE" => "text/html", + "RAW_POST_DATA" => "hallole" + } + ) assert_response 201 assert_equal assigns(:record).sender, assigns(:participant).id assert_equal mm_count+1, MembershipMessage.all.count end test "create_X-EcsReceiverCommunities_multi" do - @request.env["RAW_POST_DATA"] = "hallole" - @request.env["CONTENT_TYPE"] = "text/html" - @request.env["X-EcsAuthId"] = identities(:stgt_id1).name - @request.env["X-EcsReceiverCommunities"] = communities(:suv).name + "," + communities(:public).name - @request.set_REQUEST_URI("/numlab/exercises") mm_count = MembershipMessage.all.count - post :create + myrequest("post", :create, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}", + { + "X-EcsAuthId" => identities(:stgt_id1).name, + "X-EcsReceiverCommunities" => communities(:suv).name + "," + communities(:public).name, + "CONTENT_TYPE" => "text/html", + "RAW_POST_DATA" => "hallole" + } + ) assert_response 201 assert_equal assigns(:record).sender, assigns(:participant).id assert_equal mm_count+3, MembershipMessage.all.count end test "create_X-EcsReceiverCommunities_multi_string_and_number" do - @request.env["RAW_POST_DATA"] = "hallole" - @request.env["CONTENT_TYPE"] = "text/html" - @request.env["X-EcsAuthId"] = identities(:stgt_id1).name - @request.env["X-EcsReceiverCommunities"] = communities(:suv).name + "," + communities(:public).id.to_s - @request.set_REQUEST_URI("/numlab/exercises") mm_count = MembershipMessage.all.count - post :create + myrequest("post", :create, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}", + { + "X-EcsAuthId" => identities(:stgt_id1).name, + "X-EcsReceiverCommunities" => communities(:suv).name + "," + communities(:public).name, + "CONTENT_TYPE" => "text/html", + "RAW_POST_DATA" => "hallole" + } + ) assert_response 201 assert_equal assigns(:record).sender, assigns(:participant).id assert_equal mm_count+3, MembershipMessage.all.count end test "update" do - @request.env["RAW_POST_DATA"] = "neuer Text" - @request.env["CONTENT_TYPE"] = "text/html" - @request.env["X-EcsAuthId"] = identities(:stgt_id1).name - @request.env["X-EcsReceiverMemberships"] = memberships(:ulm_wuv).id.to_s - @request.set_REQUEST_URI("/numlab/exercises") - post :update, { :id => messages(:numlab_ex2).id } + myrequest("post", :update, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}/#{messages(:numlab_ex2).id}", + { + "X-EcsAuthId" => identities(:stgt_id1).name, + "X-EcsReceiverMemberships" => memberships(:ulm_wuv).id.to_s, + "CONTENT_TYPE" => "text/html", + "RAW_POST_DATA" => "neuer Text" + } + ) assert_response 200 end test "update with event generation" do - @request.env["RAW_POST_DATA"] = "neuer Text" - @request.env["CONTENT_TYPE"] = "text/html" - @request.env["X-EcsAuthId"] = identities(:stgt_id1).name - @request.env["X-EcsReceiverMemberships"] = memberships(:ulm_wuv).id.to_s - @request.set_REQUEST_URI("/numlab/exercises") ev_count = Event.all.count m= Message.find(messages(:numlab_ex2).id) m.ressource.events= true m.save - post :update, { :id => messages(:numlab_ex2).id } + myrequest("post", :update, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}/#{messages(:numlab_ex2).id}", + { + "X-EcsAuthId" => identities(:stgt_id1).name, + "X-EcsReceiverMemberships" => memberships(:ulm_wuv).id.to_s, + "CONTENT_TYPE" => "text/html", + "RAW_POST_DATA" => "neuer Text" + } + ) assert_response 200 assert_equal ev_count+1, Event.all.count - ev= Event.find(:last, :order => "id") + ev= Event.order(:id).last assert_equal ev.ev_type_id, 3 m= Message.find(messages(:numlab_ex2).id) m.ressource.events= false @@ -150,21 +186,24 @@ class MessagesControllerTest < ActionController::TestCase end test "update without ownership" do - @request.env["RAW_POST_DATA"] = "neuer Text" - @request.env["CONTENT_TYPE"] = "text/html" - @request.env["X-EcsAuthId"] = identities(:ulm_id1).name - @request.env["X-EcsReceiverMemberships"] = memberships(:ulm_wuv).id.to_s - @request.set_REQUEST_URI("/numlab/exercises") - post :update, { :id => messages(:numlab_ex2).id } + myrequest("post", :update, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}/#{messages(:numlab_ex2).id}", + { + "X-EcsAuthId" => identities(:ulm_id1).name, + "X-EcsReceiverMemberships" => memberships(:ulm_wuv).id.to_s, + "CONTENT_TYPE" => "text/html", + "RAW_POST_DATA" => "neuer Text" + } + ) assert_response 403 end # not a receiver or sender of :numlab_sol test "delete_forbidden_solution" do - @request.env["X-EcsAuthId"] = identities(:numlab_comp_id1).name - @request.set_REQUEST_URI("/numlab/solutions/#{messages(:numlab_sol).id.to_s}") - post :destroy, { :id => messages(:numlab_sol).id } - logger.debug "request.path = #{@request.path}" + myrequest("post", :destroy, + "/#{ressources(:numlab_solutions).namespace}/#{ressources(:numlab_solutions).ressource}/#{messages(:numlab_sol).id}", + "X-EcsAuthId" => identities(:numlab_comp_id1).name + ) assert_response 404 end @@ -173,74 +212,93 @@ class MessagesControllerTest < ActionController::TestCase # next delete operation removes the message from ECS and also destroys all other # receiver references. test "delete_postrouted_message_as_owner_and_receiver_with_references_in_place" do - @request.set_REQUEST_URI("/numlab/exercises/99999") - @request.env["X-EcsAuthId"] = identities(:stgt_id1).name - refscount= MembershipMessage.find_all_by_message_id(messages(:numlab_ex1)).count + refscount= MembershipMessage.where(:message_id => messages(:numlab_ex1)).count assert refscount > 1 - post :destroy, { :id => messages(:numlab_ex1).id } - logger.debug "@request.path = "+@request.path + myrequest("post", :destroy, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}/#{messages(:numlab_ex1).id}", + "X-EcsAuthId" => identities(:stgt_id1).name + ) assert_response 200 - get :show, { :id => messages(:numlab_ex1).id } + myrequest("get", :show, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}/#{messages(:numlab_ex1).id}", + "X-EcsAuthId" => identities(:stgt_id1).name + ) assert_response 200 - assert MembershipMessage.find_all_by_message_id(messages(:numlab_ex1)).count == refscount - 1 + assert MembershipMessage.where(:message_id => messages(:numlab_ex1)).count == refscount - 1 # message is only tagged as removed (events on). physically it's still there. assert_nothing_raised(ActiveRecord::RecordNotFound) { Message.find(messages(:numlab_ex1)) } # This destroy is processed as role "sender", because the receiver quueue of the sender # participant is now empty. Therefore all receiver references were deleted. - post :destroy, { :id => messages(:numlab_ex1).id } + myrequest("post", :destroy, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}/#{messages(:numlab_ex1).id}", + "X-EcsAuthId" => identities(:stgt_id1).name + ) assert_response 200 - get :show, { :id => messages(:numlab_ex1).id } + myrequest("get", :show, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}/#{messages(:numlab_ex1).id}", + "X-EcsAuthId" => identities(:stgt_id1).name + ) assert_response 404 - assert_equal 0, MembershipMessage.find_all_by_message_id(messages(:numlab_ex1)).count + assert_equal 0, MembershipMessage.where(:message_id => messages(:numlab_ex1)).count # message is only tagged as removed (events on). physically it's still there. assert_nothing_raised(ActiveRecord::RecordNotFound) { Message.find(messages(:numlab_ex1)) } end test "delete_postrouted_message_as_owner_with_references_in_place" do - @request.set_REQUEST_URI("/numlab/exercises/99999") - @request.env["X-EcsAuthId"] = identities(:ulm_id1).name - assert MembershipMessage.find_all_by_message_id(messages(:numlab_ulm_ex1)).count > 0 - post :destroy, { :id => messages(:numlab_ulm_ex1).id } - logger.debug "@request.path = "+@request.path + assert MembershipMessage.where(:message_id => messages(:numlab_ulm_ex1)).count > 0 + myrequest("post", :destroy, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}/#{messages(:numlab_ulm_ex1).id}", + "X-EcsAuthId" => identities(:ulm_id1).name + ) assert_response 200 - get :show, { :id => messages(:numlab_ulm_ex1).id } + myrequest("get", :show, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}/#{messages(:numlab_ulm_ex1).id}", + "X-EcsAuthId" => identities(:ulm_id1).name + ) assert_response 404 - assert_equal 0, MembershipMessage.find_all_by_message_id(messages(:numlab_ulm_ex1)).count + assert_equal 0, MembershipMessage.where(:message_id => messages(:numlab_ulm_ex1)).count # message is only tagged as removed (events on). physically it's still there. assert_nothing_raised(ActiveRecord::RecordNotFound) { Message.find(messages(:numlab_ulm_ex1)) } end test "delete_postrouted_message_as_none_owner_with_references_in_place" do - @request.set_REQUEST_URI("/numlab/exercises/99999") - @request.env["X-EcsAuthId"] = identities(:stgt_id1).name + #@request.set_REQUEST_URI("/numlab/exercises/99999") + #@request.headers["X-EcsAuthId"] = identities(:stgt_id1).name mm_count = MembershipMessage.all.count # destroy message through receiver and none owner - post :destroy, { :id => messages(:numlab_ulm_ex1).id } - logger.debug "@request.path = "+@request.path + #post :destroy, { :id => messages(:numlab_ulm_ex1).id } + myrequest("post", :destroy, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}/#{messages(:numlab_ulm_ex1).id}", + "X-EcsAuthId" => identities(:stgt_id1).name + ) assert_response 200 assert_nothing_raised(ActiveRecord::RecordNotFound) { Message.find(@request.parameters[:id]) } - assert_equal 0, MembershipMessage.find_all_by_message_id(@request.parameters[:id]).count + assert_equal 0, MembershipMessage.where(:message_id => @request.parameters[:id]).count assert_equal Membership.find_by_participant_id_and_community_id(participants(:ilias_ulm),communities(:wuv)).id.to_s, @response["X-EcsSender"] assert_equal communities(:wuv).id.to_s, @response["X-EcsReceiverCommunities"] end test "delete_none_postrouted_message_as_none_owner_with_last_reference_in_place" do - @request.env["RAW_POST_DATA"] = "Diese Nachricht ist volatil.\r\n" - @request.env["CONTENT_TYPE"] = "text/plain" - @request.env["X-EcsAuthId"] = identities(:stgt_id1).name - @request.env["X-EcsReceiverMemberships"] = memberships(:numlab_comp).id.to_s - @request.set_REQUEST_URI("/numlab/solutions") mm_count = MembershipMessage.all.count - post :create + myrequest("post", :create, + "/#{ressources(:numlab_solutions).namespace}/#{ressources(:numlab_solutions).ressource}", + { + "X-EcsAuthId" => identities(:stgt_id1).name, + "X-EcsReceiverMemberships" => memberships(:numlab_comp).id.to_s, + "CONTENT_TYPE" => "text/plain", + "RAW_POST_DATA" => "Diese Nachricht ist volatil.\r\n" + } + ) assert_response 201 assert_equal assigns(:record).sender, assigns(:participant).id assert_equal mm_count+1, MembershipMessage.all.count # destroy message through receiver - @request.set_REQUEST_URI("/numlab/solutions") - @request.env["X-EcsAuthId"] = identities(:numlab_comp_id1).name - /[0-9]+$/ =~ @response.header['LOCATION'] + /[0-9]+$/ =~ response.header['Location'] memberships = Membership.receiver(identities(:numlab_comp_id1).participant, $~.to_s.to_i) - post :destroy, { :id => $~.to_s.to_i } + myrequest("post", :destroy, + "/#{ressources(:numlab_solutions).namespace}/#{ressources(:numlab_solutions).ressource}/#{$~.to_s.to_i}", + "X-EcsAuthId" => identities(:numlab_comp_id1).name + ) assert_response 200 assert_equal $~.to_s, @request.parameters[:id] assert_nothing_raised(ActiveRecord::RecordNotFound) { Message.find(@request.parameters[:id]) } @@ -250,37 +308,54 @@ class MessagesControllerTest < ActionController::TestCase end test "delete_none_postrouted_message_as_none_owner_with_references_in_place" do - @request.env["RAW_POST_DATA"] = "Diese Nachricht ist volatil.\r\n" - @request.env["CONTENT_TYPE"] = "text/plain" - @request.env["X-EcsAuthId"] = identities(:stgt_id1).name - @request.env["X-EcsReceiverMemberships"] = memberships(:numlab_comp).id.to_s+","+memberships(:numlab_teacher).id.to_s - @request.set_REQUEST_URI("/numlab/solutions") + #@request.headers["RAW_POST_DATA"] = "Diese Nachricht ist volatil.\r\n" + #@request.headers["CONTENT_TYPE"] = "text/plain" + #@request.headers["X-EcsAuthId"] = identities(:stgt_id1).name + #@request.headers["X-EcsReceiverMemberships"] = memberships(:numlab_comp).id.to_s+","+memberships(:numlab_teacher).id.to_s + #@request.set_REQUEST_URI("/numlab/solutions") mm_count = MembershipMessage.all.count - post :create + #post :create + myrequest("post", :create, + "/#{ressources(:numlab_solutions).namespace}/#{ressources(:numlab_solutions).ressource}", + { + "X-EcsAuthId" => identities(:stgt_id1).name, + "X-EcsReceiverMemberships" => memberships(:numlab_comp).id.to_s+","+memberships(:numlab_teacher).id.to_s, + "CONTENT_TYPE" => "text/plain", + "RAW_POST_DATA" => "Diese Nachricht ist volatil.\r\n" + } + ) assert_response 201 assert_equal assigns(:record).sender, assigns(:participant).id assert_equal mm_count+2, MembershipMessage.all.count - /[0-9]+$/ =~ @response.header['LOCATION'] - assert_equal 2, MembershipMessage.find_all_by_message_id($~.to_s.to_i).count + /[0-9]+$/ =~ response.header['Location'] + assert_equal 2, MembershipMessage.where(:message_id => $~.to_s.to_i).count # destroy message through receiver - @request.set_REQUEST_URI("/numlab/solutions") - @request.env["X-EcsAuthId"] = identities(:numlab_comp_id1).name - post :destroy, { :id => $~.to_s.to_i } + #@request.set_REQUEST_URI("/numlab/solutions") + #@request.headers["X-EcsAuthId"] = identities(:numlab_comp_id1).name + #post :destroy, { :id => $~.to_s.to_i } + myrequest("post", :destroy, + "/#{ressources(:numlab_solutions).namespace}/#{ressources(:numlab_solutions).ressource}/#{$~.to_s.to_i}", + "X-EcsAuthId" => identities(:numlab_comp_id1).name + ) assert_response 200 assert_equal $~.to_s, @request.parameters[:id] assert_nothing_raised(ActiveRecord::RecordNotFound) { Message.find(@request.parameters[:id]) } - assert_equal 1, MembershipMessage.find_all_by_message_id($~.to_s.to_i).count + assert_equal 1, MembershipMessage.where(:message_id => $~.to_s.to_i).count end # Queue tests # test "fifo get idempotent" do - @request.env["X-EcsAuthId"] = identities(:ulm_id1).name - @request.set_REQUEST_URI("/numlab/exercises") - get :fifo + myrequest("get", :fifo, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}", + "X-EcsAuthId" => identities(:ulm_id1).name + ) assert_response 200 assert_equal "Hallo Ihr da im Radio.", @response.body.strip - get :fifo + myrequest("get", :fifo, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}", + "X-EcsAuthId" => identities(:ulm_id1).name + ) assert_response 200 assert_equal "Hallo Ihr da im Radio.", @response.body.strip assert_equal Membership.find_by_participant_id_and_community_id(participants(:ilias_stgt),communities(:wuv)).id.to_s, @response["X-EcsSender"] @@ -288,37 +363,49 @@ class MessagesControllerTest < ActionController::TestCase end test "fifo get not idempotent" do - @request.env["X-EcsAuthId"] = identities(:ulm_id1).name - @request.set_REQUEST_URI("/numlab/exercises") - post :fifo + myrequest("post", :fifo, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}", + "X-EcsAuthId" => identities(:ulm_id1).name + ) assert_response 200 assert_equal "Hallo Ihr da im Radio.", @response.body.strip assert_equal Membership.find_by_participant_id_and_community_id(participants(:ilias_stgt),communities(:wuv)).id.to_s, @response["X-EcsSender"] assert_equal communities(:wuv).id.to_s, @response["X-EcsReceiverCommunities"] - get :fifo + myrequest("post", :fifo, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}", + "X-EcsAuthId" => identities(:ulm_id1).name + ) assert_response 200 assert_not_equal "Hallo Ihr da im Radio.", @response.body.strip assert_equal "Achtung ein Kartoon.", @response.body.strip end test "lifo get idempotent" do - @request.env["X-EcsAuthId"] = identities(:ulm_id1).name - @request.set_REQUEST_URI("/numlab/exercises") - get :lifo + myrequest("get", :lifo, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}", + "X-EcsAuthId" => identities(:ulm_id1).name + ) assert_response 200 assert_equal "Achtung ein Kartoon.", @response.body.strip - get :lifo + myrequest("get", :lifo, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}", + "X-EcsAuthId" => identities(:ulm_id1).name + ) assert_response 200 assert_equal "Achtung ein Kartoon.", @response.body.strip end test "lifo get not idempotent" do - @request.env["X-EcsAuthId"] = identities(:ulm_id1).name - @request.set_REQUEST_URI("/numlab/exercises") - post :lifo + myrequest("post", :lifo, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}", + "X-EcsAuthId" => identities(:ulm_id1).name + ) assert_response 200 assert_equal "Achtung ein Kartoon.", @response.body.strip - get :lifo + myrequest("post", :lifo, + "/#{ressources(:numlab_ex).namespace}/#{ressources(:numlab_ex).ressource}", + "X-EcsAuthId" => identities(:ulm_id1).name + ) assert_response 200 assert_not_equal "Achtung ein Kartoon.", @response.body.strip assert_equal "Hallo Ihr da im Radio.", @response.body.strip @@ -328,127 +415,139 @@ class MessagesControllerTest < ActionController::TestCase # test "create_auths_url" do - @request.env["RAW_POST_DATA"] = <<-'HERE' - { - "url":"https://ilias.uni-stuttgart.de/goto.php?target=crs_95034&client_id=USTGT" - } - HERE - @request.env["CONTENT_TYPE"] = "application/json" - @request.env["X-EcsAuthId"] = identities(:stgt_id1).name - @request.env["X-EcsReceiverMemberships"] = memberships(:ulm_wuv).id.to_s - @request.set_REQUEST_URI("/sys/auths") mm_count = MembershipMessage.all.count - post :create + myrequest("post", :create, + "/sys/auths", + { + "X-EcsAuthId" => identities(:stgt_id1).name, + "X-EcsReceiverMemberships" => memberships(:ulm_wuv).id.to_s, + "CONTENT_TYPE" => "application/json", + "RAW_POST_DATA" => '{"url":"https://ilias.uni-stuttgart.de/goto.php?target=crs_95034&client_id=USTGT"}' + } + ) assert_response 201 end test "create_auths_realm" do - @request.env["RAW_POST_DATA"] = <<-'HERE' - { - "realm":"https://ilias.uni-stuttgart.de/goto.php?target=crs_95034&client_id=USTGT" - } - HERE - @request.env["CONTENT_TYPE"] = "application/json" - @request.env["X-EcsAuthId"] = identities(:stgt_id1).name - @request.env["X-EcsReceiverMemberships"] = memberships(:ulm_wuv).id.to_s - @request.set_REQUEST_URI("/sys/auths") mm_count = MembershipMessage.all.count - post :create + myrequest("post", :create, + "/sys/auths", + { + "X-EcsAuthId" => identities(:stgt_id1).name, + "X-EcsReceiverMemberships" => memberships(:ulm_wuv).id.to_s, + "CONTENT_TYPE" => "application/json", + "RAW_POST_DATA" => '{"realm":"https://ilias.uni-stuttgart.de/goto.php?target=crs_95034&client_id=USTGT"}' + } + ) assert_response 201 end test "create_auths_invalid_json_mimetype" do - @request.env["RAW_POST_DATA"] = <<-'HERE' - { - "realm":"https://ilias.uni-stuttgart.de/goto.php?target=crs_95034&client_id=USTGT" - } - HERE - @request.env["CONTENT_TYPE"] = "text/html" - @request.env["X-EcsAuthId"] = identities(:stgt_id1).name - @request.env["X-EcsReceiverMemberships"] = memberships(:ulm_wuv).id.to_s - @request.set_REQUEST_URI("/sys/auths") mm_count = MembershipMessage.all.count - post :create + myrequest("post", :create, + "/sys/auths", + { + "X-EcsAuthId" => identities(:stgt_id1).name, + "X-EcsReceiverMemberships" => memberships(:ulm_wuv).id.to_s, + "CONTENT_TYPE" => "text/html", + "RAW_POST_DATA" => '{"realm":"https://ilias.uni-stuttgart.de/goto.php?target=crs_95034&client_id=USTGT"}' + } + ) assert_response 415 assert_equal "Body format has to be in JSON", assigns(:http_error).to_s end test "create_auths_invalid_json_body" do - @request.env["RAW_POST_DATA"] = <<-'HERE' - { - "realm"::"https://ilias.uni-stuttgart.de/goto.php?target=crs_95034&client_id=USTGT" - } - HERE - @request.env["CONTENT_TYPE"] = "application/json" - @request.env["X-EcsAuthId"] = identities(:stgt_id1).name - @request.env["X-EcsReceiverMemberships"] = memberships(:ulm_wuv).id.to_s - @request.set_REQUEST_URI("/sys/auths") mm_count = MembershipMessage.all.count - post :create + myrequest("post", :create, + "/sys/auths", + { + "X-EcsAuthId" => identities(:stgt_id1).name, + "X-EcsReceiverMemberships" => memberships(:ulm_wuv).id.to_s, + "CONTENT_TYPE" => "application/json", + "RAW_POST_DATA" => '{"realm"::"https://ilias.uni-stuttgart.de/goto.php?target=crs_95034&client_id=USTGT"}' + } + ) assert_response 400 assert_equal "Invalid JSON body", assigns(:http_error).to_s end test "create_auths_eov_younger_than_sov" do - @request.env["RAW_POST_DATA"] = <<-'HERE' + raw_post_data = <<-'HERE' { "realm":"https://ilias.uni-stuttgart.de/goto.php?target=crs_95034&client_id=USTGT", "sov": "2011-03-08T23:25:27+01:00", "eov": "2011-03-08T23:25:17+01:00" } HERE - @request.env["CONTENT_TYPE"] = "application/json" - @request.env["X-EcsAuthId"] = identities(:stgt_id1).name - @request.env["X-EcsReceiverMemberships"] = memberships(:ulm_wuv).id.to_s - @request.set_REQUEST_URI("/sys/auths") mm_count = MembershipMessage.all.count - post :create + myrequest("post", :create, + "/sys/auths", + { + "X-EcsAuthId" => identities(:stgt_id1).name, + "X-EcsReceiverMemberships" => memberships(:ulm_wuv).id.to_s, + "CONTENT_TYPE" => "application/json", + "RAW_POST_DATA" => raw_post_data + } + ) assert_response 400 assert_equal "invalid times either in sov or eov", assigns(:http_error).to_s end test "create_auths_sov_younger_than_current_time" do - @request.env["RAW_POST_DATA"] = <<-'HERE' + raw_post_data = <<-'HERE' { "realm":"https://ilias.uni-stuttgart.de/goto.php?target=crs_95034&client_id=USTGT", "sov": "2011-03-08T23:25:27+01:00" } HERE - @request.env["CONTENT_TYPE"] = "application/json" - @request.env["X-EcsAuthId"] = identities(:stgt_id1).name - @request.env["X-EcsReceiverMemberships"] = memberships(:ulm_wuv).id.to_s - @request.set_REQUEST_URI("/sys/auths") mm_count = MembershipMessage.all.count - post :create + myrequest("post", :create, + "/sys/auths", + { + "X-EcsAuthId" => identities(:stgt_id1).name, + "X-EcsReceiverMemberships" => memberships(:ulm_wuv).id.to_s, + "CONTENT_TYPE" => "application/json", + "RAW_POST_DATA" => raw_post_data + } + ) assert_response 400 assert_equal "sov time is younger then current time", assigns(:http_error).to_s end test "create_auths_eov_too_young" do - @request.env["RAW_POST_DATA"] = <<-"HERE" + raw_post_data = <<-"HERE" { "realm":"https://ilias.uni-stuttgart.de/goto.php?target=crs_95034&client_id=USTGT", "eov": "#{(Time.now + 1.second).xmlschema}" } HERE - @request.env["CONTENT_TYPE"] = "application/json" - @request.env["X-EcsAuthId"] = identities(:stgt_id1).name - @request.env["X-EcsReceiverMemberships"] = memberships(:ulm_wuv).id.to_s - @request.set_REQUEST_URI("/sys/auths") mm_count = MembershipMessage.all.count - post :create + myrequest("post", :create, + "/sys/auths", + { + "X-EcsAuthId" => identities(:stgt_id1).name, + "X-EcsReceiverMemberships" => memberships(:ulm_wuv).id.to_s, + "CONTENT_TYPE" => "application/json", + "RAW_POST_DATA" => raw_post_data + } + ) assert_response 400 assert_equal "eov time is too young", assigns(:http_error).to_s end test "delete_auths" do - @request.env["X-EcsAuthId"] = identities(:ulm_id1).name - @request.set_REQUEST_URI("/sys/auths/#{auths(:valid).one_touch_hash}") + #@request.headers["X-EcsAuthId"] = identities(:ulm_id1).name + #@request.set_REQUEST_URI("/sys/auths/#{auths(:valid).one_touch_hash}") auths_count= Auth.all.length messages_count= Message.all.length auth_valid_id= auths(:valid).id message_auth_valid_id= messages(:auth_valid).id - post :destroy, { :id => auths(:valid).one_touch_hash } + #post :destroy, { :id => auths(:valid).one_touch_hash } + myrequest("post", :destroy, + "/sys/auths/#{auths(:valid).one_touch_hash}", + "X-EcsAuthId" => identities(:ulm_id1).name + ) assert_response 200 assert_equal messages_count-1, Message.all.length assert_equal auths_count-1, Auth.all.length @@ -460,7 +559,7 @@ class MessagesControllerTest < ActionController::TestCase # test "create anonymous client" do - @request.env["CONTENT_TYPE"] = "application/json" + @request.headers["CONTENT_TYPE"] = "application/json" @request.set_REQUEST_URI("/numlab/exercises") mm_count = MembershipMessage.all.count get :index diff --git a/test/integration/community_messages_test.rb b/test/integration/community_messages_test.rb index a40d799..ec9a502 100644 --- a/test/integration/community_messages_test.rb +++ b/test/integration/community_messages_test.rb @@ -18,7 +18,7 @@ require 'test_helper' -class CommunityMessagesTest < ActionController::IntegrationTest +class CommunityMessagesTest < ActionDispatch::IntegrationTest fixtures :all BODY_DATA = "hallole" diff --git a/test/integration/ressource_test.rb b/test/integration/ressource_test.rb index a24dae5..cd94cc4 100644 --- a/test/integration/ressource_test.rb +++ b/test/integration/ressource_test.rb @@ -18,7 +18,7 @@ require 'test_helper' -class RessourceTest < ActionController::IntegrationTest +class RessourceTest < ActionDispatch::IntegrationTest fixtures :all def setup @@ -82,8 +82,8 @@ class RessourceTest < ActionController::IntegrationTest post '/numlab/exercises', BODY_DATA, @headers assert_response 201 location = URI.split(headers["Location"])[5][1..-1].sub(/[^\/]*\/(.*)/, '\1') - logger.info('headers["Location"]: '+headers["Location"]) - logger.info('location: '+location) + Rails.logger.info('headers["Location"]: '+headers["Location"]) + Rails.logger.info('location: '+location) sender_headers get '/numlab/exercises', nil, @headers assert_response 200 @@ -97,8 +97,8 @@ class RessourceTest < ActionController::IntegrationTest post '/numlab/exercises', BODY_DATA, @headers assert_response 201 location = URI.split(headers["Location"])[5][1..-1].sub(/[^\/]*\/(.*)/, '\1') - logger.info('headers["Location"]: '+headers["Location"]) - logger.info('location: '+location) + Rails.logger.info('headers["Location"]: '+headers["Location"]) + Rails.logger.info('location: '+location) sender_headers assert !@participant.community_selfrouting get '/numlab/exercises', nil, @headers @@ -132,8 +132,8 @@ class RessourceTest < ActionController::IntegrationTest post '/numlab/exercises', BODY_DATA, @headers assert_response 201 location = URI.split(headers["Location"])[5][1..-1].sub(/[^\/]*\/(.*)/, '\1') - logger.info('headers["Location"]: '+headers["Location"]) - logger.info('location: '+location) + Rails.logger.info('headers["Location"]: '+headers["Location"]) + Rails.logger.info('location: '+location) # 1.1 sender_headers get '/numlab/exercises', nil, @headers @@ -173,7 +173,7 @@ class RessourceTest < ActionController::IntegrationTest # 1.5 sender_headers post '/events/fifo', nil, @headers - logger.info("response body:\n"+response.body) + Rails.logger.info("response body:\n"+response.body) assert_response 200 assert_nil response.body.index(location) sender_headers diff --git a/test/test_helper.rb b/test/test_helper.rb index 392100b..a1e11c6 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -1,26 +1,10 @@ -# Copyright (C) 2007, 2008, 2009, 2010 Heiko Bernloehr (FreeIT.de). -# -# This file is part of ECS. -# -# ECS is free software: you can redistribute it and/or modify it -# under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# ECS is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with ECS. If not, see <http://www.gnu.org/licenses/>. - - -ENV["RAILS_ENV"] = "test" -require File.expand_path(File.dirname(__FILE__) + "/../config/environment") -require 'test_help' +ENV['RAILS_ENV'] ||= 'test' +require File.expand_path('../../config/environment', __FILE__) +require 'rails/test_help' class ActiveSupport::TestCase + # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order. + fixtures :all # 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 @@ -34,10 +18,10 @@ class ActiveSupport::TestCase # don't care one way or the other, switching from MyISAM to InnoDB tables # is recommended. # - # The only drawback to using transactional fixtures is when you actually + # The only drawback to using transactional fixtures is when you actually # need to test transactions. Since your test is bracketed by a transaction, # any transactions started in your code will be automatically rolled back. - self.use_transactional_fixtures = true + self.use_transactional_fixtures = false # Instantiated fixtures are slow, but give you @david where otherwise you # would need people(:david). If you don't want to migrate your existing @@ -46,15 +30,5 @@ class ActiveSupport::TestCase # then set this back to true. self.use_instantiated_fixtures = false - # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order. - # - # Note: You'll currently still have to declare fixtures explicitly in integration tests - # -- they do not yet inherit this setting - fixtures :all - # Add more helper methods to be used by all tests here... - # - def logger - RAILS_DEFAULT_LOGGER - end end |