-
Notifications
You must be signed in to change notification settings - Fork 2
/
test_taction.py
85 lines (55 loc) · 2.59 KB
/
test_taction.py
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
import os
import pytest
import bitcoin
import config
from taction import Action
from butypes import Global
from test_tmemberlist import makeTestMemberList
from jvalidate import ValidationError
from test_helpers import bare_session, member_list, member_a, newmember5
zero256="0000000000000000000000000000000000000000000000000000000000000000"
from test_helpers import makeTestAction, member_a
def test1(bare_session):
ml = makeTestMemberList(None)
ml.set_current()
# only formatting of action is tested, not content
a = makeTestAction(author=ml.members[0],
apart =
(ml.hashref()+" proposal-upload file %s by member_b" % zero256))
def test_invalid(bare_session, member_list, member_a, newmember5):
# invalid signature string (not base64)
with pytest.raises(ValidationError):
Action(member_a, "123", "invalidsig\x00")
# valid signature, but wrong address
action_string = "123"
privkey = bitcoin.sha256("invalid")
signature = bitcoin.ecdsa_sign(action_string, privkey)
with pytest.raises(ValidationError):
Action(member_a, action_string, signature)
# invalid action string (no prefix)
action_string = "invalid"
privkey = bitcoin.sha256(member_a.name)
signature = bitcoin.ecdsa_sign(action_string, privkey)
with pytest.raises(ValidationError):
Action(member_a, action_string, signature)
# invalid action string (no member list)
action_string = config.action_prefix+(64*"0")
privkey = bitcoin.sha256(member_a.name)
signature = bitcoin.ecdsa_sign(action_string, privkey)
with pytest.raises(ValidationError):
Action(member_a, action_string, signature)
# invalid action string (member not in current list)
action_string = config.action_prefix+member_list.hashref()
privkey = bitcoin.sha256(newmember5.name)
signature = bitcoin.ecdsa_sign(action_string, privkey)
with pytest.raises(ValidationError):
Action(newmember5, action_string, signature)
def test_invalid_newml(bare_session, member_list, member_a):
newml = makeTestMemberList(Global.current_member_list())
Global.set_current_member_list(newml)
# invalid action string (not current member list)
action_string = config.action_prefix+member_list.hashref()
privkey = bitcoin.sha256(member_a.name)
signature = bitcoin.ecdsa_sign(action_string, privkey)
with pytest.raises(ValidationError):
Action(member_a, action_string, signature)