commit 657e228f2233a439f4b57aba9098289c0bf5c81c
parent 1c272647cc57dfd95d2f8c277a61f87d2bf3b471
Author: kyle <kyle@getaddrinfo.net>
Date: Sat, 21 Nov 2015 19:17:55 -0700
tests: add new list request test
- pretty basic, adds new device, then some new lists, and then requests them
- check that what we send is what we get back
- also regex out ascii space separated strings, like list names
- update some other expected output caused by this
Diffstat:
6 files changed, 80 insertions(+), 6 deletions(-)
diff --git a/tests/list_request_basic/Makefile b/tests/list_request_basic/Makefile
@@ -0,0 +1 @@
+include ../test.mk
diff --git a/tests/list_request_basic/server.log.good b/tests/list_request_basic/server.log.good
@@ -0,0 +1,19 @@
+new connection
+added new device <phone_num> <base64>
+<string>
+adding first list member devid = <base64>
+list fingerprint = <base64>
+<string>
+adding first list member devid = <base64>
+list fingerprint = <base64>
+<string>
+adding first list member devid = <base64>
+list fingerprint = <base64>
+gathering lists for <base64>
+found list <string> <base64>
+found member <base64>
+found list <string> <base64>
+found member <base64>
+found list <string> <base64>
+found member <base64>
+disconnected!
diff --git a/tests/list_request_basic/test.pl b/tests/list_request_basic/test.pl
@@ -0,0 +1,50 @@
+#!/usr/bin/perl -I../
+use strict;
+use warnings;
+use test;
+
+# this test:
+# - gets a new device id
+# - creates some new lists
+# - requests all lists
+# - checks that what's received is what was sent
+
+my $phone_num = "4038675309";
+my $sock = new_socket();
+send_msg($sock, $msg_num{new_device}, $phone_num);
+my (undef, $device_id, undef) = recv_msg($sock);
+
+my %list_id_map;
+for my $name ("new list 1", "new list 2", "new list 3") {
+ send_msg($sock, $msg_num{new_list}, "$device_id\0$name");
+ my (undef, $data, undef) = recv_msg($sock);
+ my ($id, $name, $member) = split("\0", $data);
+ # save this for verification later
+ $list_id_map{$name} = $id;
+}
+
+send_msg($sock, $msg_num{list_request}, $device_id);
+my ($type, $list_data, $length) = recv_msg($sock);
+
+if ($type != $msg_num{list_request}) {
+ fail "got response type $type, expected $msg_num{list_request}"
+}
+
+my ($direct, $indirect) = split("\0\0", $list_data);
+fail "got indirect lists, expected none" if (length($indirect) != 0);
+
+for my $l (split("\0", $direct)) {
+ my ($name, $id, @members) = split(":", $l);
+ unless ($name && $id && @members) {
+ fail "response didn't send at least 3 fields";
+ }
+ if ($list_id_map{$name} ne $id) {
+ fail "recevied list id '$id' different than sent '$list_id_map{$name}'!";
+ }
+ if (@members != 1) {
+ fail "expected 1 list member, got " . scalar @members . "\n";
+ }
+ if ($members[0] ne $phone_num) {
+ fail "unexpected list member $members[0]";
+ }
+}
diff --git a/tests/new_list/server.log.good b/tests/new_list/server.log.good
@@ -1,6 +1,6 @@
new connection
added new device <phone_num> <base64>
-'this is a new list'
+<string>
adding first list member devid = <base64>
list fingerprint = <base64>
disconnected!
diff --git a/tests/test.mk b/tests/test.mk
@@ -1,8 +1,12 @@
+test:
+ perl test.pl
+
diff:
- # remove header, phone numbers and base64 strings from server.log
- sed -i -e "s/.*: //" -e "s/'[0-9]*'/<phone_num>/g" \
+ # remove header, phone numbers, base64 and strings from server.log
+ sed -i -e "s/.*: //" \
+ -e "s/'[0-9]*'/<phone_num>/g" \
-e "s/'[a-zA-Z0-9/+]*'/<base64>/g" \
- server.log
+ -e "s/'[a-zA-Z0-9 ]*'/<string>/g" server.log
diff -u server.log.good server.log
clean:
diff --git a/tests/two_lists_same_name/server.log.good b/tests/two_lists_same_name/server.log.good
@@ -1,9 +1,9 @@
new connection
added new device <phone_num> <base64>
-'this is a new list'
+<string>
adding first list member devid = <base64>
list fingerprint = <base64>
-'this is a new list'
+<string>
adding first list member devid = <base64>
list fingerprint = <base64>
disconnected!