shlist

share and manage lists between multiple people
Log | Files | Refs

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:
Atests/list_request_basic/Makefile | 1+
Atests/list_request_basic/server.log.good | 19+++++++++++++++++++
Atests/list_request_basic/test.pl | 50++++++++++++++++++++++++++++++++++++++++++++++++++
Mtests/new_list/server.log.good | 2+-
Mtests/test.mk | 10+++++++---
Mtests/two_lists_same_name/server.log.good | 4++--
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!