shlist

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

commit bbf1fc9a37abf9cba8d86bb4b5daf817940ab019
parent 493363821d52a13e1bfe50fdc2b7ba36c22ee022
Author: kyle <kyle@0x30.net>
Date:   Sun, 10 Jan 2016 15:14:24 -0700

tests: test for invalid device ids in singe test

- instead of checking invalid device ids in every message types test, check all
  message types in a single test
- also, server side don't split incoming messages that only expect a single
  field

Diffstat:
Mserver/sl | 12++++++------
Mserver/tests/friend_add/server.log.good | 1-
Mserver/tests/friend_add/test.pl | 6------
Mserver/tests/friend_delete_unit/server.log.good | 1-
Mserver/tests/friend_delete_unit/test.pl | 6------
Aserver/tests/invalid_deviceid/Makefile | 1+
Aserver/tests/invalid_deviceid/server.log.good | 11+++++++++++
Aserver/tests/invalid_deviceid/test.pl | 33+++++++++++++++++++++++++++++++++
Mserver/tests/list_add/server.log.good | 1-
Mserver/tests/list_add/test.pl | 6+-----
Mserver/tests/list_join_unit/server.log.good | 1-
Mserver/tests/list_join_unit/test.pl | 6------
Mserver/tests/list_leave_unit/server.log.good | 1-
Mserver/tests/list_leave_unit/test.pl | 5-----
14 files changed, 52 insertions(+), 39 deletions(-)

diff --git a/server/sl b/server/sl @@ -431,10 +431,10 @@ sub msg_friend_delete { sub msg_lists_get { my ($sth, $msg) = @_; - my ($err, $device_id) = split_fields($msg, 1); - return "err\0$err" if ($err); + # Don't split incoming message as we only take a single argument here. + my $device_id = $msg; - $err = device_id_valid($sth, $device_id); + my $err = device_id_valid($sth, $device_id); return "err\0$err" if ($err); my $devid_fp = fingerprint($device_id); @@ -475,10 +475,10 @@ sub msg_lists_get { sub msg_lists_get_other { my ($sth, $msg) = @_; - my ($err, $device_id) = split_fields($msg, 1); - return "err\0$err" if ($err); + # Don't split incoming message as we only take a single argument here. + my $device_id = $msg; - $err = device_id_valid($sth, $device_id); + my $err = device_id_valid($sth, $device_id); return "err\0$err" if ($err); my $devid_fp = fingerprint($device_id); diff --git a/server/tests/friend_add/server.log.good b/server/tests/friend_add/server.log.good @@ -1,7 +1,6 @@ accepting connections on <ip>:<port> (pid = <digits>) new connection (pid = <digits>) ssl ok, ver = 'TLSv1_2' cipher = 'ECDHE-RSA-AES128-SHA256' -friend_add: unknown device <base64> device_add: success, <digits>:<base64> os <base64> friend_add: <base64> adding <digits> friend_add: <base64> adding <digits> diff --git a/server/tests/friend_add/test.pl b/server/tests/friend_add/test.pl @@ -6,12 +6,6 @@ use client; use test; my $A = client->new(); - -# try adding a friend with an invalid device id -$A->friend_add('12345', 'err'); -fail_msg_ne 'the client sent an unknown device id', $A->get_error(); - -# all verifications after this use a valid device id $A->device_add(rand_phnum()); # first verify that a normal add_friend message succeeds diff --git a/server/tests/friend_delete_unit/server.log.good b/server/tests/friend_delete_unit/server.log.good @@ -1,7 +1,6 @@ accepting connections on <ip>:<port> (pid = <digits>) new connection (pid = <digits>) ssl ok, ver = 'TLSv1_2' cipher = 'ECDHE-RSA-AES128-SHA256' -friend_delete: unknown device <base64> device_add: success, <digits>:<base64> os <base64> friend_delete: tried deleting friend <digits> but they weren't a friend friend_delete: bad friends number <base64> diff --git a/server/tests/friend_delete_unit/test.pl b/server/tests/friend_delete_unit/test.pl @@ -5,12 +5,6 @@ use client; use test; my $A = client->new(); - -# try deleting a friend with an unknown device id -$A->friend_delete('12345', 'err'); -fail_msg_ne 'the client sent an unknown device id', $A->get_error(); - -# register for the next verifications $A->device_add(rand_phnum()); # try deleting someone who is not your friend diff --git a/server/tests/invalid_deviceid/Makefile b/server/tests/invalid_deviceid/Makefile @@ -0,0 +1 @@ +include ../test.mk diff --git a/server/tests/invalid_deviceid/server.log.good b/server/tests/invalid_deviceid/server.log.good @@ -0,0 +1,11 @@ +accepting connections on <ip>:<port> (pid = <digits>) +new connection (pid = <digits>) +ssl ok, ver = 'TLSv1_2' cipher = 'ECDHE-RSA-AES128-SHA256' +friend_add: unknown device <digits> +friend_delete: unknown device <digits> +list_add: unknown device <digits> +list_join: unknown device <digits> +list_leave: unknown device <digits> +lists_get: unknown device <digits> +lists_get_other: unknown device <digits> +disconnected! diff --git a/server/tests/invalid_deviceid/test.pl b/server/tests/invalid_deviceid/test.pl @@ -0,0 +1,33 @@ +#!/usr/bin/perl -I../ +use strict; +use warnings; + +use client; +use test; + +# test that sending invalid device id's results in errors + +my $A = client->new(); +$A->set_device_id(""); + +# for messages that send 2 arguments, send an empty 2nd argument +$A->friend_add('', 'err'); +fail_msg_ne 'the client sent an unknown device id', $A->get_error(); + +$A->friend_delete('', 'err'); +fail_msg_ne 'the client sent an unknown device id', $A->get_error(); + +$A->list_add('', 'err'); +fail_msg_ne 'the client sent an unknown device id', $A->get_error(); + +$A->list_join('', 'err'); +fail_msg_ne 'the client sent an unknown device id', $A->get_error(); + +$A->list_leave('', 'err'); +fail_msg_ne 'the client sent an unknown device id', $A->get_error(); + +$A->lists_get('err'); +fail_msg_ne 'the client sent an unknown device id', $A->get_error(); + +$A->lists_get_other('err'); +fail_msg_ne 'the client sent an unknown device id', $A->get_error(); diff --git a/server/tests/list_add/server.log.good b/server/tests/list_add/server.log.good @@ -1,7 +1,6 @@ accepting connections on <ip>:<port> (pid = <digits>) new connection (pid = <digits>) ssl ok, ver = 'TLSv1_2' cipher = 'ECDHE-RSA-AES128-SHA256' -list_add: unknown device <base64> device_add: success, <digits>:<base64> os <base64> list_add: <string> list_add: adding first member devid = <base64> diff --git a/server/tests/list_add/test.pl b/server/tests/list_add/test.pl @@ -7,13 +7,9 @@ use test; use Data::Dumper; my $A = client->new(); - -# check that sending a list_add message before registering doesn't work -$A->list_add('this is a new list', 'err'); -fail_msg_ne 'the client sent an unknown device id', $A->get_error(); +$A->device_add(rand_phnum()); # make sure normal list_add works -$A->device_add(rand_phnum()); $A->list_add(my $name = 'this is a new list'); my $list = $A->lists(0); diff --git a/server/tests/list_join_unit/server.log.good b/server/tests/list_join_unit/server.log.good @@ -1,7 +1,6 @@ accepting connections on <ip>:<port> (pid = <digits>) new connection (pid = <digits>) ssl ok, ver = 'TLSv1_2' cipher = 'ECDHE-RSA-AES128-SHA256' -list_join: unknown device <base64> device_add: success, <digits>:<base64> os <base64> list_join: unknown list <base64> list_add: <string> diff --git a/server/tests/list_join_unit/test.pl b/server/tests/list_join_unit/test.pl @@ -6,12 +6,6 @@ use client; use test; my $A = client->new(); - -# check that sending a list_join message without registering fails -$A->list_join('aaaa', 'err'); -fail_msg_ne 'the client sent an unknown device id', $A->get_error(); - -# register this client for the next tests $A->device_add(rand_phnum()); # try joining a list that doesn't exist diff --git a/server/tests/list_leave_unit/server.log.good b/server/tests/list_leave_unit/server.log.good @@ -1,7 +1,6 @@ accepting connections on <ip>:<port> (pid = <digits>) new connection (pid = <digits>) ssl ok, ver = 'TLSv1_2' cipher = 'ECDHE-RSA-AES128-SHA256' -list_leave: unknown device <base64> device_add: success, <digits>:<base64> os <base64> list_leave: unknown list <base64> list_leave: unknown list <digits> diff --git a/server/tests/list_leave_unit/test.pl b/server/tests/list_leave_unit/test.pl @@ -6,11 +6,6 @@ use client; use test; my $A = client->new(); - -# send a leave list message with a bad device id -$A->list_leave('aaaa', 'err'); -fail_msg_ne 'the client sent an unknown device id', $A->get_error(); - $A->device_add(); # try leaving a list your not in