summaryrefslogtreecommitdiff
path: root/test/message.test
blob: e31711699f924bcc30d41c039e9eaa7e19db5f73 (plain)
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
test DirectMessage:
	spawn as p1
	spawn as p2
	send "create-identity Device1 Owner1" to p1
	send "create-identity Device2 Owner2" to p2
	send "start-server" to p1
	send "start-server" to p2

	expect from p1:
		/peer ([0-9]+) addr ${p2.node.ip} 29665/ capture peer1_2
		/peer $peer1_2 id Device2 Owner2/

	expect from p2:
		/peer ([0-9]+) addr ${p1.node.ip} 29665/ capture peer2_1
		/peer $peer2_1 id Device1 Owner1/

	with p1:
		send "dm-list-peer $peer1_2"
		expect /dm-list-done/

	# Send messages to peers

	for i in [1..2]:
		send "dm-send-peer $peer1_2 hello$i" to p1
		expect /dm-received from Owner1 text hello$i/ from p2

	for i in [1..2]:
		send "dm-send-peer $peer2_1 hi$i" to p2
		expect /dm-received from Owner2 text hi$i/ from p1

	for i in [3..4]:
		send "dm-send-peer $peer1_2 hello$i" to p1
		expect /dm-received from Owner1 text hello$i/ from p2
		send "dm-send-peer $peer2_1 hi$i" to p2
		expect /dm-received from Owner2 text hi$i/ from p1

	# Create contacts

	local:
		send "contact-request $peer1_2" to p1
		expect /contact-request $peer2_1 ([0-9]*)/ from p2 capture code2
		expect /contact-response $peer1_2 ([0-9]*)/ from p1 capture code1
		guard (code1 == code2)

	send "contact-accept $peer1_2" to p1
	send "contact-accept $peer2_1" to p2
	expect /contact-request-done $peer2_1/ from p2
	expect /contact-response-done $peer1_2/ from p1

	send "contact-list" to p1
	expect from p1:
		/contact-list-item ([a-z0-9#]+) Owner2 Owner2/ capture c1_2
		/contact-list-(.*)/ capture done1_1

	send "contact-list" to p2
	expect from p2:
		/contact-list-item ([a-z0-9#]+) Owner1 Owner1/ capture c2_1
		/contact-list-(.*)/ capture done1_2

	# Send messages to contacts

	for i in [1..2]:
		send "dm-send-contact $c1_2 hello_c_$i" to p1
		expect /dm-received from Owner1 text hello_c_$i/ from p2

	for i in [1..2]:
		send "dm-send-contact $c2_1 hi_c_$i" to p2
		expect /dm-received from Owner2 text hi_c_$i/ from p1

	for i in [3..4]:
		send "dm-send-contact $c1_2 hello_c_$i" to p1
		expect /dm-received from Owner1 text hello_c_$i/ from p2
		send "dm-send-contact $c2_1 hi_c_$i" to p2
		expect /dm-received from Owner2 text hi_c_$i/ from p1

	send "dm-list-contact $c1_2" to p1
	send "dm-list-contact $c2_1" to p2
	for p in [p1, p2]:
		with p:
			for i in [1..4]:
				expect /dm-list-item from Owner1 text hello_c_$i/
				expect /dm-list-item from Owner2 text hi_c_$i/
			for i in [1..4]:
				expect /dm-list-item from Owner1 text hello$i/
				expect /dm-list-item from Owner2 text hi$i/
			expect /dm-list-(.*)/ capture done
			guard (done == "done")

	# Reload message history

	with p1:
		send "stop-server"
		expect /stop-server-done/
		send "start-server"

		send "contact-list"
		expect:
			/contact-list-item $c1_2 Owner2 Owner2/
			/contact-list-(.*)/ capture done
		guard (done == "done")

	send "dm-list-contact $c1_2" to p1
	send "dm-list-contact $c2_1" to p2
	for p in [p1, p2]:
		with p:
			for i in [1..4]:
				expect /dm-list-item from Owner1 text hello_c_$i/
				expect /dm-list-item from Owner2 text hi_c_$i/
			for i in [1..4]:
				expect /dm-list-item from Owner1 text hello$i/
				expect /dm-list-item from Owner2 text hi$i/
			expect /dm-list-(.*)/ capture done
			guard (done == "done")