about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorMichael Vetter <jubalh@iodoru.org>2019-02-22 13:38:06 +0100
committerGitHub <noreply@github.com>2019-02-22 13:38:06 +0100
commit681e5de523178ce78965e37fa0665cd69f30ed72 (patch)
treee4b8a94a3679ad9c74f2dfbe10612f0a8e89eb18
parent6034b833be41909982b0d2bdac0a1d8499ad8e76 (diff)
parent5b7f9dffbc62a3af2e9663f32c34d27adee319b3 (diff)
downloadprofani-tty-681e5de523178ce78965e37fa0665cd69f30ed72.tar.gz
Merge pull request #1033 from philipflohr/master
Fix broken support for case-sensitive account names
-rw-r--r--src/command/cmd_funcs.c8
-rw-r--r--tests/unittests/test_cmd_connect.c32
-rw-r--r--tests/unittests/test_cmd_connect.h3
-rw-r--r--tests/unittests/unittests.c5
4 files changed, 35 insertions, 13 deletions
diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c
index 6cdd40fb..d280e6c8 100644
--- a/src/command/cmd_funcs.c
+++ b/src/command/cmd_funcs.c
@@ -386,12 +386,11 @@ cmd_connect(ProfWin *window, const char *const command, gchar **args)
         }
     }
 
-    char *lower = g_utf8_strdown(user, -1);
     char *jid;
     g_free(def);
 
     // connect with account
-    ProfAccount *account = accounts_get_account(lower);
+    ProfAccount *account = accounts_get_account(user);
     if (account) {
         // override account options with connect options
         if (altdomain != NULL)
@@ -414,7 +413,7 @@ cmd_connect(ProfWin *window, const char *const command, gchar **args)
                 account->password = NULL;
             } else {
                 cons_show("Error evaluating password, see logs for details.");
-                g_free(lower);
+                g_free(user);
                 account_free(account);
                 return TRUE;
             }
@@ -432,7 +431,7 @@ cmd_connect(ProfWin *window, const char *const command, gchar **args)
 
     // connect with JID
     } else {
-        jid = strdup(lower);
+        jid = g_utf8_strdown(user, -1);
         char *passwd = ui_ask_password();
         conn_status = cl_ev_connect_jid(jid, passwd, altdomain, port, tls_policy);
         free(passwd);
@@ -444,7 +443,6 @@ cmd_connect(ProfWin *window, const char *const command, gchar **args)
     }
 
     options_destroy(options);
-    g_free(lower);
     free(jid);
 
     return TRUE;
diff --git a/tests/unittests/test_cmd_connect.c b/tests/unittests/test_cmd_connect.c
index b2511183..c7331483 100644
--- a/tests/unittests/test_cmd_connect.c
+++ b/tests/unittests/test_cmd_connect.c
@@ -89,29 +89,49 @@ void cmd_connect_fail_message(void **state)
     assert_true(result);
 }
 
-void cmd_connect_lowercases_argument(void **state)
+void cmd_connect_lowercases_argument_with_no_account(void **state)
 {
     gchar *args[] = { "USER@server.ORG", NULL };
 
     will_return(connection_get_status, JABBER_DISCONNECTED);
 
-    expect_string(accounts_get_account, name, "user@server.org");
+    expect_string(accounts_get_account, name, "USER@server.ORG");
     will_return(accounts_get_account, NULL);
 
     will_return(ui_ask_password, strdup("password"));
 
     expect_cons_show("Connecting as user@server.org");
 
-    expect_any(session_connect_with_details, jid);
-    expect_any(session_connect_with_details, passwd);
-    expect_any(session_connect_with_details, altdomain);
-    expect_any(session_connect_with_details, port);
+    expect_string(session_connect_with_details, jid, "user@server.org");
+    expect_string(session_connect_with_details, passwd, "password");
+    expect_value(session_connect_with_details, altdomain, NULL);
+    expect_value(session_connect_with_details, port, 0);
     will_return(session_connect_with_details, JABBER_CONNECTING);
 
     gboolean result = cmd_connect(NULL, CMD_CONNECT, args);
     assert_true(result);
 }
 
+void cmd_connect_lowercases_argument_with_account(void **state)
+{
+gchar *args[] = { "Jabber_org", NULL };
+    ProfAccount *account = account_new("Jabber_org", "me@jabber.org", "password", NULL,
+        TRUE, NULL, 0, NULL, NULL, NULL, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+
+    will_return(connection_get_status, JABBER_DISCONNECTED);
+
+    expect_any(accounts_get_account, name);
+    will_return(accounts_get_account, account);
+
+    expect_cons_show("Connecting with account Jabber_org as me@jabber.org");
+
+    expect_memory(session_connect_with_account, account, account, sizeof(account));
+    will_return(session_connect_with_account, JABBER_CONNECTING);
+
+    gboolean result = cmd_connect(NULL, CMD_CONNECT, args);
+    assert_true(result);
+}
+
 void cmd_connect_asks_password_when_not_in_account(void **state)
 {
     gchar *args[] = { "jabber_org", NULL };
diff --git a/tests/unittests/test_cmd_connect.h b/tests/unittests/test_cmd_connect.h
index ad27a0a5..c9c01c9a 100644
--- a/tests/unittests/test_cmd_connect.h
+++ b/tests/unittests/test_cmd_connect.h
@@ -5,7 +5,8 @@ void cmd_connect_shows_message_when_undefined(void **state);
 void cmd_connect_when_no_account(void **state);
 void cmd_connect_with_altdomain_when_provided(void **state);
 void cmd_connect_fail_message(void **state);
-void cmd_connect_lowercases_argument(void **state);
+void cmd_connect_lowercases_argument_with_no_account(void **state);
+void cmd_connect_lowercases_argument_with_account(void **state);
 void cmd_connect_asks_password_when_not_in_account(void **state);
 void cmd_connect_shows_message_when_connecting_with_account(void **state);
 void cmd_connect_connects_with_account(void **state);
diff --git a/tests/unittests/unittests.c b/tests/unittests/unittests.c
index ac2894a5..86d0ac62 100644
--- a/tests/unittests/unittests.c
+++ b/tests/unittests/unittests.c
@@ -244,7 +244,10 @@ int main(int argc, char* argv[]) {
         unit_test_setup_teardown(cmd_connect_fail_message,
             load_preferences,
             close_preferences),
-        unit_test_setup_teardown(cmd_connect_lowercases_argument,
+        unit_test_setup_teardown(cmd_connect_lowercases_argument_with_account,
+            load_preferences,
+            close_preferences),
+        unit_test_setup_teardown(cmd_connect_lowercases_argument_with_no_account,
             load_preferences,
             close_preferences),
         unit_test_setup_teardown(cmd_connect_asks_password_when_not_in_account,