Commit 663143ce authored by Kyle Fuller's avatar Kyle Fuller

[linter] Validate screenshot URLs return a valid image

parent 8323920b
......@@ -238,6 +238,8 @@ module Pod
if resp && !resp.success?
warning "The URL (#{url}) is not reachable."
end
resp
end
# Performs validations related to the `homepage` attribute.
......@@ -252,7 +254,10 @@ module Pod
#
def validate_screenshots(spec)
spec.screenshots.each do |screenshot|
validate_url(screenshot)
request = validate_url(screenshot)
if request && !(request.headers['content-type'] && request.headers['content-type'].first =~ /image\/.*/i)
warning "The screenshot #{screenshot} is not a valid image."
end
end
end
......
......@@ -121,20 +121,20 @@ module Pod
@sut.stubs(:check_file_patterns)
@sut.stubs(:tear_down_validation_environment)
@sut.stubs(:validate_homepage)
WebMock::API.stub_request(:head, 'banana-corp.local/valid-image.png').to_return(:status => 200, :headers => { 'Content-Type' => 'image/png' })
end
it "checks if the screenshots are valid" do
WebMock::API.stub_request(:head, /banana-corp.local/).to_return(:status => 200)
Specification.any_instance.stubs(:screenshots).returns(['http://banana-corp.local/first.png', 'http://banana-corp.local/second.png'])
Specification.any_instance.stubs(:screenshots).returns(['http://banana-corp.local/valid-image.png'])
@sut.validate
@sut.results.should.be.empty?
end
it "should fail if any of the screenshots is not valid" do
WebMock::API.stub_request(:head, /not-found/).to_raise(SocketError)
Specification.any_instance.stubs(:screenshots).returns(['http://banana-corp.local/first.png', 'http://banana-corp.local/not-found/second.png'])
it "should fail if any of the screenshots URLS do not return an image" do
WebMock::API.stub_request(:head, 'banana-corp.local/').to_return(:status => 200)
Specification.any_instance.stubs(:screenshots).returns(['http://banana-corp.local/valid-image.png', 'http://banana-corp.local/'])
@sut.validate
@sut.results.map(&:to_s).first.should.match /There was a problem validating the URL/
@sut.results.map(&:to_s).first.should.match /The screenshot .* is not a valid image/
end
end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment