From 079ea5304b7bc99b07d2f05b2910ab370023c14d Mon Sep 17 00:00:00 2001 From: James Booth Date: Sun, 15 Dec 2013 19:38:23 +0000 Subject: Moved _ask_password to UI module --- src/command/commands.c | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) (limited to 'src/command/commands.c') diff --git a/src/command/commands.c b/src/command/commands.c index 4b0c5a5c..6c354ec4 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -44,7 +44,6 @@ #include "xmpp/xmpp.h" #include "xmpp/bookmark.h" -static char * _ask_password(void); static void _update_presence(const resource_presence_t presence, const char * const show, gchar **args); static gboolean _cmd_set_boolean_preference(gchar *arg, struct cmd_help_t help, @@ -80,12 +79,12 @@ cmd_connect(gchar **args, struct cmd_help_t help) } if (account->password == NULL) { - account->password = _ask_password(); + account->password = ui_ask_password(); } cons_show("Connecting with account %s as %s", account->name, jid); conn_status = jabber_connect_with_account(account); } else { - char *passwd = _ask_password(); + char *passwd = ui_ask_password(); jid = strdup(lower); cons_show("Connecting as %s", jid); conn_status = jabber_connect_with_details(jid, passwd, altdomain); @@ -2243,19 +2242,6 @@ cmd_xa(gchar **args, struct cmd_help_t help) return TRUE; } -// helper function that asks the user for a password and saves it in passwd -static char * -_ask_password(void) { - char *passwd = malloc(sizeof(char) * (MAX_PASSWORD_SIZE + 1)); - status_bar_get_password(); - status_bar_refresh(); - inp_block(); - inp_get_password(passwd); - inp_non_block(); - - return passwd; -} - // helper function for status change commands static void _update_presence(const resource_presence_t resource_presence, -- cgit 1.4.1-2-gfad0 From 5e739cbfb7763ee926fbeb3cb8bd1d81f943c55e Mon Sep 17 00:00:00 2001 From: James Booth Date: Sun, 15 Dec 2013 20:32:30 +0000 Subject: Moved fulljid logic to accounts --- src/command/commands.c | 7 +------ src/config/accounts.c | 10 ++++++++++ src/config/accounts.h | 1 + tests/config/mock_accounts.c | 4 ++++ 4 files changed, 16 insertions(+), 6 deletions(-) (limited to 'src/command/commands.c') diff --git a/src/command/commands.c b/src/command/commands.c index 6c354ec4..910c57d5 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -72,12 +72,7 @@ cmd_connect(gchar **args, struct cmd_help_t help) ProfAccount *account = accounts_get_account(lower); if (account != NULL) { - if (account->resource != NULL) { - jid = create_fulljid(account->jid, account->resource); - } else { - jid = strdup(account->jid); - } - + jid = accounts_create_full_jid(account); if (account->password == NULL) { account->password = ui_ask_password(); } diff --git a/src/config/accounts.c b/src/config/accounts.c index 0422a991..6431cd9e 100644 --- a/src/config/accounts.c +++ b/src/config/accounts.c @@ -292,6 +292,16 @@ accounts_get_account(const char * const name) } } +char * +accounts_create_full_jid(ProfAccount *account) +{ + if (account->resource != NULL) { + return create_fulljid(account->jid, account->resource); + } else { + return strdup(account->jid); + } +} + void accounts_free_account(ProfAccount *account) { diff --git a/src/config/accounts.h b/src/config/accounts.h index 96289952..caa8e84c 100644 --- a/src/config/accounts.h +++ b/src/config/accounts.h @@ -81,5 +81,6 @@ void accounts_set_priority_all(const char * const account_name, const gint value gint accounts_get_priority_for_presence_type(const char * const account_name, resource_presence_t presence_type); void accounts_clear_password(const char * const account_name); +char * accounts_create_full_jid(ProfAccount *account); #endif diff --git a/tests/config/mock_accounts.c b/tests/config/mock_accounts.c index de83f44a..3174cb35 100644 --- a/tests/config/mock_accounts.c +++ b/tests/config/mock_accounts.c @@ -110,4 +110,8 @@ gint accounts_get_priority_for_presence_type(const char * const account_name, } void accounts_clear_password(const char * const account_name) {} +char * accounts_create_full_jid(ProfAccount *account) +{ + return (char *)mock(); +} -- cgit 1.4.1-2-gfad0 From 6d75ebb8e9ebd292a57adb54ff22cac52b463dbd Mon Sep 17 00:00:00 2001 From: James Booth Date: Sun, 15 Dec 2013 22:00:42 +0000 Subject: Test account free'd after connect --- src/command/commands.c | 2 +- tests/config/mock_accounts.c | 5 ++++- tests/test_cmd_connect.c | 32 ++++++++++++++++++++++++++++++++ tests/test_cmd_connect.h | 1 + tests/testsuite.c | 1 + 5 files changed, 39 insertions(+), 2 deletions(-) (limited to 'src/command/commands.c') diff --git a/src/command/commands.c b/src/command/commands.c index 910c57d5..c48dc1a1 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -78,6 +78,7 @@ cmd_connect(gchar **args, struct cmd_help_t help) } cons_show("Connecting with account %s as %s", account->name, jid); conn_status = jabber_connect_with_account(account); + accounts_free_account(account); } else { char *passwd = ui_ask_password(); jid = strdup(lower); @@ -92,7 +93,6 @@ cmd_connect(gchar **args, struct cmd_help_t help) log_debug("Connection attempt for %s failed", jid); } - accounts_free_account(account); free(jid); result = TRUE; diff --git a/tests/config/mock_accounts.c b/tests/config/mock_accounts.c index e2732acb..960cf211 100644 --- a/tests/config/mock_accounts.c +++ b/tests/config/mock_accounts.c @@ -54,7 +54,10 @@ ProfAccount* accounts_get_account(const char * const name) return (ProfAccount *)mock(); } -void accounts_free_account(ProfAccount *account) {} +void accounts_free_account(ProfAccount *account) +{ + check_expected(account); +} gboolean accounts_enable(const char * const name) { diff --git a/tests/test_cmd_connect.c b/tests/test_cmd_connect.c index 54852803..3625a521 100644 --- a/tests/test_cmd_connect.c +++ b/tests/test_cmd_connect.c @@ -166,6 +166,8 @@ void cmd_connect_asks_password_when_not_in_account(void **state) expect_any(jabber_connect_with_account, account); will_return(jabber_connect_with_account, JABBER_CONNECTING); + expect_any(accounts_free_account, account); + gboolean result = cmd_connect(args, *help); assert_true(result); @@ -193,6 +195,8 @@ void cmd_connect_shows_message_when_connecting_with_account(void **state) expect_any(jabber_connect_with_account, account); will_return(jabber_connect_with_account, JABBER_CONNECTING); + expect_any(accounts_free_account, account); + gboolean result = cmd_connect(args, *help); assert_true(result); @@ -220,10 +224,38 @@ void cmd_connect_connects_with_account(void **state) expect_memory(jabber_connect_with_account, account, account, sizeof(ProfAccount)); will_return(jabber_connect_with_account, JABBER_CONNECTING); + expect_any(accounts_free_account, account); + gboolean result = cmd_connect(args, *help); assert_true(result); free(help); free(account); +} + +void cmd_connect_frees_account_after_connecting(void **state) +{ + CommandHelp *help = malloc(sizeof(CommandHelp)); + gchar *args[] = { "jabber_org", NULL }; + ProfAccount *account = malloc(sizeof(ProfAccount)); + + will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + + expect_any(accounts_get_account, name); + will_return(accounts_get_account, account); + will_return(accounts_create_full_jid, strdup("user@jabber.org/laptop")); + + expect_any(cons_show, output); + + expect_any(jabber_connect_with_account, account); + will_return(jabber_connect_with_account, JABBER_CONNECTING); + + expect_memory(accounts_free_account, account, account, sizeof(ProfAccount)); + + gboolean result = cmd_connect(args, *help); + assert_true(result); + + free(help); + free(account); } diff --git a/tests/test_cmd_connect.h b/tests/test_cmd_connect.h index 967d0652..2ee1a91b 100644 --- a/tests/test_cmd_connect.h +++ b/tests/test_cmd_connect.h @@ -9,3 +9,4 @@ void cmd_connect_lowercases_argument(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); +void cmd_connect_frees_account_after_connecting(void **state); diff --git a/tests/testsuite.c b/tests/testsuite.c index 060fe8b2..ae4ab61e 100644 --- a/tests/testsuite.c +++ b/tests/testsuite.c @@ -25,6 +25,7 @@ int main(int argc, char* argv[]) { unit_test(cmd_connect_asks_password_when_not_in_account), unit_test(cmd_connect_shows_message_when_connecting_with_account), unit_test(cmd_connect_connects_with_account), + unit_test(cmd_connect_frees_account_after_connecting), unit_test(cmd_rooms_shows_message_when_disconnected), unit_test(cmd_rooms_shows_message_when_disconnecting), -- cgit 1.4.1-2-gfad0