test/test_integration.rb in lanyon-0.4.1 vs test/test_integration.rb in lanyon-0.4.2

- old
+ new

@@ -1,7 +1,6 @@ # frozen_string_literal: true -# encoding: UTF-8 require_relative "helper" def get_app(overrides = {}) @@ -17,11 +16,11 @@ tempdir = setup_tempdir chdir_tempdir @destdir = File.join(tempdir, "_site") - app = get_app(:source => sourcedir, :destination => @destdir) + app = get_app(source: sourcedir, destination: @destdir) @request = Rack::MockRequest.new(app) end after do teardown_tempdir @@ -34,27 +33,27 @@ before do @response = @request.get("/") end it "returns status 200" do - @response.status.must_equal 200 + _(@response.status).must_equal 200 end it "returns correct Content-Length header" do - @response.original_headers["Content-Length"].must_equal "17" + _(@response.original_headers["Content-Length"]).must_equal "17" end it "returns correct Content-Type header" do - @response.headers["Content-Type"].must_equal "text/html" + _(@response.headers["Content-Type"]).must_equal "text/html" end it "returns an ETag header" do - @response.headers["ETag"].wont_be_nil + _(@response.headers["ETag"]).wont_be_nil end it "returns correct body" do - @response.body.must_match %r{<p>Home Page</p>} + _(@response.body).must_match %r{<p>Home Page</p>} end end describe "when asked for a nonexistent path" do @@ -62,53 +61,53 @@ before do @response = @request.get("/not/a/page") end it "returns status 200" do - @response.status.must_equal 404 + _(@response.status).must_equal 404 end it "returns correct Content-Length header" do - @response.original_headers["Content-Length"].must_equal "142" + _(@response.original_headers["Content-Length"]).must_equal "142" end it "returns correct Content-Type header" do - @response.headers["Content-Type"].must_equal "text/html" + _(@response.headers["Content-Type"]).must_equal "text/html" end it "returns correct body" do expected = %r{<!DOCTYPE html>.*<p>404: Not Found</p>}m - @response.body.must_match expected + _(@response.body).must_match expected end end describe "when asked for a nonexistent path and a custom 404 exists" do before do @custom_404 = File.join(sourcedir, "404.html") File.open(@custom_404, "w") {|f| f.print "Custom 404" } - app = get_app(:source => sourcedir, :destination => @destdir) + app = get_app(source: sourcedir, destination: @destdir) request = Rack::MockRequest.new(app) @response = request.get("/not/a/page") end after do FileUtils.rm(@custom_404) end it "returns correct Content-Length header" do - @response.original_headers["Content-Length"].must_equal "10" + _(@response.original_headers["Content-Length"]).must_equal "10" end it "returns correct Content-Type header" do - @response.headers["Content-Type"].must_equal "text/html" + _(@response.headers["Content-Type"]).must_equal "text/html" end it "returns correct body" do - @response.body.must_equal "Custom 404" + _(@response.body).must_equal "Custom 404" end end describe "when asked for an existing path" do @@ -116,23 +115,23 @@ before do @response = @request.get("/2015/11/05/hello-world.html") end it "returns status 200" do - @response.status.must_equal 200 + _(@response.status).must_equal 200 end it "returns correct Content-Type header" do - @response.headers["Content-Type"].must_equal "text/html" + _(@response.headers["Content-Type"]).must_equal "text/html" end it "returns correct Content-Length header" do - @response.original_headers["Content-Length"].must_equal "19" + _(@response.original_headers["Content-Length"]).must_equal "19" end it "returns correct body" do - @response.body.must_match %r{<p>A Blog Post</p>} + _(@response.body).must_match %r{<p>A Blog Post</p>} end end describe "when asked for a resource without extension" do @@ -140,78 +139,79 @@ before do @response = @request.get("/no-extension") end it "returns status 200" do - @response.status.must_equal 200 + _(@response.status).must_equal 200 end it "returns Content-Type 'application/octet-stream'" do type = @response.headers["Content-Type"] - type.must_equal "application/octet-stream" + _(type).must_equal "application/octet-stream" end end describe "when asked for resources with various media types" do it "returns correct Content-Type for *.css" do type = @request.get("/css/test.css").headers["Content-Type"] - type.must_equal "text/css" + _(type).must_equal "text/css" end it "returns correct Content-Type for *.min.js" do type = @request.get("/js/test.min.js").headers["Content-Type"] - type.must_equal "application/javascript" + _(type).must_equal "application/javascript" end end describe "when asked for partially matching paths" do it "returns status 404 for path 1" do - @request.get("/2015/10/05/hello").status.must_equal 404 + _(@request.get("/2015/10/05/hello").status).must_equal 404 end it "returns status 404 for path 2" do - @request.get("/10/05/hello-world.html").status.must_equal 404 + _(@request.get("/10/05/hello-world.html").status).must_equal 404 end end describe "when asked for paths with directory traversal" do it "returns status 404 for unsafe directory traversal" do filename = File.join(@destdir, "/../_site/index.html") assert File.exist?(filename) - @response = @request.get("/../_site/index.html") - @response.status.must_equal 404 + response = @request.get("/../_site/index.html") + _(response.status).must_equal 404 end end describe "when a directory is requested" do it "redirects to 'directory/' for 'directory' with index.html" do - @request.get("/dir-with-index").status.must_equal 301 + _(@request.get("/dir-with-index").status).must_equal 301 end it "returns status 200 for 'directory/' with index.html" do - @request.get("/dir-with-index/").status.must_equal 200 + _(@request.get("/dir-with-index/").status).must_equal 200 end it "returns correct body for 'directory/' with index.html" do - @request.get("/dir-with-index/").body.must_match %r{<p>Index of dir-with-index/</p>} + response_body = @request.get("/dir-with-index/").body + _(response_body).must_match %r{<p>Index of dir-with-index/</p>} end it "returns status 404 for 'directory' without index.html" do - @request.get("/dir-without-index").status.must_equal 404 + _(@request.get("/dir-without-index").status).must_equal 404 end it "returns status 404 for 'directory/' without index.html" do - @request.get("/dir-without-index/").status.must_equal 404 + _(@request.get("/dir-without-index/").status).must_equal 404 end end describe "when redirecting to URL with trailing slash" do @@ -219,24 +219,24 @@ before do @response = @request.get("/dir-with-index") end it "returns status 301" do - @response.status.must_equal 301 + _(@response.status).must_equal 301 end it "returns correct Location header" do - @response.headers["Location"].must_equal "/dir-with-index/" + _(@response.headers["Location"]).must_equal "/dir-with-index/" end it "returns a Cache-Control header" do - @response.headers["Cache-Control"].wont_be_nil + _(@response.headers["Cache-Control"]).wont_be_nil end it "returns correct body" do expected = %r{<!DOCTYPE html>.*<a href="/dir-with-index/">}m - @request.get("/dir-with-index").body.must_match expected + _(@request.get("/dir-with-index").body).must_match expected end end describe "when page contains multibyte characters" do @@ -245,15 +245,15 @@ @response = @request.get("/buenos_dias.html") end it "returns correct body" do response_body = @response.body.force_encoding("UTF-8") - response_body.must_match %r{<p>¡Buenos días!</p>} + _(response_body).must_match %r{<p>¡Buenos días!</p>} end it "returns the bytesize as Content-Length header" do - @response.original_headers["Content-Length"].must_equal "23" + _(@response.original_headers["Content-Length"]).must_equal "23" end end describe "when resource contains CRLF newlines" do @@ -262,34 +262,34 @@ @response = @request.get("/crlf.dat") end it "returns correct body" do expected = "File\r\nwith\r\nCRLF\r\nnewlines\r\n" - @response.body.must_equal expected + _(@response.body).must_equal expected end it "returns the bytesize as Content-Length header" do - @response.original_headers["Content-Length"].must_equal "28" + _(@response.original_headers["Content-Length"]).must_equal "28" end end describe "when URL contains special characters" do it "returns status 200 for URL with escapes" do - @response = @request.get("%2F2015%2F11%2F05%2Fhello-world.html") - @response.status.must_equal 200 + response = @request.get("%2F2015%2F11%2F05%2Fhello-world.html") + _(response.status).must_equal 200 end it "returns status 200 for resource name with blank" do - @response = @request.get("with%20blank.html") - @response.status.must_equal 200 + response = @request.get("with%20blank.html") + _(response.status).must_equal 200 end it "returns status 200 for resource name with plus" do - @response = @request.get("with+plus.html") - @response.status.must_equal 200 + response = @request.get("with+plus.html") + _(response.status).must_equal 200 end end describe "when handling caching with ETag" do @@ -303,75 +303,76 @@ @correct_etag = { "HTTP_IF_NONE_MATCH" => etag } @other_etag = { "HTTP_IF_NONE_MATCH" => other } end it "returns correct status code for unchanged '/'" do - @request.get("/", @correct_etag).status.must_equal 304 + _(@request.get("/", @correct_etag).status).must_equal 304 end it "does not return a Content-Length header for unchanged '/'" do response = @request.get("/", @correct_etag) - response.original_headers["Content-Length"].must_be_nil + _(response.original_headers["Content-Length"]).must_be_nil end it "returns correct status code for changed '/'" do - @request.get("/", @other_etag).status.must_equal 200 + _(@request.get("/", @other_etag).status).must_equal 200 end it "returns correct status code for 404" do - @request.get("/not/a/page", @other_etag).status.must_equal 404 + _(@request.get("/not/a/page", @other_etag).status).must_equal 404 end end describe "when handling HEAD requests" do it "returns status 200 for '/'" do - @request.head("/").status.must_equal 200 + _(@request.head("/").status).must_equal 200 end it "returns correct Content-Length header for '/'" do - @request.head("/").original_headers["Content-Length"].must_equal "17" + _(@request.head("/").original_headers["Content-Length"]).must_equal "17" end it "does not return a body" do - @request.head("/").body.must_equal "" + _(@request.head("/").body).must_equal "" end end describe "when handling OPTIONS requests" do it "returns status 200" do - @request.options("/").status.must_equal 200 + _(@request.options("/").status).must_equal 200 end it "returns correct Allow header" do - @request.options("/").original_headers["Allow"].must_equal "GET,HEAD,OPTIONS" + response_allow_header = @request.options("/").original_headers["Allow"] + _(response_allow_header).must_equal "GET,HEAD,OPTIONS" end it "does not return a body" do - @request.options("/").body.must_equal "" + _(@request.options("/").body).must_equal "" end it "returns 404 for nonexistent resource" do - @request.options("/not/a/page").status.must_equal 404 - @request.options("/not/a/page").body.must_match %r{<p>404: Not Found</p>} + _(@request.options("/not/a/page").status).must_equal 404 + _(@request.options("/not/a/page").body).must_match %r{<p>404: Not Found</p>} end end describe "when handling POST, PUT, DELETE, and other requests" do it "returns status 405" do - @request.post("/").status.must_equal 405 - @request.put("/").status.must_equal 405 - @request.delete("/").status.must_equal 405 - @request.request("OTHER", "/").status.must_equal 405 + _(@request.post("/").status).must_equal 405 + _(@request.put("/").status).must_equal 405 + _(@request.delete("/").status).must_equal 405 + _(@request.request("OTHER", "/").status).must_equal 405 end it "returns correct body" do expected = %r{<!DOCTYPE html>.*<p>405: Method Not Allowed</p>}m - @request.post("/").body.must_match expected + _(@request.post("/").body).must_match expected end end end