Compare commits
2 Commits
33089e6fbd
...
1ae6c02472
| Author | SHA1 | Date |
|---|---|---|
|
|
1ae6c02472 | |
|
|
11206854ad |
9
app.rb
9
app.rb
|
|
@ -2,6 +2,7 @@ require 'roda'
|
|||
require 'securerandom'
|
||||
require 'json'
|
||||
require 'sequel'
|
||||
require 'open-uri'
|
||||
|
||||
class App < Roda
|
||||
plugin :sessions, secret: ENV.delete('APP_SESSION_SECRET')
|
||||
|
|
@ -60,6 +61,14 @@ class App < Roda
|
|||
return {message: "invalid url parameter"}.to_json
|
||||
end
|
||||
|
||||
begin
|
||||
OpenURI.open_uri(url)
|
||||
rescue URI::BadURIError
|
||||
response.status = 400
|
||||
return {message: "invalid url parameter"}.to_json
|
||||
end
|
||||
|
||||
|
||||
if links.filter(:url => url).first.nil?
|
||||
code = SecureRandom.urlsafe_base64 4
|
||||
links.insert(url: url, code: code)
|
||||
|
|
|
|||
|
|
@ -45,8 +45,8 @@ describe "Submit API request to create new link" do
|
|||
expect(last_response.status).to eq(400)
|
||||
response_json = JSON.parse(last_response.body)
|
||||
expect(response_json['message']).to eq('invalid url parameter')
|
||||
|
||||
end
|
||||
|
||||
it "should return with a 400 status and 'missing url parameter' message when an empty url is submitted" do
|
||||
data = {
|
||||
}
|
||||
|
|
@ -54,7 +54,15 @@ describe "Submit API request to create new link" do
|
|||
expect(last_response.status).to eq(400)
|
||||
response_json = JSON.parse(last_response.body)
|
||||
expect(response_json['message']).to eq('missing url parameter')
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
it "should return with a 400 status and 'invalid url parameter' message when an invalid url is submitted" do
|
||||
data = {
|
||||
url: 'not-an-url'
|
||||
}
|
||||
post('/links', data.to_json, "CONTENT_TYPE" => "application/json")
|
||||
expect(last_response.status).to eq(400)
|
||||
response_json = JSON.parse(last_response.body)
|
||||
expect(response_json['message']).to eq('invalid url parameter')
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue