summaryrefslogtreecommitdiff
path: root/test.rb
diff options
context:
space:
mode:
authorinterview-bot-ng[bot] <46227427+interview-bot-ng[bot]@users.noreply.github.com>2020-11-21 21:40:35 +0000
committerGitHub <noreply@github.com>2020-11-21 21:40:35 +0000
commit8f679cee1192d216065ed82393f4625c9e4dfb70 (patch)
tree6bcd5fe6bfedaaa027c098a2de20181619c3fa09 /test.rb
parent698008851b98800a942dfd2417ef946465889d6b (diff)
Import of the exercise.HEADmain
Diffstat (limited to 'test.rb')
-rw-r--r--test.rb58
1 files changed, 58 insertions, 0 deletions
diff --git a/test.rb b/test.rb
new file mode 100644
index 0000000..1ddbd84
--- /dev/null
+++ b/test.rb
@@ -0,0 +1,58 @@
+require 'minitest/autorun'
+require 'rack/test'
+require_relative './server-rack'
+
+class DataStorageServerTest < Minitest::Test
+ include Rack::Test::Methods
+
+ def app
+ DataStorageServer.new
+ end
+
+ def test_put
+ put '/data/foo', 'some object'
+ res = JSON.parse(last_response.body)
+
+ assert_equal 201, last_response.status
+ assert_equal 11, res["size"]
+ assert res["oid"].is_a?(String)
+ assert res["oid"].length > 0
+ end
+
+ def test_get
+ put '/data/foo', 'some object'
+ res1 = JSON.parse(last_response.body)
+
+ put '/data/foo', 'other object'
+ res2 = JSON.parse(last_response.body)
+
+ refute_equal res1["oid"], res2["oid"]
+
+ get "/data/foo/#{res1["oid"]}"
+ assert_equal 'some object', last_response.body
+
+ get "/data/foo/#{res2["oid"]}"
+ assert_equal 'other object', last_response.body
+ end
+
+ def test_get_not_found
+ get '/data/foo/noooope'
+ assert_equal 404, last_response.status
+ end
+
+ def test_delete
+ put '/data/foo', 'some object'
+ res = JSON.parse(last_response.body)
+
+ delete "/data/foo/#{res["oid"]}"
+ assert_equal 200, last_response.status
+
+ get "/data/foo/#{res["oid"]}"
+ assert_equal 404, last_response.status
+ end
+
+ def test_delete_nonexistant_object
+ delete "/data/foo/nooope"
+ assert_equal 404, last_response.status
+ end
+end \ No newline at end of file