summaryrefslogtreecommitdiff
path: root/test/task.rb
blob: 6d3f04ebc5cc3d3828d3e18de1d3a68fe5d4ce95 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
require_relative "setup.rb"
# TODO: fix error reports

class TaskTest < MiniTest::Test

  def assert_task_completed task
    assert_equal 200, task.code
    assert_equal true,  task.completed?
    assert_equal "Completed", task.status
    assert_equal "TEST", task.result
    assert_kind_of Time, task.created_at
    assert_kind_of Time, task.finished_at
    assert true, task.finished_at > task.created_at
  end

  def test_basic
    task = OpenTox::Task.new
    task.completed("TEST")
    assert_task_completed task
  end

  def test_01_create_and_complete
    task = OpenTox::Task.run __method__ do
      sleep 2
      "TEST"
    end
    assert_equal true,  task.running?
    assert_equal "Running", task.status
    assert_equal 202, task.code
    p "running"
    task.wait
    p "completed"
    assert_task_completed task
  end

  def test_02_all
    all = OpenTox::Task.all
    t = all.last
    assert_equal OpenTox::Task, t.class
    assert_equal "Task", t.type
  end

  def test_03_create_and_cancel
    task = OpenTox::Task.run __method__ do
      sleep 2
      $task[:uri]
    end
    assert_equal true, task.running?
    assert_equal 202, task.code
    task.cancel
    assert_equal 503, task.code
    assert_equal true, task.cancelled?
    refute_empty task.created_at.to_s
    refute_empty task.finished_at.to_s
  end

  def test_04_create_and_fail
    task = OpenTox::Task.run __method__,"http://test.org/fake_creator" do
      sleep 2
      raise "A runtime error occured"
    end
    assert_equal true, task.running?
    assert_equal "Running", task.status
    assert_equal 202, task.code
    task.wait
    assert task.error?
    assert_equal 500, task.code
    assert_equal "Error", task.status
    # assert_equal "A runtime error occured", task.error_report["message"]
    # assert_equal 500, task.error_report["statusCode"]
    # refute_empty task.error_report["errorCause"]
    assert true, task.created_at < task.finished_at
    refute_empty task.created_at.to_s
    refute_empty task.finished_at.to_s
  end

  def test_05_create_and_fail_with_opentox_error
    task = OpenTox::Task.run __method__,"http://test.org/fake_creator" do
      sleep 2
      raise OpenTox::Error.new 500, "An OpenTox::Error occured"
    end
    assert task.running?
    assert_equal "Running", task.status
    assert_equal 202, task.code
    task.wait
    assert task.error?
    assert_equal 500, task.code
    assert_equal "Error", task.status
    #assert_equal "An OpenTox::Error occured", task.error_report["message"]
    #assert_equal 500, task.error_report["statusCode"]
    #refute_empty task.error_report["errorCause"]
  end

  def test_06_create_and_fail_with_not_found_error
    task = OpenTox::Task.run __method__,"http://test.org/fake_creator" do
      sleep 2
      resource_not_found_error "An OpenTox::ResourceNotFoundError occured",  "http://test.org/fake_creator"
    end
    assert task.running?
    assert_equal "Running", task.status
    assert_equal 202, task.code
    task.wait
    assert task.error?
    assert_equal 404, task.code
    assert_equal "Error", task.status
    #assert_equal "An OpenTox::ResourceNotFoundError occured", task.error_report["message"]
    #assert_equal "OpenTox::ResourceNotFoundError", task.error_report["errorCode"]
    #refute_empty task.error_report["errorCause"]
    #assert_equal 404, task.error_report["statusCode"]
  end

  def test_08_create_and_fail_with_restclientwrapper_error
    task = OpenTox::Task.run __method__,"http://test.org/fake_creator" do
      sleep 2
      OpenTox::RestClientWrapper.get "invalid uri"
    end
    assert task.running?
    assert_equal "Running", task.status, "Expected Task Running has status: #{task.status} - #{task.id}"
    assert_equal 202, task.code
    task.wait
    assert task.error?
    assert_equal 400, task.code
    assert_equal "Error", task.status
    #refute_empty task.error_report["errorCause"]
    #assert_equal 400, task.error_report["statusCode"]
  end

  def test_09_check_results
    resulturi = "http://resulturi/test/1"
    task = OpenTox::Task.run __method__ do
      sleep 2
      resulturi
    end
    assert_equal "Running", task.status
    assert_equal 202, task.code
    assert_equal nil, task.result
    task.wait
    assert_equal 200, task.code
    assert_equal resulturi, task.result
  end

  def test_10_uri_with_credentials
    task = OpenTox::Task.run __method__,nil do
      sleep 1
      resource_not_found_error "test", "http://username:password@test.org/fake_uri"
    end
    task.wait
    #refute_match %r{username|password},  task.error_report["actor"]
  end


  def test_12_non_runtime_errors

    [RuntimeError, ThreadError, StopIteration, LocalJumpError, EOFError, IOError, RegexpError, 
     FloatDomainError, ZeroDivisionError, SystemCallError, EncodingError, NoMethodError, NameError, 
     RangeError, KeyError, IndexError, ArgumentError, TypeError].each do |ex|
      
      error_msg = "raising a #{ex}"
      
      task = OpenTox::Task.run __method__,"http://test.org/fake_creator" do
        sleep 2
        raise ex,error_msg
      end
      assert task.running?
      assert_equal "Running", task.status
      assert_equal 202, task.code
      task.wait
      assert task.error?
      assert_equal 500, task.code
      assert_equal "Error", task.status
      #refute_empty task.error_report["errorCause"]
      #assert_match error_msg,task.error_report["message"]
    end
    
  end

end