Exemplo n.º 1
0
def test_expand(set_defaults, capsys):
    argv = [
        '', '--apiurl', 'http://example.com/yourls-api.php', 'expand',
        'http://example.com/abcde'
    ]

    patch_argv = patch.object(sys, 'argv', argv)
    patch_expand = patch('yourls.core.YOURLSAPIMixin.expand',
                         autospec=True,
                         return_value='http://google.com')

    with patch_argv, patch_expand as mock_expand:
        with pytest.raises(SystemExit):
            main()
        out, _ = capsys.readouterr()
        expected = "http://google.com\n"
        assert expected == out
        assert mock_expand.call_count == 1

    error = YOURLSAPIError('Unknown error')

    patch_expand = patch('yourls.core.YOURLSAPIMixin.expand',
                         autospec=True,
                         side_effect=[error])

    with patch_argv, patch_expand as mock_expand:
        with pytest.raises(SystemExit):
            main()
        _, err = capsys.readouterr()
        assert err == 'Error: Unknown error\n'
Exemplo n.º 2
0
def test_url_stats(set_defaults, capsys):
    argv = [
        '', '--apiurl', 'http://example.com/yourls-api.php', 'url-stats',
        'http://example.com/abcde'
    ]

    shorturl = ShortenedURL(shorturl='http://example.com/abcde',
                            url='http://google.com',
                            title='Google',
                            date=datetime.datetime(2015, 10, 31, 14, 31, 4),
                            ip='203.0.113.0',
                            clicks=0,
                            keyword='abcde')

    patch_argv = patch.object(sys, 'argv', argv)
    patch_url_stats = patch('yourls.core.YOURLSAPIMixin.url_stats',
                            autospec=True,
                            return_value=shorturl)

    with patch_argv, patch_url_stats as mock_url_stats:
        with pytest.raises(SystemExit):
            main()
        out, _ = capsys.readouterr()
        expected = format_shorturl(shorturl) + '\n'
        assert expected == out
        assert mock_url_stats.call_count == 1
Exemplo n.º 3
0
def test_stats_switches(set_defaults):
    argv = ['', '--apiurl', 'http://example.com/yourls-api.php', 'stats',
            'bottom', '117', '--start', '23']

    patch_argv = patch.object(sys, 'argv', argv)
    patch_stats = patch('yourls.core.YOURLSAPIMixin.stats', autospec=True,
                        return_value=([], DBStats(0, 0)))

    with patch_argv, patch_stats as mock_stats:
        with pytest.raises(SystemExit):
            main()

        assert mock_stats.call_args[1] == {
            'filter': 'bottom', 'limit': 117, 'start': 23}

    argv = ['', '--apiurl', 'http://example.com/yourls-api.php', 'stats',
            'bottom', '117', '-b', '23']

    patch_argv = patch.object(sys, 'argv', argv)

    with patch_argv, patch_stats as mock_stats:
        with pytest.raises(SystemExit):
            main()

        assert mock_stats.call_args[1] == {
            'filter': 'bottom', 'limit': 117, 'start': 23}
Exemplo n.º 4
0
def test_url_stats(set_defaults, capsys):
    argv = ['', '--apiurl', 'http://example.com/yourls-api.php', 'url-stats',
            'http://example.com/abcde']

    shorturl = ShortenedURL(
        shorturl='http://example.com/abcde',
        url='http://google.com',
        title='Google',
        date=datetime.datetime(2015, 10, 31, 14, 31, 4),
        ip='203.0.113.0',
        clicks=0,
        keyword='abcde')

    patch_argv = patch.object(sys, 'argv', argv)
    patch_url_stats = patch(
        'yourls.core.YOURLSAPIMixin.url_stats', autospec=True,
        return_value=shorturl)

    with patch_argv, patch_url_stats as mock_url_stats:
        with pytest.raises(SystemExit):
            main()
        out, _ = capsys.readouterr()
        expected = format_shorturl(shorturl) + '\n'
        assert expected == out
        assert mock_url_stats.call_count == 1
Exemplo n.º 5
0
def test_expand(set_defaults, capsys):
    argv = ['', '--apiurl', 'http://example.com/yourls-api.php', 'expand',
            'http://example.com/abcde']

    patch_argv = patch.object(sys, 'argv', argv)
    patch_expand = patch(
        'yourls.core.YOURLSAPIMixin.expand', autospec=True,
        return_value='http://google.com')

    with patch_argv, patch_expand as mock_expand:
        with pytest.raises(SystemExit):
            main()
        out, _ = capsys.readouterr()
        expected = "http://google.com\n"
        assert expected == out
        assert mock_expand.call_count == 1

    error = YOURLSAPIError('Unknown error')

    patch_expand = patch(
        'yourls.core.YOURLSAPIMixin.expand', autospec=True,
        side_effect=[error])

    with patch_argv, patch_expand as mock_expand:
        with pytest.raises(SystemExit):
            main()
        _, err = capsys.readouterr()
        assert err == 'Error: Unknown error\n'
Exemplo n.º 6
0
def test_db_stats(set_defaults, capsys):
    argv = ['', '--apiurl', 'http://example.com/yourls-api.php', 'db-stats']

    db_stats = DBStats(total_links=200, total_clicks=5000)

    patch_argv = patch.object(sys, 'argv', argv)
    patch_db_stats = patch('yourls.core.YOURLSAPIMixin.db_stats',
                           autospec=True,
                           return_value=db_stats)

    with patch_argv, patch_db_stats as mock_db_stats:
        with pytest.raises(SystemExit):
            main()
        out, _ = capsys.readouterr()
        expected = format_dbstats(db_stats) + '\n'
        assert expected == out
        assert mock_db_stats.call_count == 1
Exemplo n.º 7
0
def test_shorten_switches(set_defaults):
    argv = [
        '', '--apiurl', 'http://example.com/yourls-api.php', 'shorten',
        'http://google.com', '--keyword', 'keyword', '--title', 'title'
    ]

    patch_argv = patch.object(sys, 'argv', argv)

    shorturl = ShortenedURL(shorturl='http://example.com/abcde',
                            url='http://google.com',
                            title='Google',
                            date=datetime.datetime(2015, 10, 31, 14, 31, 4),
                            ip='203.0.113.0',
                            clicks=0,
                            keyword='abcde')

    patch_shorten = patch('yourls.core.YOURLSAPIMixin.shorten',
                          autospec=True,
                          return_value=shorturl)

    with patch_argv, patch_shorten as mock_shorten:
        with pytest.raises(SystemExit):
            main()

        assert mock_shorten.call_args[0][1] == 'http://google.com'
        assert mock_shorten.call_args[1] == {
            'keyword': 'keyword',
            'title': 'title'
        }

    argv = [
        '', '--apiurl', 'http://example.com/yourls-api.php', 'shorten',
        'http://google.com', '-k', 'keyword', '-t', 'title'
    ]

    patch_argv = patch.object(sys, 'argv', argv)

    with patch_argv, patch_shorten as mock_shorten:
        with pytest.raises(SystemExit):
            main()

        assert mock_shorten.call_args[0][1] == 'http://google.com'
        assert mock_shorten.call_args[1] == {
            'keyword': 'keyword',
            'title': 'title'
        }
Exemplo n.º 8
0
def test_db_stats(set_defaults, capsys):
    argv = ['', '--apiurl', 'http://example.com/yourls-api.php', 'db-stats']

    db_stats = DBStats(total_links=200, total_clicks=5000)

    patch_argv = patch.object(sys, 'argv', argv)
    patch_db_stats = patch(
        'yourls.core.YOURLSAPIMixin.db_stats', autospec=True,
        return_value=db_stats)

    with patch_argv, patch_db_stats as mock_db_stats:
        with pytest.raises(SystemExit):
            main()
        out, _ = capsys.readouterr()
        expected = format_dbstats(db_stats) + '\n'
        assert expected == out
        assert mock_db_stats.call_count == 1
Exemplo n.º 9
0
def test_cli(set_defaults, capsys):
    argv = ['', 'shorten']
    patch_argv = patch.object(sys, 'argv', argv)
    patch_shorten = patch('yourls.core.YOURLSAPIMixin.shorten', autospec=True)

    with patch_argv, patch_shorten as mock_shorten:
        with pytest.raises(SystemExit):
            main()
        _, err = capsys.readouterr()
        assert 'apiurl missing' in err
        assert mock_shorten.called == 0

    argv = ['', '--apiurl', 'http://example.com', '--username', 'u', 'shorten']
    patch_argv = patch.object(sys, 'argv', argv)

    with patch_argv, patch_shorten as mock_shorten:
        with pytest.raises(SystemExit):
            main()
        out, err = capsys.readouterr()
        assert 'authentication paremeters overspecified' in err
        assert not mock_shorten.called
Exemplo n.º 10
0
def test_cli(set_defaults, capsys):
    argv = ['', 'shorten']
    patch_argv = patch.object(sys, 'argv', argv)
    patch_shorten = patch('yourls.core.YOURLSAPIMixin.shorten', autospec=True)

    with patch_argv, patch_shorten as mock_shorten:
        with pytest.raises(SystemExit):
            main()
        _, err = capsys.readouterr()
        assert 'apiurl missing' in err
        assert mock_shorten.called == 0

    argv = ['', '--apiurl', 'http://example.com', '--username', 'u', 'shorten']
    patch_argv = patch.object(sys, 'argv', argv)

    with patch_argv, patch_shorten as mock_shorten:
        with pytest.raises(SystemExit):
            main()
        out, err = capsys.readouterr()
        assert 'authentication paremeters overspecified' in err
        assert not mock_shorten.called
Exemplo n.º 11
0
def test_shorten_switches(set_defaults):
    argv = ['', '--apiurl', 'http://example.com/yourls-api.php', 'shorten',
            'http://google.com', '--keyword', 'keyword', '--title', 'title']

    patch_argv = patch.object(sys, 'argv', argv)

    shorturl = ShortenedURL(
        shorturl='http://example.com/abcde',
        url='http://google.com',
        title='Google',
        date=datetime.datetime(2015, 10, 31, 14, 31, 4),
        ip='203.0.113.0',
        clicks=0,
        keyword='abcde')

    patch_shorten = patch('yourls.core.YOURLSAPIMixin.shorten', autospec=True,
                          return_value=shorturl)

    with patch_argv, patch_shorten as mock_shorten:
        with pytest.raises(SystemExit):
            main()

        assert mock_shorten.call_args[0][1] == 'http://google.com'
        assert mock_shorten.call_args[1] == {
            'keyword': 'keyword', 'title': 'title'}

    argv = ['', '--apiurl', 'http://example.com/yourls-api.php', 'shorten',
            'http://google.com', '-k', 'keyword', '-t', 'title']

    patch_argv = patch.object(sys, 'argv', argv)

    with patch_argv, patch_shorten as mock_shorten:
        with pytest.raises(SystemExit):
            main()

        assert mock_shorten.call_args[0][1] == 'http://google.com'
        assert mock_shorten.call_args[1] == {
            'keyword': 'keyword', 'title': 'title'}
Exemplo n.º 12
0
def test_stats_switches(set_defaults):
    argv = [
        '', '--apiurl', 'http://example.com/yourls-api.php', 'stats', 'bottom',
        '117', '--start', '23'
    ]

    patch_argv = patch.object(sys, 'argv', argv)
    patch_stats = patch('yourls.core.YOURLSAPIMixin.stats',
                        autospec=True,
                        return_value=([], DBStats(0, 0)))

    with patch_argv, patch_stats as mock_stats:
        with pytest.raises(SystemExit):
            main()

        assert mock_stats.call_args[1] == {
            'filter': 'bottom',
            'limit': 117,
            'start': 23
        }

    argv = [
        '', '--apiurl', 'http://example.com/yourls-api.php', 'stats', 'bottom',
        '117', '-b', '23'
    ]

    patch_argv = patch.object(sys, 'argv', argv)

    with patch_argv, patch_stats as mock_stats:
        with pytest.raises(SystemExit):
            main()

        assert mock_stats.call_args[1] == {
            'filter': 'bottom',
            'limit': 117,
            'start': 23
        }
Exemplo n.º 13
0
def test_shorten(set_defaults, capsys):
    argv = [
        '', '--apiurl', 'http://example.com/yourls-api.php', 'shorten',
        'http://google.com'
    ]

    shorturl = ShortenedURL(shorturl='http://example.com/abcde',
                            url='http://google.com',
                            title='Google',
                            date=datetime.datetime(2015, 10, 31, 14, 31, 4),
                            ip='203.0.113.0',
                            clicks=0,
                            keyword='abcde')

    patch_argv = patch.object(sys, 'argv', argv)
    patch_shorten = patch('yourls.core.YOURLSAPIMixin.shorten',
                          autospec=True,
                          return_value=shorturl)

    with patch_argv, patch_shorten as mock_shorten:
        with pytest.raises(SystemExit):
            main()
        out, _ = capsys.readouterr()
        expected = 'New: {}\n'.format(format_shorturl(shorturl))
        assert expected == out
        assert mock_shorten.call_count == 1

    argv = [
        '', '--apiurl', 'http://example.com/yourls-api.php', 'shorten',
        'http://google.com', '--only-new'
    ]
    patch_argv = patch.object(sys, 'argv', argv)
    with patch_argv, patch_shorten as mock_shorten:
        with pytest.raises(SystemExit):
            main()
        out, _ = capsys.readouterr()
        expected = format_shorturl(shorturl) + '\n'
        assert expected == out
        assert mock_shorten.call_count == 1

    exists_error = YOURLSURLExistsError(
        'http://google.com already exists in database', url=shorturl)

    patch_shorten = patch('yourls.core.YOURLSAPIMixin.shorten',
                          autospec=True,
                          side_effect=[exists_error])

    with patch_argv, patch_shorten as mock_shorten:
        with pytest.raises(SystemExit):
            main()
        _, err = capsys.readouterr()
        assert err == 'Error: http://google.com already exists in database\n'

    argv = [
        '', '--apiurl', 'http://example.com/yourls-api.php', 'shorten',
        'http://google.com', '--simple'
    ]
    patch_argv = patch.object(sys, 'argv', argv)

    with patch_argv, patch_shorten as mock_shorten:
        with pytest.raises(SystemExit):
            main()
        out, _ = capsys.readouterr()
        assert out == 'Exists: http://example.com/abcde\n'

    error = YOURLSAPIError('Unknown error')

    patch_shorten = patch('yourls.core.YOURLSAPIMixin.shorten',
                          autospec=True,
                          side_effect=[error])

    with patch_argv, patch_shorten as mock_shorten:
        with pytest.raises(SystemExit):
            main()
        _, err = capsys.readouterr()
        assert err == 'Error: Unknown error\n'
Exemplo n.º 14
0
def test_stats(set_defaults, capsys):
    argv = [
        '', '--apiurl', 'http://example.com/yourls-api.php', 'stats', 'top',
        '3'
    ]

    links = [
        ShortenedURL(shorturl='http://example.com/abcde',
                     url='http://google.com',
                     title='Google',
                     date=datetime.datetime(2014, 9, 8, 20, 30, 17),
                     ip='203.0.113.0',
                     clicks=789,
                     keyword=None),
        ShortenedURL(shorturl='http://example.com/abc45',
                     url='https://www.bbc.co.uk/news',
                     title='BBC News',
                     date=datetime.datetime(2014, 12, 19, 16, 26, 39),
                     ip='203.0.113.0',
                     clicks=1364,
                     keyword=None),
        ShortenedURL(shorturl='http://example.com/123de',
                     url='https://www.youtube.com',
                     title='YouTube',
                     date=datetime.datetime(2015, 10, 9, 5, 46, 27),
                     ip='203.0.113.0',
                     clicks=27,
                     keyword=None)
    ]

    stats = DBStats(total_links=200, total_clicks=5000)

    patch_argv = patch.object(sys, 'argv', argv)
    patch_stats = patch('yourls.core.YOURLSAPIMixin.stats',
                        autospec=True,
                        return_value=(links, stats))

    with patch_argv, patch_stats as mock_stats:
        with pytest.raises(SystemExit):
            main()
        out, _ = capsys.readouterr()
        expected = format_dbstats(stats) + '\n'
        for link in links:
            expected += format_shorturl(link) + '\n'

        assert expected == out
        assert mock_stats.call_count == 1

    argv = [
        '', '--apiurl', 'http://example.com/yourls-api.php', 'stats', 'top',
        '3', '--simple'
    ]
    patch_argv = patch.object(sys, 'argv', argv)

    with patch_argv, patch_stats as mock_stats:
        with pytest.raises(SystemExit):
            main()
        out, _ = capsys.readouterr()
        expected = format_dbstats(stats) + '\n'
        expected += ("http://example.com/abcde\n"
                     "http://example.com/abc45\n"
                     "http://example.com/123de\n")
        assert expected == out
        assert mock_stats.call_count == 1
Exemplo n.º 15
0
def test_shorten(set_defaults, capsys):
    argv = ['', '--apiurl', 'http://example.com/yourls-api.php', 'shorten',
            'http://google.com']

    shorturl = ShortenedURL(
        shorturl='http://example.com/abcde',
        url='http://google.com',
        title='Google',
        date=datetime.datetime(2015, 10, 31, 14, 31, 4),
        ip='203.0.113.0',
        clicks=0,
        keyword='abcde')

    patch_argv = patch.object(sys, 'argv', argv)
    patch_shorten = patch(
        'yourls.core.YOURLSAPIMixin.shorten', autospec=True,
        return_value=shorturl)

    with patch_argv, patch_shorten as mock_shorten:
        with pytest.raises(SystemExit):
            main()
        out, _ = capsys.readouterr()
        expected = 'New: {}\n'.format(format_shorturl(shorturl))
        assert expected == out
        assert mock_shorten.call_count == 1

    argv = ['', '--apiurl', 'http://example.com/yourls-api.php', 'shorten',
            'http://google.com', '--only-new']
    patch_argv = patch.object(sys, 'argv', argv)
    with patch_argv, patch_shorten as mock_shorten:
        with pytest.raises(SystemExit):
            main()
        out, _ = capsys.readouterr()
        expected = format_shorturl(shorturl) + '\n'
        assert expected == out
        assert mock_shorten.call_count == 1

    exists_error = YOURLSURLExistsError(
        'http://google.com already exists in database', url=shorturl)

    patch_shorten = patch(
        'yourls.core.YOURLSAPIMixin.shorten', autospec=True,
        side_effect=[exists_error])

    with patch_argv, patch_shorten as mock_shorten:
        with pytest.raises(SystemExit):
            main()
        _, err = capsys.readouterr()
        assert err == 'Error: http://google.com already exists in database\n'

    argv = ['', '--apiurl', 'http://example.com/yourls-api.php', 'shorten',
            'http://google.com', '--simple']
    patch_argv = patch.object(sys, 'argv', argv)

    with patch_argv, patch_shorten as mock_shorten:
        with pytest.raises(SystemExit):
            main()
        out, _ = capsys.readouterr()
        assert out == 'Exists: http://example.com/abcde\n'

    error = YOURLSAPIError('Unknown error')

    patch_shorten = patch(
        'yourls.core.YOURLSAPIMixin.shorten', autospec=True,
        side_effect=[error])

    with patch_argv, patch_shorten as mock_shorten:
        with pytest.raises(SystemExit):
            main()
        _, err = capsys.readouterr()
        assert err == 'Error: Unknown error\n'
Exemplo n.º 16
0
def test_stats(set_defaults, capsys):
    argv = ['', '--apiurl', 'http://example.com/yourls-api.php', 'stats',
            'top', '3']

    links = [
        ShortenedURL(
            shorturl='http://example.com/abcde',
            url='http://google.com',
            title='Google',
            date=datetime.datetime(2014, 9, 8, 20, 30, 17),
            ip='203.0.113.0',
            clicks=789,
            keyword=None),
        ShortenedURL(
            shorturl='http://example.com/abc45',
            url='https://www.bbc.co.uk/news',
            title='BBC News',
            date=datetime.datetime(2014, 12, 19, 16, 26, 39),
            ip='203.0.113.0',
            clicks=1364,
            keyword=None),
        ShortenedURL(
            shorturl='http://example.com/123de',
            url='https://www.youtube.com',
            title='YouTube',
            date=datetime.datetime(2015, 10, 9, 5, 46, 27),
            ip='203.0.113.0',
            clicks=27,
            keyword=None)
    ]

    stats = DBStats(total_links=200, total_clicks=5000)

    patch_argv = patch.object(sys, 'argv', argv)
    patch_stats = patch(
        'yourls.core.YOURLSAPIMixin.stats', autospec=True,
        return_value=(links, stats))

    with patch_argv, patch_stats as mock_stats:
        with pytest.raises(SystemExit):
            main()
        out, _ = capsys.readouterr()
        expected = format_dbstats(stats) + '\n'
        for link in links:
            expected += format_shorturl(link) + '\n'

        assert expected == out
        assert mock_stats.call_count == 1

    argv = ['', '--apiurl', 'http://example.com/yourls-api.php', 'stats',
            'top', '3', '--simple']
    patch_argv = patch.object(sys, 'argv', argv)

    with patch_argv, patch_stats as mock_stats:
        with pytest.raises(SystemExit):
            main()
        out, _ = capsys.readouterr()
        expected = format_dbstats(stats) + '\n'
        expected += (
            "http://example.com/abcde\n"
            "http://example.com/abc45\n"
            "http://example.com/123de\n")
        assert expected == out
        assert mock_stats.call_count == 1