def test_url_insert_new_invalid_format_shortcode_failure(self):
     with self.app.app_context():
         with pytest.raises(
                 Exception
         ) as exc:  # Wide catch, scope narrowed for preventing nested Exception override
             url = Url.insert_url(url='scenario4.com', shortcode='xop')
         assert isinstance(exc.type,
                           InvalidShortcode.__class__)  # Sanity check
 def test_url_insert_new_already_in_use_shortcode_failure(self):
     with self.app.app_context():
         with pytest.raises(
                 Exception
         ) as exc:  # Wide catch, scope narrowed for preventing nested Exception override
             url = Url.insert_url(url='scenario3.com', shortcode='js9_86')
         assert isinstance(exc.type,
                           ShortcodeAlreadyInUse.__class__)  # Sanity check
Esempio n. 3
0
def shorten_url():
    """
    This endpoint method handles the url shortening requests,
    routed to the configured relative routing url and being
    a POST request.

    The Url database model specific methods will handle the logic.

    :raises:
        InvalidRequestPayload: When the provided payload is invalid JSON.
        InvalidRequestPayload: When the provided payload does not contain
            the url to shorten.

    :return: The shortened url and corresponding shortcode.
    :rtype: flask.Response

    .. note::
        Note that if no shortcode is provided in the request payload, the
        shortcode is set to None, the Shortcode database model specific
        methods will handle the logic.
    """
    if not request.is_json:
        raise InvalidRequestPayload('Unsupported Media Type: Invalid JSON')
    request_data = request.get_json()
    if 'url' not in request_data:
        raise InvalidRequestPayload('Url not present')
    request_url = request_data['url']
    if 'shortcode' not in request_data:
        request_shortcode = None
    else:
        request_shortcode = request_data['shortcode']

    shortcode = Url.insert_url(url=request_url, shortcode=request_shortcode)
    response = jsonify({"shortcode": shortcode})
    response.status_code = 201
    return response
 def test_url_insert_nullable_failure(self):
     with self.app.app_context():
         with pytest.raises(IntegrityError):
             url = Url.insert_url(url=None)
 def test_url_insert_existing_with_shortcode_success(self):
     with self.app.app_context():
         url = Url.insert_url(url='scenario2.com', shortcode='js9_86')
         assert Shortcode.check_validity(shortcode=url)
         assert url == 'js9_86'
 def test_url_insert_new_without_shortcode_success(self):
     with self.app.app_context():
         url = Url.insert_url(url='scenario1.com')
         assert Shortcode.check_validity(shortcode=url)
 def setup_method(self):
     Url.insert_url(url='scenario8.com', shortcode='090909')
 def setup_method(self):
     Url.insert_url(url='scenario7.com', shortcode='aqaqaq')
 def test_check_in_use_true(self):
     Url.insert_url(url='scenario5.com', shortcode='08vs43')
     assert Shortcode.check_in_use('08vs43')