File: bw_pw.py

package info (click to toggle)
bundlewrap 4.24.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,216 kB
  • sloc: python: 20,299; makefile: 2
file content (132 lines) | stat: -rw-r--r-- 3,428 bytes parent folder | download | duplicates (2)
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
from os.path import join

from bundlewrap.utils.testing import make_repo, run


def test_encrypt(tmpdir):
    make_repo(tmpdir)

    stdout, stderr, rcode = run("bw pw -e test", path=str(tmpdir))
    assert stderr == b""
    assert rcode == 0

    stdout, stderr, rcode = run("bw pw -d '{}'".format(stdout.decode('utf-8').strip()), path=str(tmpdir))
    assert stdout == b"test\n"
    assert stderr == b""
    assert rcode == 0


def test_encrypt_different_key_autodetect(tmpdir):
    make_repo(tmpdir)

    stdout, stderr, rcode = run("bw pw -e -k generate test", path=str(tmpdir))
    assert stderr == b""
    assert rcode == 0
    print(stdout)

    stdout, stderr, rcode = run("bw pw -d '{}'".format(stdout.decode('utf-8').strip()), path=str(tmpdir))
    assert stdout == b"test\n"
    assert stderr == b""
    assert rcode == 0


def test_encrypt_file(tmpdir):
    make_repo(tmpdir)

    source_file = join(str(tmpdir), "data", "source")
    with open(source_file, 'w') as f:
        f.write("ohai")

    stdout, stderr, rcode = run(
        f"bw pw -e -f encrypted \"{source_file}\"",
        path=str(tmpdir),
    )
    assert stderr == b""
    assert rcode == 0

    stdout, stderr, rcode = run(
        "bw pw -d -f decrypted encrypted",
        path=str(tmpdir),
    )
    assert stdout == b""
    assert stderr == b""
    assert rcode == 0
    with open(join(tmpdir, "data", "decrypted")) as f:
        assert f.read() == "ohai"


def test_encrypt_file_different_key_autodetect(tmpdir):
    make_repo(tmpdir)

    source_file = join(str(tmpdir), "data", "source")
    with open(source_file, 'w') as f:
        f.write("ohai")

    stdout, stderr, rcode = run(
        f"bw pw -e -f encrypted -k generate \"{source_file}\"",
        path=str(tmpdir),
    )
    assert stderr == b""
    assert rcode == 0

    stdout, stderr, rcode = run(
        "bw pw -d -f decrypted encrypted",
        path=str(tmpdir),
    )
    assert stdout == b""
    assert stderr == b""
    assert rcode == 0
    with open(join(tmpdir, "data", "decrypted")) as f:
        assert f.read() == "ohai"


def test_encrypt_file_binary(tmpdir):
    make_repo(tmpdir)

    source_file = join(str(tmpdir), "data", "source")
    with open(source_file, 'wb') as f:
        f.write(b"\000\001\002")

    stdout, stderr, rcode = run(
        f"bw pw -e -f encrypted \"{source_file}\"",
        path=str(tmpdir),
    )
    assert stderr == b""
    assert rcode == 0

    stdout, stderr, rcode = run(
        "bw pw -d -f decrypted encrypted",
        path=str(tmpdir),
    )
    assert stdout == b""
    assert stderr == b""
    assert rcode == 0
    with open(join(tmpdir, "data", "decrypted"), 'rb') as f:
        assert f.read() == b"\000\001\002"


def test_human_password(tmpdir):
    make_repo(tmpdir)

    stdout, stderr, rcode = run("bw pw -H \"hello world\"", path=str(tmpdir))
    assert stdout == b"Xaint-Heep-Pier-Tikl-76\n"
    assert stderr == b""
    assert rcode == 0


def test_random_bytes_as_base64(tmpdir):
    make_repo(tmpdir)

    stdout, stderr, rcode = run("bw pw -b foo", path=str(tmpdir))
    assert stdout == b"rt+Dgv0yA10DS3ux94mmtEg+isChTJvgkfklzmWkvyg=\n"
    assert stderr == b""
    assert rcode == 0


def test_random_bytes_as_base64_length(tmpdir):
    make_repo(tmpdir)

    stdout, stderr, rcode = run("bw pw -b -l 1 foo", path=str(tmpdir))
    assert stdout == b"rg==\n"
    assert stderr == b""
    assert rcode == 0