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:
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