about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2014-01-18 22:45:24 +0000
committerJames Booth <boothj5@gmail.com>2014-01-18 22:45:24 +0000
commit21f0bd04a8a994dc71e45b8d4c8e98dcc225c68a (patch)
tree924081f386d86a007214878bdcc38b3ff7cdd2a3
parent0ee6c7a6f1aff74c25821c8559998721f0b3b772 (diff)
downloadprofani-tty-21f0bd04a8a994dc71e45b8d4c8e98dcc225c68a.tar.gz
Added cmd_connect test for repeated server property
-rw-r--r--src/command/commands.c13
-rw-r--r--tests/test_cmd_connect.c19
-rw-r--r--tests/test_cmd_connect.h1
-rw-r--r--tests/testsuite.c1
4 files changed, 30 insertions, 4 deletions
diff --git a/src/command/commands.c b/src/command/commands.c
index 71ab2ca7..6c3f6874 100644
--- a/src/command/commands.c
+++ b/src/command/commands.c
@@ -79,7 +79,7 @@ cmd_connect(gchar **args, struct cmd_help_t help)
         // parse options
         char *altdomain = NULL;
         int port = 0;
-        gboolean altdomain_set = FALSE;
+        gboolean server_set = FALSE;
         gboolean port_set = FALSE;
         if (opt1 != NULL) {
             if (opt1val == NULL) {
@@ -89,7 +89,7 @@ cmd_connect(gchar **args, struct cmd_help_t help)
             }
             if (strcmp(opt1, "server") == 0) {
                 altdomain = opt1val;
-                altdomain_set = TRUE;
+                server_set = TRUE;
             } else if (strcmp(opt1, "port") == 0) {
                 if (_strtoi(opt1val, &port, 1, 65535) != 0) {
                     port = 0;
@@ -105,18 +105,23 @@ cmd_connect(gchar **args, struct cmd_help_t help)
             }
 
             if (opt2 != NULL) {
+                if (server_set && strcmp("server", opt2) == 0) {
+                    cons_show("Usage: %s", help.usage);
+                    cons_show("");
+                    return TRUE;
+                }
                 if (opt2val == NULL) {
                     cons_show("Usage: %s", help.usage);
                     cons_show("");
                     return TRUE;
                 }
                 if (strcmp(opt2, "server") == 0) {
-                    if (altdomain_set) {
+                    if (server_set) {
                         cons_show("Usage: %s", help.usage);
                         return TRUE;
                     }
                     altdomain = opt2val;
-                    altdomain_set = TRUE;
+                    server_set = TRUE;
                 } else if (strcmp(opt2, "port") == 0) {
                     if (port_set) {
                         cons_show("Usage: %s", help.usage);
diff --git a/tests/test_cmd_connect.c b/tests/test_cmd_connect.c
index 479e59f2..5f907e26 100644
--- a/tests/test_cmd_connect.c
+++ b/tests/test_cmd_connect.c
@@ -200,6 +200,25 @@ void cmd_connect_shows_message_when_port_contains_chars(void **state)
     free(help);
 }
 
+void cmd_connect_shows_usage_when_server_provided_twice(void **state)
+{
+    stub_ui_ask_password();
+    mock_cons_show();
+    CommandHelp *help = malloc(sizeof(CommandHelp));
+    help->usage = "some usage";
+    gchar *args[] = { "user@server.org", "server", "server1", "server", "server2", NULL };
+
+    mock_connection_status(JABBER_DISCONNECTED);
+
+    expect_cons_show("Usage: some usage");
+    expect_cons_show("");
+
+    gboolean result = cmd_connect(args, *help);
+    assert_true(result);
+
+    free(help);
+}
+
 void cmd_connect_when_no_account(void **state)
 {
     mock_cons_show();
diff --git a/tests/test_cmd_connect.h b/tests/test_cmd_connect.h
index 93ea923f..52f26ce3 100644
--- a/tests/test_cmd_connect.h
+++ b/tests/test_cmd_connect.h
@@ -21,3 +21,4 @@ void cmd_connect_shows_message_when_port_contains_chars(void **state);
 void cmd_connect_with_server_when_provided(void **state);
 void cmd_connect_with_port_when_provided(void **state);
 void cmd_connect_with_server_and_port_when_provided(void **state);
+void cmd_connect_shows_usage_when_server_provided_twice(void **state);
diff --git a/tests/testsuite.c b/tests/testsuite.c
index b1d80390..a483846e 100644
--- a/tests/testsuite.c
+++ b/tests/testsuite.c
@@ -190,6 +190,7 @@ int main(int argc, char* argv[]) {
         unit_test(cmd_connect_with_server_when_provided),
         unit_test(cmd_connect_with_port_when_provided),
         unit_test(cmd_connect_with_server_and_port_when_provided),
+        unit_test(cmd_connect_shows_usage_when_server_provided_twice),
 
         unit_test(cmd_rooms_shows_message_when_disconnected),
         unit_test(cmd_rooms_shows_message_when_disconnecting),