test/node/test_front.rb in zold-0.0.8 vs test/node/test_front.rb in zold-0.1

- old
+ new

@@ -1,6 +1,6 @@ -# Copyright (c) 2018 Zerocracy, Inc. +# Copyright (c) 2018 Yegor Bugayenko # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the 'Software'), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell @@ -17,70 +17,39 @@ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. require 'minitest/autorun' -require 'rack/test' +require 'tmpdir' require_relative '../../lib/zold/key.rb' require_relative '../../lib/zold/id.rb' require_relative '../../lib/zold/amount.rb' require_relative '../../lib/zold/wallet.rb' -require_relative '../../lib/zold/node/front.rb' +require_relative '../../lib/zold/http.rb' +require_relative 'fake_node.rb' class FrontTest < Minitest::Test - include Rack::Test::Methods - - def app - Zold::Front.new - end - - def test_renders_version - get('/version') - assert(last_response.ok?) - end - - def test_robots_txt - get('/robots.txt') - assert(last_response.ok?) - end - - def test_it_renders_home_page - get('/') - assert(last_response.ok?) - assert(last_response.body.include?('zold')) - end - - def test_pushes_a_wallet - Dir.mktmpdir 'test' do |dir| - id = Zold::Id::ROOT - file = File.join(dir, "#{id}.xml") - wallet = Zold::Wallet.new(file) - wallet.init(id, Zold::Key.new(file: 'fixtures/id_rsa.pub')) - put("/wallets/#{id}", File.read(file)) - assert(last_response.ok?, last_response.body) - key = Zold::Key.new(file: 'fixtures/id_rsa') - wallet.sub(Zold::Amount.new(zld: 39.99), Zold::Id.new, key) - put("/wallets/#{id}", File.read(file)) - assert(last_response.ok?, last_response.body) + def test_renders_public_pages + FakeNode.new.run do |port| + { + '200' => [ + '/robots.txt', + '/', + '/remotes' + ], + '404' => [ + '/this-is-absent', + '/wallet/ffffeeeeddddcccc' + ] + }.each do |code, paths| + paths.each do |p| + uri = URI("http://localhost:#{port}#{p}") + response = Zold::Http.new(uri).get + assert_equal( + code, response.code, + "Invalid response code for #{uri}: #{response.message}" + ) + end + end end - end - - def test_pulls_a_wallet - Dir.mktmpdir 'test' do |dir| - id = Zold::Id.new - file = File.join(dir, "#{id}.xml") - wallet = Zold::Wallet.new(file) - wallet.init(id, Zold::Key.new(file: 'fixtures/id_rsa.pub')) - put("/wallets/#{id}", File.read(file)) - assert(last_response.ok?, last_response.body) - get("/wallets/#{id}") - assert(last_response.ok?, last_response.body) - File.write(file, last_response.body) - assert wallet.balance.zero? - end - end - - def test_pulls_an_absent_wallet - get('/wallets/ffffeeeeddddcccc') - assert(last_response.status == 404) end end