From 9ef40346bb8f37b496f548b5c03d1a19f7694db8 Mon Sep 17 00:00:00 2001 From: gebele Date: Fri, 9 May 2014 20:14:50 +0200 Subject: added test for unformated investigations --- test/toxbank-investigation-types.rb | 515 ++++++++++++++++++++++++++++++++++++ 1 file changed, 515 insertions(+) create mode 100644 test/toxbank-investigation-types.rb diff --git a/test/toxbank-investigation-types.rb b/test/toxbank-investigation-types.rb new file mode 100644 index 0000000..2a0d164 --- /dev/null +++ b/test/toxbank-investigation-types.rb @@ -0,0 +1,515 @@ +require_relative "toxbank-setup.rb" +require File.join(File.expand_path(File.dirname(__FILE__)),".." ,".." ,"toxbank-investigation", "util.rb") + +begin + puts "Service URI is: #{$investigation[:uri]}" +rescue + puts "Configuration Error: $investigation[:uri] is not defined in: " + File.join(ENV["HOME"],".opentox","config","test.rb") + exit +end + +@@uri_list_size = OpenTox::RestClientWrapper.get($investigation[:uri], {}, { :accept=>"text/uri-list", :subjectid => $pi[:subjectid] }).split("\n").size +puts "uri-list size:\t#{@@uri_list_size}" + +class TBInvestigationNoISADataInvalidPOST < MiniTest::Test + + # no file no params + # @note expect OpenTox::BadRequestError + def test_nofile_nodata + puts "\nno data no params" + response = OpenTox::RestClientWrapper.post $investigation[:uri], {}, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + #puts task_uri + assert_equal "Error", task.hasStatus, "Task should be not completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + assert_match "No file uploaded or parameters given.", task.error_report[RDF::OT.message], "wrong error: #{task.error_report[RDF::OT.message]}." + + end + + ## test types + # attached file but missing type + # @note expect OpenTox::BadRequestError + def test_attached_file_missing_type + puts "\nattached file but missing type" + file = File.join File.dirname(__FILE__), "data/toxbank-investigation/valid", "unformated.zip" + response = OpenTox::RestClientWrapper.post $investigation[:uri], {:file => File.open(file), :title => "New Title", :abstract => "This is a short description", :owningOrg => "#{$user_service[:uri]}/organisation/G16, #{$user_service[:uri]}/organisation/G32", :authors => "#{$user_service[:uri]}/user/U271, #{$user_service[:uri]}/user/U479", :keywords => "http://www.owl-ontologies.com/toxbank.owl/K124, http://www.owl-ontologies.com/toxbank.owl/K727" }, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + #puts task_uri + assert_equal "Error", task.hasStatus, "Task should be not completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + assert_match "Could not parse isatab file in 'unformated.zip'.", task.error_report[RDF::OT.message], "wrong error: #{task.error_report[RDF::OT.message]}." + end + + # type noData but ftp file in params + # @note expect OpenTox::BadRequestError + def test_noData + puts "\ntype noData but ftp file in params" + response = OpenTox::RestClientWrapper.post $investigation[:uri], {:type => "noData", :title => "New Title", :abstract => "This is a short description", :owningOrg => "#{$user_service[:uri]}/organisation/G16, #{$user_service[:uri]}/organisation/G32", :authors => "#{$user_service[:uri]}/user/U271, #{$user_service[:uri]}/user/U479", :keywords => "http://www.owl-ontologies.com/toxbank.owl/K124, http://www.owl-ontologies.com/toxbank.owl/K727", :ftpFile => "JIC37_Ethanol_0.07_Internal_1_3.txt"}, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + #puts task_uri + assert_equal "Error", task.hasStatus, "Task should be not completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + assert_equal "Parameter 'ftpData' not expected for type 'noData'.", task.error_report[RDF::OT.message], "wrong error: #{task.error_report[RDF::OT.message]}." + end + + # attached file but type is noData + # @note expect OpenTox::BadRequestError + def test_wrong_type_noData + puts "\nattached file but type is noData" + file = File.join File.dirname(__FILE__), "data/toxbank-investigation/valid", "unformated.zip" + response = OpenTox::RestClientWrapper.post $investigation[:uri], {:file => File.open(file), :type => "noData", :title => "New Title", :abstract => "This is a short description", :owningOrg => "#{$user_service[:uri]}/organisation/G16, #{$user_service[:uri]}/organisation/G32", :authors => "#{$user_service[:uri]}/user/U271, #{$user_service[:uri]}/user/U479", :keywords => "http://www.owl-ontologies.com/toxbank.owl/K124, http://www.owl-ontologies.com/toxbank.owl/K727"}, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + #puts task_uri + assert_equal "Error", task.hasStatus, "Task should be not completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + assert_equal "No file expected for type 'noData'.", task.error_report[RDF::OT.message], "wrong error: #{task.error_report[RDF::OT.message]}." + end + + # attached file but type is ftpData + # @note expect OpenTox::BadRequestError + def test_wrong_type_ftpData + puts "\nattached file but type is ftpData" + file = File.join File.dirname(__FILE__), "data/toxbank-investigation/valid", "unformated.zip" + response = OpenTox::RestClientWrapper.post $investigation[:uri], {:file => File.open(file), :type => "ftpData", :title => "New Title", :abstract => "This is a short description", :owningOrg => "#{$user_service[:uri]}/organisation/G16, #{$user_service[:uri]}/organisation/G32", :authors => "#{$user_service[:uri]}/user/U271, #{$user_service[:uri]}/user/U479", :keywords => "http://www.owl-ontologies.com/toxbank.owl/K124, http://www.owl-ontologies.com/toxbank.owl/K727"}, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + #puts task_uri + assert_equal "Error", task.hasStatus, "Task should be not completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + assert_equal "No file expected for type 'ftpData'.", task.error_report[RDF::OT.message], "wrong error: #{task.error_report[RDF::OT.message]}." + end + + # unknown inv type + # @note expect OpenTox::BadRequestError + def test_unknown_inv_type + puts "\nunknown inv type" + response = OpenTox::RestClientWrapper.post $investigation[:uri], { :type => "Data", :title => "New Title", :abstract => "This is a short description", :owningOrg => "#{$user_service[:uri]}/organisation/G16, #{$user_service[:uri]}/organisation/G32", :authors => "#{$user_service[:uri]}/user/U271, #{$user_service[:uri]}/user/U479", :keywords => "http://www.owl-ontologies.com/toxbank.owl/K124, http://www.owl-ontologies.com/toxbank.owl/K727"}, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + #puts task_uri + assert_equal "Error", task.hasStatus, "Task should be not completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + assert_equal "Investigation type 'Data' not supported.", task.error_report[RDF::OT.message], "wrong error: #{task.error_report[RDF::OT.message]}." + end + + # attached file unknown inv type + # @note expect OpenTox::BadRequestError + def test_file_unknown_inv_type + puts "\nattached file unknown inv type" + file = File.join File.dirname(__FILE__), "data/toxbank-investigation/valid", "unformated.zip" + response = OpenTox::RestClientWrapper.post $investigation[:uri], { :file => File.open(file), :type => "Data", :title => "New Title", :abstract => "This is a short description", :owningOrg => "#{$user_service[:uri]}/organisation/G16, #{$user_service[:uri]}/organisation/G32", :authors => "#{$user_service[:uri]}/user/U271, #{$user_service[:uri]}/user/U479", :keywords => "http://www.owl-ontologies.com/toxbank.owl/K124, http://www.owl-ontologies.com/toxbank.owl/K727"}, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + #puts task_uri + assert_equal "Error", task.hasStatus, "Task should be not completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + assert_equal "Investigation type 'Data' not supported.", task.error_report[RDF::OT.message], "wrong error: #{task.error_report[RDF::OT.message]}." + end + ## test parameters + # missing title + # @note expect OpenTox::BadRequestError + def test_attached_file_missing_title + puts "\nattached file missing title" + file = File.join File.dirname(__FILE__), "data/toxbank-investigation/valid", "unformated.zip" + response = OpenTox::RestClientWrapper.post $investigation[:uri], {:file => File.open(file), :type => "unFormatedData", :abstract => "This is a short description", :owningOrg => "#{$user_service[:uri]}/organisation/G16, #{$user_service[:uri]}/organisation/G32", :authors => "#{$user_service[:uri]}/user/U271, #{$user_service[:uri]}/user/U479", :keywords => "http://www.owl-ontologies.com/toxbank.owl/K124, http://www.owl-ontologies.com/toxbank.owl/K727" }, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + #puts task_uri + assert_equal "Error", task.hasStatus, "Task should be not completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + assert_match "Parameter 'title' is required.", task.error_report[RDF::OT.message], "wrong error: #{task.error_report[RDF::OT.message]}." + end + + # missing abstract + # @note expect OpenTox::BadRequestError + def test_attached_file_missing_abstract + puts "\nattached file missing abstract" + file = File.join File.dirname(__FILE__), "data/toxbank-investigation/valid", "unformated.zip" + response = OpenTox::RestClientWrapper.post $investigation[:uri], {:file => File.open(file), :type => "unFormatedData", :title => "New Title", :owningOrg => "#{$user_service[:uri]}/organisation/G16, #{$user_service[:uri]}/organisation/G32", :authors => "#{$user_service[:uri]}/user/U271, #{$user_service[:uri]}/user/U479", :keywords => "http://www.owl-ontologies.com/toxbank.owl/K124, http://www.owl-ontologies.com/toxbank.owl/K727" }, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + #puts task_uri + assert_equal "Error", task.hasStatus, "Task should be not completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + assert_match "Parameter 'abstract' is required.", task.error_report[RDF::OT.message], "wrong error: #{task.error_report[RDF::OT.message]}." + end + + # missing owningOrg + # @note expect OpenTox::BadRequestError + def test_attached_file_missing_owningOrg + puts "\nattached file missing owningOrg" + file = File.join File.dirname(__FILE__), "data/toxbank-investigation/valid", "unformated.zip" + response = OpenTox::RestClientWrapper.post $investigation[:uri], {:file => File.open(file), :type => "unFormatedData", :title => "New Title", :abstract => "This is a short description", :authors => "#{$user_service[:uri]}/user/U271, #{$user_service[:uri]}/user/U479", :keywords => "http://www.owl-ontologies.com/toxbank.owl/K124, http://www.owl-ontologies.com/toxbank.owl/K727" }, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + #puts task_uri + assert_equal "Error", task.hasStatus, "Task should be not completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + assert_equal "Parameter 'owningOrg' is required.", task.error_report[RDF::OT.message], "wrong error: #{task.error_report[RDF::OT.message]}." + end + + # missing authors + # @note expect OpenTox::BadRequestError + def test_attached_file_missing_authors + puts "\nattached file missing authors" + file = File.join File.dirname(__FILE__), "data/toxbank-investigation/valid", "unformated.zip" + response = OpenTox::RestClientWrapper.post $investigation[:uri], {:file => File.open(file), :type => "unFormatedData", :title => "New Title", :abstract => "This is a short description", :owningOrg => "#{$user_service[:uri]}/organisation/G16, #{$user_service[:uri]}/organisation/G32", :keywords => "http://www.owl-ontologies.com/toxbank.owl/K124, http://www.owl-ontologies.com/toxbank.owl/K727" }, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + #puts task_uri + assert_equal "Error", task.hasStatus, "Task should be not completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + assert_equal "Parameter 'authors' is required.", task.error_report[RDF::OT.message], "wrong error: #{task.error_report[RDF::OT.message]}." + end + + # missing keywords + # @note expect OpenTox::BadRequestError + def test_attached_file_missing_keywords + puts "\nattached file missing keywords" + file = File.join File.dirname(__FILE__), "data/toxbank-investigation/valid", "unformated.zip" + response = OpenTox::RestClientWrapper.post $investigation[:uri], {:file => File.open(file), :type => "unFormatedData", :title => "New Title", :abstract => "This is a short description", :owningOrg => "#{$user_service[:uri]}/organisation/G16, #{$user_service[:uri]}/organisation/G32", :authors => "#{$user_service[:uri]}/user/U271, #{$user_service[:uri]}/user/U479" }, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + #puts task_uri + assert_equal "Error", task.hasStatus, "Task should be not completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + assert_equal "Parameter 'keywords' is required.", task.error_report[RDF::OT.message], "wrong error: #{task.error_report[RDF::OT.message]}." + end + + + ## test mime type + # attached file wrong mime type + # @note expect OpenTox::BadRequestError + def test_wrong_mime + puts "\nattached file wrong mime" + file = File.join File.dirname(__FILE__), "data/toxbank-investigation/invalid", "empty.zup" + response = OpenTox::RestClientWrapper.post $investigation[:uri], {:file => File.open(file), :type => "noData", :title => "New Title", :abstract => "This is a short description", :owningOrg => "#{$user_service[:uri]}/organisation/G16, #{$user_service[:uri]}/organisation/G32", :authors => "#{$user_service[:uri]}/user/U271, #{$user_service[:uri]}/user/U479", :keywords => "http://www.owl-ontologies.com/toxbank.owl/K124, http://www.owl-ontologies.com/toxbank.owl/K727"}, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + #puts task_uri + assert_equal "Error", task.hasStatus, "Task should be not completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + assert_equal "Mime type text/plain not supported. Please submit data as zip archive (application/zip).", task.error_report[RDF::OT.message], "wrong error: #{task.error_report[RDF::OT.message]}." + end + + # test file size + + # unformated data larger 10MB + # @note expect OpenTox::BadRequestError + def test_file_larger_10mb + puts "\nunformated data larger 10MB" + file = File.join File.dirname(__FILE__), "data/toxbank-investigation/invalid", "unformated10mb.zip" + response = OpenTox::RestClientWrapper.post $investigation[:uri], {:file => File.open(file), :type => "unFormatedData", :title => "New Title", :abstract => "This is a short description", :owningOrg => "#{$user_service[:uri]}/organisation/G16, #{$user_service[:uri]}/organisation/G32", :authors => "#{$user_service[:uri]}/user/U271, #{$user_service[:uri]}/user/U479", :keywords => "http://www.owl-ontologies.com/toxbank.owl/K124, http://www.owl-ontologies.com/toxbank.owl/K727"}, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + #puts task_uri + assert_equal "Error", task.hasStatus, "Task should be not completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + assert_equal "File 'unformated10mb.zip' is to large. Please choose FTP investigation type and upload to your FTP directory first.", task.error_report[RDF::OT.message], "wrong error: #{task.error_report[RDF::OT.message]}." + end + + # invalid param URI + # @note expect OpenTox::BadRequestError + def test_invalid_param_uri + puts "\ninvalid param URI" + file = File.join File.dirname(__FILE__), "data/toxbank-investigation/valid", "unformated.zip" + response = OpenTox::RestClientWrapper.post $investigation[:uri], {:file => File.open(file), :type => "unFormatedData", :title => "New Title", :abstract => "This is a short description", :owningOrg => "#{$user_service[:uri]}/organisation/G16, #{$user_service[:uri]}/organisation/G32", :authors => "#{$user_service[:uri]}/user/U271, #{$user_service[:uri]}/user/U479", :keywords => "http://www.owl-ontologies.com/toxbank.owl/K124, http://www.owl-ontologies.com/oxbank.owl/K727"}, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + #puts task_uri + assert_equal "Error", task.hasStatus, "Task should be not completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + assert_equal "'http://www.owl-ontologies.com/oxbank.owl/K727' is not a valid URI.", task.error_report[RDF::OT.message], "wrong error: #{task.error_report[RDF::OT.message]}." + end + + def test_uri_list_size + puts "\ntest uri-list size is equal" + response = OpenTox::RestClientWrapper.get($investigation[:uri], {}, { :accept=>"text/uri-list", :subjectid => $pi[:subjectid] }).split("\n").size + assert_equal @@uri_list_size, response + end + +end + +class TBInvestigationNoISADataValidPOST < MiniTest::Test + + def test_01_post_type_nodata + puts "\nvalid noData" + response = OpenTox::RestClientWrapper.post $investigation[:uri], {:type => "noData", :title => "New Title", :abstract => "This is a short description", :owningOrg => "#{$user_service[:uri]}/organisation/G16, #{$user_service[:uri]}/organisation/G32", :authors => "#{$user_service[:uri]}/user/U271, #{$user_service[:uri]}/user/U479", :keywords => "http://www.owl-ontologies.com/toxbank.owl/K124, http://www.owl-ontologies.com/toxbank.owl/K727"}, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + #puts task.uri + uri = task.resultURI + assert_equal "Completed", task.hasStatus, "Task should be completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + + # GET metadata + response = OpenTox::RestClientWrapper.get uri.to_s+"/metadata", {}, {:accept => "application/rdf+xml", :subjectid => $pi[:subjectid] } + @g = RDF::Graph.new + RDF::Reader.for(:rdfxml).new(response.to_s){|r| r.each{|s| @g << s}} + #@g.each{|g| puts g.object} + @g.query(:predicate => RDF::TB.hasInvType){|r| assert_match /noData/, r[2].to_s} + @g.query(:predicate => RDF::DC.modified){|r| assert_equal uri.to_s, r[0].to_s} + expected_owner = ["#{$user_service[:uri]}/user/U271"] + owner = @g.query(:predicate => RDF::TB.hasOwner).collect{|r| r[2].to_s} + assert_equal owner, expected_owner + expected_authors = ["#{$user_service[:uri]}/user/U271", "#{$user_service[:uri]}/user/U479"] + authors = @g.query(:predicate => RDF::TB.hasAuthor).collect{|r| r[2].to_s} + assert_equal authors, expected_authors + expected_keywords = ["http://www.owl-ontologies.com/toxbank.owl/K124", "http://www.owl-ontologies.com/toxbank.owl/K727"] + keywords = @g.query(:predicate => RDF::TB.hasKeyword).collect{|r| r[2].to_s} + assert_equal keywords, expected_keywords + orgs = ["#{$user_service[:uri]}/organisation/G32", "#{$user_service[:uri]}/organisation/G16"] + expected_orgs = @g.query(:predicate => RDF::TB.hasOrganisation).collect{|r| r[2].to_s} + assert_equal orgs, expected_orgs + @g.query(:predicate => RDF::DC.title){|r| assert_match /New Title/, r[2].to_s} + @g.query(:predicate => RDF::DC.abstract){|r| assert_match /This is a short description/, r[2].to_s} + @g.query(:predicate => RDF::TB.isSummarySearchable){|r| assert_match /false/, r[2].to_s} + @g.query(:predicate => RDF::TB.isPublished){|r| assert_match /false/, r[2].to_s} + + # PUT + response = OpenTox::RestClientWrapper.put uri, {:type => "noData", :title => "Second Title", :abstract => "This is a short description", :owningOrg => "#{$user_service[:uri]}/organisation/G16, #{$user_service[:uri]}/organisation/G32", :authors => "#{$user_service[:uri]}/user/U271, #{$user_service[:uri]}/user/U479", :keywords => "http://www.owl-ontologies.com/toxbank.owl/K124, http://www.owl-ontologies.com/toxbank.owl/K727"}, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + #puts task.uri + uri = task.resultURI + assert_equal "Completed", task.hasStatus, "Task should be completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + + # GET metadata + response = OpenTox::RestClientWrapper.get uri.to_s+"/metadata", {}, {:accept => "application/rdf+xml", :subjectid => $pi[:subjectid] } + assert_equal "200", response.code.to_s + @g = RDF::Graph.new + RDF::Reader.for(:rdfxml).new(response.to_s){|r| r.each{|s| @g << s}} + #@g.each{|g| puts g.object} + @g.query(:predicate => RDF::TB.hasInvType){|r| assert_match /noData/, r[2].to_s} + @g.query(:predicate => RDF::DC.modified){|r| assert_equal uri.to_s, r[0].to_s} + expected_owner = ["#{$user_service[:uri]}/user/U271"] + owner = @g.query(:predicate => RDF::TB.hasOwner).collect{|r| r[2].to_s} + assert_equal owner, expected_owner + expected_authors = ["#{$user_service[:uri]}/user/U271", "#{$user_service[:uri]}/user/U479"] + authors = @g.query(:predicate => RDF::TB.hasAuthor).collect{|r| r[2].to_s} + assert_equal authors, expected_authors + expected_keywords = ["http://www.owl-ontologies.com/toxbank.owl/K124", "http://www.owl-ontologies.com/toxbank.owl/K727"] + keywords = @g.query(:predicate => RDF::TB.hasKeyword).collect{|r| r[2].to_s} + assert_equal keywords, expected_keywords + orgs = ["#{$user_service[:uri]}/organisation/G32", "#{$user_service[:uri]}/organisation/G16"] + expected_orgs = @g.query(:predicate => RDF::TB.hasOrganisation).collect{|r| r[2].to_s} + assert_equal orgs, expected_orgs + @g.query(:predicate => RDF::DC.title){|r| assert_match /Second Title/, r[2].to_s} + @g.query(:predicate => RDF::DC.abstract){|r| assert_match /This is a short description/, r[2].to_s} + @g.query(:predicate => RDF::TB.isSummarySearchable){|r| assert_match /false/, r[2].to_s} + @g.query(:predicate => RDF::TB.isPublished){|r| assert_match /false/, r[2].to_s} + + # DELETE + response = OpenTox::RestClientWrapper.delete uri.to_s, {}, { :subjectid => $pi[:subjectid] } + assert_equal "200", response.code.to_s + end + + def test_02_post_type_ftpdata + puts "\nvalid ftpData" + response = OpenTox::RestClientWrapper.post $investigation[:uri], {:type => "ftpData", :title => "New Title", :abstract => "This is a short description", :owningOrg => "#{$user_service[:uri]}/organisation/G16, #{$user_service[:uri]}/organisation/G32", :authors => "#{$user_service[:uri]}/user/U271, #{$user_service[:uri]}/user/U479", :keywords => "http://www.owl-ontologies.com/toxbank.owl/K124, http://www.owl-ontologies.com/toxbank.owl/K727", :ftpFile => "JIC37_Ethanol_0.07_Internal_1_3.txt"}, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + #puts task.uri + uri = task.resultURI + assert_equal "Completed", task.hasStatus, "Task should be completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + + # GET metadata + response = OpenTox::RestClientWrapper.get uri.to_s+"/metadata", {}, {:accept => "application/rdf+xml", :subjectid => $pi[:subjectid] } + assert_equal "200", response.code.to_s + @g = RDF::Graph.new + RDF::Reader.for(:rdfxml).new(response.to_s){|r| r.each{|s| @g << s}} + #@g.each{|g| puts g.object} + @g.query(:predicate => RDF::TB.hasInvType){|r| assert_match /ftpData/, r[2].to_s} + @g.query(:predicate => RDF::DC.modified){|r| assert_equal uri.to_s, r[0].to_s} + expected_owner = ["#{$user_service[:uri]}/user/U271"] + owner = @g.query(:predicate => RDF::TB.hasOwner).collect{|r| r[2].to_s} + assert_equal owner, expected_owner + expected_authors = ["#{$user_service[:uri]}/user/U271", "#{$user_service[:uri]}/user/U479"] + authors = @g.query(:predicate => RDF::TB.hasAuthor).collect{|r| r[2].to_s} + assert_equal authors, expected_authors + expected_keywords = ["http://www.owl-ontologies.com/toxbank.owl/K124", "http://www.owl-ontologies.com/toxbank.owl/K727"] + keywords = @g.query(:predicate => RDF::TB.hasKeyword).collect{|r| r[2].to_s} + assert_equal keywords, expected_keywords + orgs = ["#{$user_service[:uri]}/organisation/G32", "#{$user_service[:uri]}/organisation/G16"] + expected_orgs = @g.query(:predicate => RDF::TB.hasOrganisation).collect{|r| r[2].to_s} + assert_equal orgs, expected_orgs + @g.query(:predicate => RDF::DC.title){|r| assert_match /New Title/, r[2].to_s} + @g.query(:predicate => RDF::DC.abstract){|r| assert_match /This is a short description/, r[2].to_s} + @g.query(:predicate => RDF::TB.isSummarySearchable){|r| assert_match /false/, r[2].to_s} + @g.query(:predicate => RDF::TB.isPublished){|r| assert_match /false/, r[2].to_s} + + # GET file in uri-list + response = OpenTox::RestClientWrapper.get uri.to_s, {}, {:accept => "text/uri-list", :subjectid => $pi[:subjectid] } + assert_match /JIC37_Ethanol_0.07_Internal_1_3.txt/, response.to_s + + # GET file + response = OpenTox::RestClientWrapper.get uri.to_s+"/files/JIC37_Ethanol_0.07_Internal_1_3.txt", {}, { :subjectid => $pi[:subjectid] } + assert_equal "200", response.code.to_s + assert_match /isttest/, response.to_s + + # PUT + response = OpenTox::RestClientWrapper.put uri, {:type => "ftpData", :title => "Second Title", :abstract => "This is a short description", :owningOrg => "#{$user_service[:uri]}/organisation/G16, #{$user_service[:uri]}/organisation/G32", :authors => "#{$user_service[:uri]}/user/U271, #{$user_service[:uri]}/user/U479", :keywords => "http://www.owl-ontologies.com/toxbank.owl/K124, http://www.owl-ontologies.com/toxbank.owl/K727", :ftpFile => "JIC37_Ethanol_0.07_Internal_1_3.txt"}, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + #puts task.uri + uri = task.resultURI + assert_equal "Completed", task.hasStatus, "Task should be completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + + # GET metadata + response = OpenTox::RestClientWrapper.get uri.to_s+"/metadata", {}, {:accept => "application/rdf+xml", :subjectid => $pi[:subjectid] } + assert_equal "200", response.code.to_s + @g = RDF::Graph.new + RDF::Reader.for(:rdfxml).new(response.to_s){|r| r.each{|s| @g << s}} + #@g.each{|g| puts g.object} + @g.query(:predicate => RDF::TB.hasInvType){|r| assert_match /ftpData/, r[2].to_s} + @g.query(:predicate => RDF::DC.modified){|r| assert_equal uri.to_s, r[0].to_s} + expected_owner = ["#{$user_service[:uri]}/user/U271"] + owner = @g.query(:predicate => RDF::TB.hasOwner).collect{|r| r[2].to_s} + assert_equal owner, expected_owner + expected_authors = ["#{$user_service[:uri]}/user/U271", "#{$user_service[:uri]}/user/U479"] + authors = @g.query(:predicate => RDF::TB.hasAuthor).collect{|r| r[2].to_s} + assert_equal authors, expected_authors + expected_keywords = ["http://www.owl-ontologies.com/toxbank.owl/K124", "http://www.owl-ontologies.com/toxbank.owl/K727"] + keywords = @g.query(:predicate => RDF::TB.hasKeyword).collect{|r| r[2].to_s} + assert_equal keywords, expected_keywords + orgs = ["#{$user_service[:uri]}/organisation/G32", "#{$user_service[:uri]}/organisation/G16"] + expected_orgs = @g.query(:predicate => RDF::TB.hasOrganisation).collect{|r| r[2].to_s} + assert_equal orgs, expected_orgs + @g.query(:predicate => RDF::DC.title){|r| assert_match /Second Title/, r[2].to_s} + @g.query(:predicate => RDF::DC.abstract){|r| assert_match /This is a short description/, r[2].to_s} + @g.query(:predicate => RDF::TB.isSummarySearchable){|r| assert_match /false/, r[2].to_s} + @g.query(:predicate => RDF::TB.isPublished){|r| assert_match /false/, r[2].to_s} + + # DELETE + #response = OpenTox::RestClientWrapper.delete uri.to_s, {}, { :subjectid => $pi[:subjectid] } + #assert_equal "200", response.code.to_s + end + + def test_03_post_type_unformateddata + puts "\nvalid unFormatedData" + file = File.join File.dirname(__FILE__), "data/toxbank-investigation/valid", "unformated.zip" + response = OpenTox::RestClientWrapper.post $investigation[:uri], {:file => File.open(file), :type => "unFormatedData", :title => "New Title", :abstract => "This is a short description", :owningOrg => "#{$user_service[:uri]}/organisation/G16, #{$user_service[:uri]}/organisation/G32", :authors => "#{$user_service[:uri]}/user/U271, #{$user_service[:uri]}/user/U479", :keywords => "http://www.owl-ontologies.com/toxbank.owl/K124, http://www.owl-ontologies.com/toxbank.owl/K727"}, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + #puts task.uri + uri = task.resultURI + assert_equal "Completed", task.hasStatus, "Task should be completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + + # GET metadata + response = OpenTox::RestClientWrapper.get uri.to_s+"/metadata", {}, {:accept => "application/rdf+xml", :subjectid => $pi[:subjectid] } + assert_equal "200", response.code.to_s + @g = RDF::Graph.new + RDF::Reader.for(:rdfxml).new(response.to_s){|r| r.each{|s| @g << s}} + #@g.each{|g| puts g.object} + @g.query(:predicate => RDF::TB.hasInvType){|r| assert_match /unFormatedData/, r[2].to_s} + @g.query(:predicate => RDF::DC.modified){|r| assert_equal uri.to_s, r[0].to_s} + expected_owner = ["#{$user_service[:uri]}/user/U271"] + owner = @g.query(:predicate => RDF::TB.hasOwner).collect{|r| r[2].to_s} + assert_equal owner, expected_owner + expected_authors = ["#{$user_service[:uri]}/user/U271", "#{$user_service[:uri]}/user/U479"] + authors = @g.query(:predicate => RDF::TB.hasAuthor).collect{|r| r[2].to_s} + assert_equal authors, expected_authors + expected_keywords = ["http://www.owl-ontologies.com/toxbank.owl/K124", "http://www.owl-ontologies.com/toxbank.owl/K727"] + keywords = @g.query(:predicate => RDF::TB.hasKeyword).collect{|r| r[2].to_s} + assert_equal keywords, expected_keywords + orgs = ["#{$user_service[:uri]}/organisation/G32", "#{$user_service[:uri]}/organisation/G16"] + expected_orgs = @g.query(:predicate => RDF::TB.hasOrganisation).collect{|r| r[2].to_s} + assert_equal orgs, expected_orgs + @g.query(:predicate => RDF::DC.title){|r| assert_match /New Title/, r[2].to_s} + @g.query(:predicate => RDF::DC.abstract){|r| assert_match /This is a short description/, r[2].to_s} + @g.query(:predicate => RDF::TB.isSummarySearchable){|r| assert_match /false/, r[2].to_s} + @g.query(:predicate => RDF::TB.isPublished){|r| assert_match /false/, r[2].to_s} + + # GET file by uri-list + response = OpenTox::RestClientWrapper.get uri.to_s, {}, {:accept => "text/uri-list", :subjectid => $pi[:subjectid] } + assert_match /files\/unformated\.zip/, response.to_s + + # PUT + response = OpenTox::RestClientWrapper.put uri, {:file => File.open(file), :type => "unFormatedData", :title => "Second Title", :abstract => "This is a short description", :owningOrg => "#{$user_service[:uri]}/organisation/G16, #{$user_service[:uri]}/organisation/G32", :authors => "#{$user_service[:uri]}/user/U271, #{$user_service[:uri]}/user/U479", :keywords => "http://www.owl-ontologies.com/toxbank.owl/K124, http://www.owl-ontologies.com/toxbank.owl/K727"}, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + #puts task.uri + uri = task.resultURI + assert_equal "Completed", task.hasStatus, "Task should be completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + + # GET metadata + response = OpenTox::RestClientWrapper.get uri.to_s+"/metadata", {}, {:accept => "application/rdf+xml", :subjectid => $pi[:subjectid] } + assert_equal "200", response.code.to_s + @g = RDF::Graph.new + RDF::Reader.for(:rdfxml).new(response.to_s){|r| r.each{|s| @g << s}} + #@g.each{|g| puts g.object} + @g.query(:predicate => RDF::TB.hasInvType){|r| assert_match /unFormatedData/, r[2].to_s} + @g.query(:predicate => RDF::DC.modified){|r| assert_equal uri.to_s, r[0].to_s} + expected_owner = ["#{$user_service[:uri]}/user/U271"] + owner = @g.query(:predicate => RDF::TB.hasOwner).collect{|r| r[2].to_s} + assert_equal owner, expected_owner + expected_authors = ["#{$user_service[:uri]}/user/U271", "#{$user_service[:uri]}/user/U479"] + authors = @g.query(:predicate => RDF::TB.hasAuthor).collect{|r| r[2].to_s} + assert_equal authors, expected_authors + expected_keywords = ["http://www.owl-ontologies.com/toxbank.owl/K124", "http://www.owl-ontologies.com/toxbank.owl/K727"] + keywords = @g.query(:predicate => RDF::TB.hasKeyword).collect{|r| r[2].to_s} + assert_equal keywords, expected_keywords + orgs = ["#{$user_service[:uri]}/organisation/G32", "#{$user_service[:uri]}/organisation/G16"] + expected_orgs = @g.query(:predicate => RDF::TB.hasOrganisation).collect{|r| r[2].to_s} + assert_equal orgs, expected_orgs + @g.query(:predicate => RDF::DC.title){|r| assert_match /Second Title/, r[2].to_s} + @g.query(:predicate => RDF::DC.abstract){|r| assert_match /This is a short description/, r[2].to_s} + @g.query(:predicate => RDF::TB.isSummarySearchable){|r| assert_match /false/, r[2].to_s} + @g.query(:predicate => RDF::TB.isPublished){|r| assert_match /false/, r[2].to_s} + + # DELETE + response = OpenTox::RestClientWrapper.delete uri.to_s, {}, { :subjectid => $pi[:subjectid] } + assert_equal "200", response.code.to_s + end + + def test_uri_list_size + puts "\ntest uri-list size is equal" + response = OpenTox::RestClientWrapper.get($investigation[:uri], {}, { :accept=>"text/uri-list", :subjectid => $pi[:subjectid] }).split("\n").size + assert_equal @@uri_list_size, response + end + + def test_post_type_nodata_put_error + puts "\nvalid noData" + response = OpenTox::RestClientWrapper.post $investigation[:uri], {:type => "noData", :title => "New Title", :abstract => "This is a short description", :owningOrg => "#{$user_service[:uri]}/organisation/G16, #{$user_service[:uri]}/organisation/G32", :authors => "#{$user_service[:uri]}/user/U271, #{$user_service[:uri]}/user/U479", :keywords => "http://www.owl-ontologies.com/toxbank.owl/K124, http://www.owl-ontologies.com/toxbank.owl/K727"}, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + #puts task.uri + uri = task.resultURI + @uri = uri + assert_equal "Completed", task.hasStatus, "Task should be completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + + # PUT missing type + puts "\nPUT missing type expect error" + response = OpenTox::RestClientWrapper.put @uri.to_s, { :title => "Second Title", :abstract => "This is a short description", :owningOrg => "#{$user_service[:uri]}/organisation/G16, #{$user_service[:uri]}/organisation/G32", :authors => "#{$user_service[:uri]}/user/U271, #{$user_service[:uri]}/user/U479", :keywords => "http://www.owl-ontologies.com/toxbank.owl/K124, http://www.owl-ontologies.com/toxbank.owl/K727"}, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + #puts task.uri + assert_equal "Error", task.hasStatus, "Task should be not completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + assert_match "No file uploaded or parameters given.", task.error_report[RDF::OT.message], "wrong error: #{task.error_report[RDF::OT.message]}." + # PUT missing title + response = OpenTox::RestClientWrapper.put @uri.to_s, { :type => "noData", :abstract => "This is a short description", :owningOrg => "#{$user_service[:uri]}/organisation/G16, #{$user_service[:uri]}/organisation/G32", :authors => "#{$user_service[:uri]}/user/U271, #{$user_service[:uri]}/user/U479", :keywords => "http://www.owl-ontologies.com/toxbank.owl/K124, http://www.owl-ontologies.com/toxbank.owl/K727"}, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + #puts task.uri + assert_equal "Error", task.hasStatus, "Task should be not completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + assert_match "Parameter 'title' is required.", task.error_report[RDF::OT.message], "wrong error: #{task.error_report[RDF::OT.message]}." + + + # DELETE + response = OpenTox::RestClientWrapper.delete uri.to_s, {}, { :subjectid => $pi[:subjectid] } + assert_equal "200", response.code.to_s + end + +end -- cgit v1.2.3