commit 84581b16d2f381f2060b99b1121d012969912511
parent 93aa4a2ec5876f42e7e6f5962a93cb30c5fcb537
Author: kyle <kyle@0x30.net>
Date: Tue, 12 Jan 2016 23:51:18 -0700
tests: add new test to leave a list your not in
- makes sure that leaving an otherwise valid list that your not in doesn't work
Diffstat:
4 files changed, 33 insertions(+), 0 deletions(-)
diff --git a/server/sl b/server/sl
@@ -312,6 +312,7 @@ sub msg_list_leave {
$log->print("device '$device_id' has been removed from list '$list_id'\n");
} else {
$log->print("tried to leave a list the user was not in for device '$device_id' and list '$list_id'\n");
+ return "err\0the client was not a member of the list";
}
$$sth{check_list_member}->finish();
diff --git a/server/tests/leave_list_your_not_in/Makefile b/server/tests/leave_list_your_not_in/Makefile
@@ -0,0 +1 @@
+include ../test.mk
diff --git a/server/tests/leave_list_your_not_in/server.log.good b/server/tests/leave_list_your_not_in/server.log.good
@@ -0,0 +1,14 @@
+new connection (pid = <digits>)
+ssl ok, ver = 'TLSv1_2' cipher = 'ECDHE-RSA-AES128-SHA256'
+device_add: success, <digits>:<base64> os <base64>
+list_leave: device <base64>
+list_leave: list <base64>
+list_leave: tried to leave a list the user was not in for device <base64> and list <base64>
+disconnected!
+new connection (pid = <digits>)
+ssl ok, ver = 'TLSv1_2' cipher = 'ECDHE-RSA-AES128-SHA256'
+device_add: success, <digits>:<base64> os <base64>
+list_add: <string>
+list_add: adding first member devid = <base64>
+list_add: fingerprint = <base64>
+disconnected!
diff --git a/server/tests/leave_list_your_not_in/test.pl b/server/tests/leave_list_your_not_in/test.pl
@@ -0,0 +1,17 @@
+#!/usr/bin/perl -I../
+use strict;
+use warnings;
+use client;
+use test;
+
+# Send a leave_list message that contains a valid list id but the requesting
+# device is not currently a member of.
+
+my $A = client->new();
+my $B = client->new();
+
+$A->list_add('only a can see this list');
+
+# Who knows how B got this list id, but he did
+$B->list_leave($A->lists(0)->{'id'}, 'err');
+fail_msg_ne 'the client was not a member of the list', $B->get_error();