File: test_ia_list.py

package info (click to toggle)
python-internetarchive 5.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,000 kB
  • sloc: python: 7,445; xml: 180; makefile: 180
file content (86 lines) | stat: -rw-r--r-- 2,508 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
from copy import deepcopy

from tests.conftest import IaRequestsMock, ia_call

NASA_FILES = {
    'NASAarchiveLogo.jpg',
    'globe_west_540.jpg',
    'nasa_reviews.xml',
    'nasa_meta.xml',
    'nasa_archive.torrent',
    'nasa_files.xml'
}


def test_ia_list(capsys, nasa_mocker):
    ia_call(['ia', 'list', 'nasa'])
    out, err = capsys.readouterr()
    assert {l for l in out.split('\n') if l} == NASA_FILES


def test_ia_list_verbose(capsys, nasa_mocker):
    ia_call(['ia', 'list', '--verbose', 'nasa'])

    out, err = capsys.readouterr()
    _nasa_files = deepcopy(NASA_FILES)
    _nasa_files.add('name')
    assert {l for l in out.split('\n') if l} == _nasa_files


def test_ia_list_all(capsys, nasa_mocker):
    ia_call(['ia', 'list', '--all', 'nasa'])

    out, err = capsys.readouterr()
    out = [l for l in out.split('\n') if l]
    assert len(out) == 6
    assert all(len(f.split('\t')) == 9 for f in out)
    assert all(f.split('\t')[0] in NASA_FILES for f in out)


def test_ia_list_location(capsys, nasa_mocker):
    ia_call(['ia', 'list', '--location', '--glob', '*meta.xml', 'nasa'])
    out, err = capsys.readouterr()
    assert out == 'https://archive.org/download/nasa/nasa_meta.xml\n'


def test_ia_list_columns(capsys):
    with IaRequestsMock() as rsps:
        rsps.add_metadata_mock('nasa')
        ia_call(['ia', 'list', '--columns', 'name,md5', '--glob', '*meta.xml', 'nasa'])

    out, err = capsys.readouterr()
    assert out == 'nasa_meta.xml\t0e339f4a29a8bc42303813cbec9243e5\n'

    with IaRequestsMock() as rsps:
        rsps.add_metadata_mock('nasa')
        ia_call(['ia', 'list', '--columns', 'md5', '--glob', '*meta.xml', 'nasa'])

    out, err = capsys.readouterr()
    assert out == '0e339f4a29a8bc42303813cbec9243e5\n'


def test_ia_list_glob(capsys, nasa_mocker):
    ia_call(['ia', 'list', '--glob', '*torrent', 'nasa'])
    out, err = capsys.readouterr()
    assert out == 'nasa_archive.torrent\n'


def test_ia_list_format(capsys, nasa_mocker):
    ia_call(['ia', 'list', '--format', 'Metadata', 'nasa'])

    out, err = capsys.readouterr()
    expected_output = {
        'nasa_reviews.xml',
        'nasa_files.xml',
        'nasa_meta.xml',
    }
    assert {f for f in out.split('\n') if f} == expected_output


def test_ia_list_non_existing(capsys):
    with IaRequestsMock() as rsps:
        rsps.add_metadata_mock('nasa', body='{}')
        ia_call(['ia', 'list', 'nasa'], expected_exit_code=1)

    out, err = capsys.readouterr()
    assert out == ''