commit 63b929e0d6648206b2284f28762aec2e3452376c
parent e5a3bee46bd3b010d3389d6cc048fed185279fc8
Author: kyle <kyle@0x30.net>
Date: Sat, 16 Jan 2016 10:26:28 -0700
tests: add new zero_payload test
- test sends a 0 sized payload to all message types
- depending on the message type, we get back 1 of 2 possible errors
Diffstat:
3 files changed, 45 insertions(+), 0 deletions(-)
diff --git a/server/tests/zero_payload/Makefile b/server/tests/zero_payload/Makefile
@@ -0,0 +1 @@
+include ../test.mk
diff --git a/server/tests/zero_payload/server.log.good b/server/tests/zero_payload/server.log.good
@@ -0,0 +1,13 @@
+new connection (pid = <digits>)
+ssl ok, ver = 'TLSv1_2' cipher = 'ECDHE-RSA-AES128-SHA256'
+device_add: got 0 fields, expected 2
+friend_add: got 0 fields, expected 2
+friend_delete: got 0 fields, expected 2
+list_add: got 0 fields, expected 4
+list_join: got 0 fields, expected 2
+list_leave: got 0 fields, expected 2
+lists_get: unknown device <digits>
+lists_get_other: unknown device <digits>
+list_items_get: got 0 fields, expected 2
+list_item_add: got 0 fields, expected 1
+disconnected!
diff --git a/server/tests/zero_payload/test.pl b/server/tests/zero_payload/test.pl
@@ -0,0 +1,31 @@
+#!/usr/bin/perl -I../
+use strict;
+use warnings;
+use client;
+use test;
+
+require '../msgs.pl';
+our (@msg_str);
+
+# Create new device, turn off automatic device_add
+my $A = client->new(1);
+
+# Send size zero payload to all message types
+for (@msg_str) {
+ $A->set_msg_type($_);
+ $A->send_msg('');
+ my $response = $A->recv_msg();
+
+ my ($status, $err_str) = split("\0", $response, 2);
+ fail "unexpected status '$status'" if ($status ne 'err');
+
+ # Depending on the number of expected arguments, an empty message can be
+ # either the wrong number of arguments (because no '\0' was sent) or an
+ # unknown device id (for messages expecting 1 argument)
+ my $good1 = 'the wrong number of message arguments were sent';
+ my $good2 = 'the client sent an unknown device id';
+
+ next if ($err_str eq $good1 || $err_str eq $good2);
+
+ fail "expected either '$good1' or '$good2', instead got '$err_str'";
+}