Compare commits
2 commits
Author | SHA1 | Date | |
---|---|---|---|
6b10ee6093 | |||
ef2046b610 |
2 changed files with 14 additions and 4 deletions
|
@ -5,10 +5,11 @@ from urllib.parse import urlparse
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
# HEAD is implicit with flask
|
||||||
@app.route('/', methods=['GET', 'POST'])
|
@app.route('/', methods=['GET', 'POST'])
|
||||||
@app.route('/<shortLink>', methods=['GET', 'POST'])
|
@app.route('/<shortLink>', methods=['GET', 'POST'])
|
||||||
def short(shortLink=""):
|
def short(shortLink=""):
|
||||||
if request.method == "GET":
|
if request.method == "GET" or request.method == "HEAD":
|
||||||
if shortLink:
|
if shortLink:
|
||||||
noauto = shortLink[-1] == "+"
|
noauto = shortLink[-1] == "+"
|
||||||
if noauto: shortLink = shortLink[:-1]
|
if noauto: shortLink = shortLink[:-1]
|
||||||
|
@ -36,11 +37,10 @@ def short(shortLink=""):
|
||||||
else:
|
else:
|
||||||
return render_template("index.html", name=shortLink) # Landing page
|
return render_template("index.html", name=shortLink) # Landing page
|
||||||
elif request.method == "POST": # Someone submitted a new link to short
|
elif request.method == "POST": # Someone submitted a new link to short
|
||||||
longUrl = request.form.get("url", "")
|
longUrl = request.form["url"] # required, accept the exception if the key does not exist
|
||||||
wishId = request.form.get("wishId")
|
wishId = request.form.get("wishId")
|
||||||
if len(longUrl) <= 0:
|
if len(longUrl) <= 0:
|
||||||
abort(400)
|
abort(400)
|
||||||
|
|
||||||
databaseId = insertIdUnique(longUrl, idToCheck=wishId)
|
databaseId = insertIdUnique(longUrl, idToCheck=wishId)
|
||||||
return request.url_root + databaseId # Short link in plain text
|
return request.url_root + databaseId # Short link in plain text
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,11 @@ class WebTestCase(object):
|
||||||
self.assertEqual(req.status_code, 200, msg="Get request unsuccessful")
|
self.assertEqual(req.status_code, 200, msg="Get request unsuccessful")
|
||||||
return req
|
return req
|
||||||
|
|
||||||
|
def assertHeadReq(self, url):
|
||||||
|
req = requests.head(url)
|
||||||
|
self.assertEqual(req.status_code, 301, msg="Head request unsuccessful")
|
||||||
|
return req
|
||||||
|
|
||||||
def assertGetStatusReq(self, expected_status, url, params = {}):
|
def assertGetStatusReq(self, expected_status, url, params = {}):
|
||||||
req = requests.get(url, params=params, allow_redirects=False)
|
req = requests.get(url, params=params, allow_redirects=False)
|
||||||
self.assertEqual(req.status_code, expected_status, msg="Returned status code does not match the expected one")
|
self.assertEqual(req.status_code, expected_status, msg="Returned status code does not match the expected one")
|
||||||
|
@ -51,7 +56,7 @@ class SchortRegressionTests(unittest.TestCase, WebTestCase):
|
||||||
req = requests.post(BASE_URL + "/", data={"url": ""})
|
req = requests.post(BASE_URL + "/", data={"url": ""})
|
||||||
self.assertEqual(req.status_code, 400, msg="Could not handle a request with empty url")
|
self.assertEqual(req.status_code, 400, msg="Could not handle a request with empty url")
|
||||||
req = requests.post(BASE_URL + "/", data={})
|
req = requests.post(BASE_URL + "/", data={})
|
||||||
self.assertEqual(req.status_code, 400, msg="Could not handle a request without a url at all")
|
self.assertEqual(req.status_code, 400, msg="Could not handle a request with url at all")
|
||||||
|
|
||||||
|
|
||||||
class SchortShortLinkCase(object):
|
class SchortShortLinkCase(object):
|
||||||
|
@ -77,6 +82,11 @@ class SchortShortLinkCase(object):
|
||||||
req = self.assertGetReq(BASE_URL + "/" + self.shortID, params = {"resolve" : ""})
|
req = self.assertGetReq(BASE_URL + "/" + self.shortID, params = {"resolve" : ""})
|
||||||
self.assertEqual(req.text, self.shortDest)
|
self.assertEqual(req.text, self.shortDest)
|
||||||
|
|
||||||
|
def test_head_resolve(self):
|
||||||
|
"""Test resolving by using a HEAD request"""
|
||||||
|
req = self.assertHeadReq(BASE_URL + "/" + self.shortID)
|
||||||
|
self.assertEqual(req.headers.get("Location", ""), self.shortDest)
|
||||||
|
|
||||||
def test_HTMLresolve(self):
|
def test_HTMLresolve(self):
|
||||||
"""Test HTML displaying of the shortened URL"""
|
"""Test HTML displaying of the shortened URL"""
|
||||||
HTML_keyword = "+"
|
HTML_keyword = "+"
|
||||||
|
|
Loading…
Reference in a new issue