mirror of
https://github.com/profanity-im/profanity.git
synced 2025-01-03 14:57:42 -05:00
Merge branch 'master' into otr
Conflicts: src/command/commands.c
This commit is contained in:
commit
95d08db292
@ -43,7 +43,7 @@ core_sources = \
|
|||||||
src/otr.c src/otr.h
|
src/otr.c src/otr.h
|
||||||
|
|
||||||
test_sources = \
|
test_sources = \
|
||||||
src/contact.c src/contact.h src/log.c src/common.c \
|
src/contact.c src/contact.h src/common.c \
|
||||||
src/log.h src/profanity.c src/common.h \
|
src/log.h src/profanity.c src/common.h \
|
||||||
src/profanity.h src/chat_session.c \
|
src/profanity.h src/chat_session.c \
|
||||||
src/chat_session.h src/muc.c src/muc.h src/jid.h src/jid.c \
|
src/chat_session.h src/muc.c src/muc.h src/jid.h src/jid.c \
|
||||||
@ -61,12 +61,16 @@ test_sources = \
|
|||||||
src/config/accounts.h \
|
src/config/accounts.h \
|
||||||
src/config/preferences.c src/config/preferences.h \
|
src/config/preferences.c src/config/preferences.h \
|
||||||
src/config/theme.c src/config/theme.h \
|
src/config/theme.c src/config/theme.h \
|
||||||
|
src/otr.c src/otr.h \
|
||||||
tests/ui/mock_ui.c \
|
tests/ui/mock_ui.c \
|
||||||
tests/xmpp/mock_xmpp.c \
|
tests/xmpp/mock_xmpp.c \
|
||||||
|
tests/log/mock_log.c \
|
||||||
tests/config/mock_accounts.c \
|
tests/config/mock_accounts.c \
|
||||||
tests/test_autocomplete.c \
|
tests/test_autocomplete.c \
|
||||||
tests/test_common.c \
|
tests/test_common.c \
|
||||||
tests/test_command.c \
|
tests/test_cmd_connect.c \
|
||||||
|
tests/test_cmd_account.c \
|
||||||
|
tests/test_cmd_rooms.c \
|
||||||
tests/test_history.c \
|
tests/test_history.c \
|
||||||
tests/test_jid.c \
|
tests/test_jid.c \
|
||||||
tests/test_parser.c \
|
tests/test_parser.c \
|
||||||
|
@ -45,7 +45,6 @@
|
|||||||
#include "xmpp/xmpp.h"
|
#include "xmpp/xmpp.h"
|
||||||
#include "xmpp/bookmark.h"
|
#include "xmpp/bookmark.h"
|
||||||
|
|
||||||
static char * _ask_password(void);
|
|
||||||
static void _update_presence(const resource_presence_t presence,
|
static void _update_presence(const resource_presence_t presence,
|
||||||
const char * const show, gchar **args);
|
const char * const show, gchar **args);
|
||||||
static gboolean _cmd_set_boolean_preference(gchar *arg, struct cmd_help_t help,
|
static gboolean _cmd_set_boolean_preference(gchar *arg, struct cmd_help_t help,
|
||||||
@ -74,19 +73,15 @@ cmd_connect(gchar **args, struct cmd_help_t help)
|
|||||||
|
|
||||||
ProfAccount *account = accounts_get_account(lower);
|
ProfAccount *account = accounts_get_account(lower);
|
||||||
if (account != NULL) {
|
if (account != NULL) {
|
||||||
if (account->resource != NULL) {
|
jid = accounts_create_full_jid(account);
|
||||||
jid = create_fulljid(account->jid, account->resource);
|
|
||||||
} else {
|
|
||||||
jid = strdup(account->jid);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (account->password == NULL) {
|
if (account->password == NULL) {
|
||||||
account->password = _ask_password();
|
account->password = ui_ask_password();
|
||||||
}
|
}
|
||||||
cons_show("Connecting with account %s as %s", account->name, jid);
|
cons_show("Connecting with account %s as %s", account->name, jid);
|
||||||
conn_status = jabber_connect_with_account(account);
|
conn_status = jabber_connect_with_account(account);
|
||||||
|
accounts_free_account(account);
|
||||||
} else {
|
} else {
|
||||||
char *passwd = _ask_password();
|
char *passwd = ui_ask_password();
|
||||||
jid = strdup(lower);
|
jid = strdup(lower);
|
||||||
cons_show("Connecting as %s", jid);
|
cons_show("Connecting as %s", jid);
|
||||||
conn_status = jabber_connect_with_details(jid, passwd, altdomain);
|
conn_status = jabber_connect_with_details(jid, passwd, altdomain);
|
||||||
@ -99,7 +94,6 @@ cmd_connect(gchar **args, struct cmd_help_t help)
|
|||||||
log_debug("Connection attempt for %s failed", jid);
|
log_debug("Connection attempt for %s failed", jid);
|
||||||
}
|
}
|
||||||
|
|
||||||
accounts_free_account(account);
|
|
||||||
free(jid);
|
free(jid);
|
||||||
|
|
||||||
result = TRUE;
|
result = TRUE;
|
||||||
@ -2267,20 +2261,6 @@ cmd_otr(gchar **args, struct cmd_help_t help)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 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
|
// helper function for status change commands
|
||||||
static void
|
static void
|
||||||
_update_presence(const resource_presence_t resource_presence,
|
_update_presence(const resource_presence_t resource_presence,
|
||||||
|
@ -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
|
void
|
||||||
accounts_free_account(ProfAccount *account)
|
accounts_free_account(ProfAccount *account)
|
||||||
{
|
{
|
||||||
|
@ -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,
|
gint accounts_get_priority_for_presence_type(const char * const account_name,
|
||||||
resource_presence_t presence_type);
|
resource_presence_t presence_type);
|
||||||
void accounts_clear_password(const char * const account_name);
|
void accounts_clear_password(const char * const account_name);
|
||||||
|
char * accounts_create_full_jid(ProfAccount *account);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1330,6 +1330,19 @@ ui_win_unread(int index)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
ui_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;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_ui_draw_win_title(void)
|
_ui_draw_win_title(void)
|
||||||
{
|
{
|
||||||
|
@ -80,6 +80,7 @@ char * ui_recipient(int index);
|
|||||||
void ui_close_win(int index);
|
void ui_close_win(int index);
|
||||||
gboolean ui_win_exists(int index);
|
gboolean ui_win_exists(int index);
|
||||||
int ui_win_unread(int index);
|
int ui_win_unread(int index);
|
||||||
|
char * ui_ask_password(void);
|
||||||
|
|
||||||
// ui events
|
// ui events
|
||||||
void ui_contact_typing(const char * const from);
|
void ui_contact_typing(const char * const from);
|
||||||
|
@ -41,7 +41,11 @@ char * accounts_find_enabled(char *prefix)
|
|||||||
|
|
||||||
void accounts_reset_all_search(void) {}
|
void accounts_reset_all_search(void) {}
|
||||||
void accounts_reset_enabled_search(void) {}
|
void accounts_reset_enabled_search(void) {}
|
||||||
void accounts_add(const char *jid, const char *altdomain) {}
|
|
||||||
|
void accounts_add(const char *jid, const char *altdomain)
|
||||||
|
{
|
||||||
|
check_expected(jid);
|
||||||
|
}
|
||||||
|
|
||||||
gchar** accounts_get_list(void)
|
gchar** accounts_get_list(void)
|
||||||
{
|
{
|
||||||
@ -50,35 +54,55 @@ gchar** accounts_get_list(void)
|
|||||||
|
|
||||||
ProfAccount* accounts_get_account(const char * const name)
|
ProfAccount* accounts_get_account(const char * const name)
|
||||||
{
|
{
|
||||||
|
check_expected(name);
|
||||||
return (ProfAccount *)mock();
|
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)
|
gboolean accounts_enable(const char * const name)
|
||||||
{
|
{
|
||||||
|
check_expected(name);
|
||||||
return (gboolean)mock();
|
return (gboolean)mock();
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean accounts_disable(const char * const name)
|
gboolean accounts_disable(const char * const name)
|
||||||
{
|
{
|
||||||
|
check_expected(name);
|
||||||
return (gboolean)mock();
|
return (gboolean)mock();
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean accounts_rename(const char * const account_name,
|
gboolean accounts_rename(const char * const account_name,
|
||||||
const char * const new_name)
|
const char * const new_name)
|
||||||
{
|
{
|
||||||
|
check_expected(account_name);
|
||||||
|
check_expected(new_name);
|
||||||
return (gboolean)mock();
|
return (gboolean)mock();
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean accounts_account_exists(const char * const account_name)
|
gboolean accounts_account_exists(const char * const account_name)
|
||||||
{
|
{
|
||||||
|
check_expected(account_name);
|
||||||
return (gboolean)mock();
|
return (gboolean)mock();
|
||||||
}
|
}
|
||||||
|
|
||||||
void accounts_set_jid(const char * const account_name, const char * const value) {}
|
void accounts_set_jid(const char * const account_name, const char * const value)
|
||||||
|
{
|
||||||
|
check_expected(account_name);
|
||||||
|
check_expected(value);
|
||||||
|
}
|
||||||
|
|
||||||
void accounts_set_server(const char * const account_name, const char * const value) {}
|
void accounts_set_server(const char * const account_name, const char * const value) {}
|
||||||
void accounts_set_resource(const char * const account_name, const char * const value) {}
|
|
||||||
|
void accounts_set_resource(const char * const account_name, const char * const value)
|
||||||
|
{
|
||||||
|
check_expected(account_name);
|
||||||
|
check_expected(value);
|
||||||
|
}
|
||||||
|
|
||||||
void accounts_set_password(const char * const account_name, const char * const value) {}
|
void accounts_set_password(const char * const account_name, const char * const value) {}
|
||||||
void accounts_set_muc_service(const char * const account_name, const char * const value) {}
|
void accounts_set_muc_service(const char * const account_name, const char * const value) {}
|
||||||
void accounts_set_muc_nick(const char * const account_name, const char * const value) {}
|
void accounts_set_muc_nick(const char * const account_name, const char * const value) {}
|
||||||
@ -110,3 +134,8 @@ gint accounts_get_priority_for_presence_type(const char * const account_name,
|
|||||||
|
|
||||||
void accounts_clear_password(const char * const account_name) {}
|
void accounts_clear_password(const char * const account_name) {}
|
||||||
|
|
||||||
|
char * accounts_create_full_jid(ProfAccount *account)
|
||||||
|
{
|
||||||
|
return (char *)mock();
|
||||||
|
}
|
||||||
|
|
||||||
|
59
tests/log/mock_log.c
Normal file
59
tests/log/mock_log.c
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
/*
|
||||||
|
* mock_log.c
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012, 2013 James Booth <boothj5@gmail.com>
|
||||||
|
*
|
||||||
|
* This file is part of Profanity.
|
||||||
|
*
|
||||||
|
* Profanity is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Profanity is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Profanity. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <glib.h>
|
||||||
|
#include <setjmp.h>
|
||||||
|
#include <cmocka.h>
|
||||||
|
|
||||||
|
#include "log.h"
|
||||||
|
|
||||||
|
void log_init(log_level_t filter) {}
|
||||||
|
log_level_t log_get_filter(void)
|
||||||
|
{
|
||||||
|
return (log_level_t)mock();
|
||||||
|
}
|
||||||
|
void log_close(void) {}
|
||||||
|
void log_debug(const char * const msg, ...) {}
|
||||||
|
void log_info(const char * const msg, ...) {}
|
||||||
|
void log_warning(const char * const msg, ...) {}
|
||||||
|
void log_error(const char * const msg, ...) {}
|
||||||
|
void log_msg(log_level_t level, const char * const area,
|
||||||
|
const char * const msg) {}
|
||||||
|
|
||||||
|
log_level_t log_level_from_string(char *log_level)
|
||||||
|
{
|
||||||
|
return (log_level_t)mock();
|
||||||
|
}
|
||||||
|
|
||||||
|
void chat_log_init(void) {}
|
||||||
|
void chat_log_chat(const gchar * const login, gchar *other,
|
||||||
|
const gchar * const msg, chat_log_direction_t direction, GTimeVal *tv_stamp) {}
|
||||||
|
void chat_log_close(void) {}
|
||||||
|
GSList * chat_log_get_previous(const gchar * const login,
|
||||||
|
const gchar * const recipient, GSList *history)
|
||||||
|
{
|
||||||
|
return (GSList *)mock();
|
||||||
|
}
|
||||||
|
|
||||||
|
void groupchat_log_init(void) {}
|
||||||
|
void groupchat_log_chat(const gchar * const login, const gchar * const room,
|
||||||
|
const gchar * const nick, const gchar * const msg) {}
|
522
tests/test_cmd_account.c
Normal file
522
tests/test_cmd_account.c
Normal file
@ -0,0 +1,522 @@
|
|||||||
|
#include <stdarg.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <setjmp.h>
|
||||||
|
#include <cmocka.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <glib.h>
|
||||||
|
|
||||||
|
#include "xmpp/xmpp.h"
|
||||||
|
#include "ui/ui.h"
|
||||||
|
#include "command/commands.h"
|
||||||
|
|
||||||
|
void cmd_account_shows_usage_when_not_connected_and_no_args(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
help->usage = "some usage";
|
||||||
|
gchar *args[] = { NULL };
|
||||||
|
|
||||||
|
will_return(jabber_get_connection_status, JABBER_DISCONNECTED);
|
||||||
|
|
||||||
|
expect_string(cons_show, output, "Usage: some usage");
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_shows_account_when_connected_and_no_args(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
ProfAccount *account = malloc(sizeof(ProfAccount));
|
||||||
|
gchar *args[] = { NULL };
|
||||||
|
|
||||||
|
will_return(jabber_get_connection_status, JABBER_CONNECTED);
|
||||||
|
|
||||||
|
will_return(jabber_get_account_name, "account_name");
|
||||||
|
|
||||||
|
expect_any(accounts_get_account, name);
|
||||||
|
will_return(accounts_get_account, account);
|
||||||
|
|
||||||
|
expect_memory(cons_show_account, account, account, sizeof(ProfAccount));
|
||||||
|
|
||||||
|
expect_any(accounts_free_account, account);
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
free(account);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_list_shows_accounts(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
gchar *args[] = { "list", NULL };
|
||||||
|
|
||||||
|
gchar **accounts = malloc(sizeof(gchar *) * 4);
|
||||||
|
accounts[0] = strdup("account1");
|
||||||
|
accounts[1] = strdup("account2");
|
||||||
|
accounts[2] = strdup("account3");
|
||||||
|
accounts[3] = NULL;
|
||||||
|
|
||||||
|
will_return(accounts_get_list, accounts);
|
||||||
|
|
||||||
|
expect_memory(cons_show_account_list, accounts, accounts, sizeof(accounts));
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_show_shows_usage_when_no_arg(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
help->usage = "some usage";
|
||||||
|
gchar *args[] = { "show", NULL };
|
||||||
|
|
||||||
|
expect_string(cons_show, output, "Usage: some usage");
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_show_shows_message_when_account_does_not_exist(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
gchar *args[] = { "show", "account_name", NULL };
|
||||||
|
|
||||||
|
expect_any(accounts_get_account, name);
|
||||||
|
will_return(accounts_get_account, NULL);
|
||||||
|
|
||||||
|
expect_string(cons_show, output, "No such account.");
|
||||||
|
expect_string(cons_show, output, "");
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_show_shows_message_when_account_exists(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
gchar *args[] = { "show", "account_name", NULL };
|
||||||
|
ProfAccount *account = malloc(sizeof(ProfAccount));
|
||||||
|
|
||||||
|
expect_any(accounts_get_account, name);
|
||||||
|
will_return(accounts_get_account, account);
|
||||||
|
|
||||||
|
expect_memory(cons_show_account, account, account, sizeof(ProfAccount));
|
||||||
|
|
||||||
|
expect_any(accounts_free_account, account);
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_add_shows_usage_when_no_arg(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
help->usage = "some usage";
|
||||||
|
gchar *args[] = { "add", NULL };
|
||||||
|
|
||||||
|
expect_string(cons_show, output, "Usage: some usage");
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_add_adds_account(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
gchar *args[] = { "add", "new_account", NULL };
|
||||||
|
|
||||||
|
expect_string(accounts_add, jid, "new_account");
|
||||||
|
|
||||||
|
expect_any_count(cons_show, output, 2);
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_add_shows_message(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
gchar *args[] = { "add", "new_account", NULL };
|
||||||
|
|
||||||
|
expect_any(accounts_add, jid);
|
||||||
|
|
||||||
|
expect_string(cons_show, output, "Account created.");;
|
||||||
|
expect_string(cons_show, output, "");
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_enable_shows_usage_when_no_arg(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
help->usage = "some usage";
|
||||||
|
gchar *args[] = { "enable", NULL };
|
||||||
|
|
||||||
|
expect_string(cons_show, output, "Usage: some usage");
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_enable_enables_account(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
gchar *args[] = { "enable", "account_name", NULL };
|
||||||
|
|
||||||
|
expect_string(accounts_enable, name, "account_name");
|
||||||
|
will_return(accounts_enable, TRUE);
|
||||||
|
|
||||||
|
expect_any_count(cons_show, output, 2);
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_enable_shows_message_when_enabled(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
gchar *args[] = { "enable", "account_name", NULL };
|
||||||
|
|
||||||
|
expect_any(accounts_enable, name);
|
||||||
|
will_return(accounts_enable, TRUE);
|
||||||
|
|
||||||
|
expect_string(cons_show, output, "Account enabled.");
|
||||||
|
expect_string(cons_show, output, "");
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_enable_shows_message_when_account_doesnt_exist(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
gchar *args[] = { "enable", "account_name", NULL };
|
||||||
|
|
||||||
|
expect_any(accounts_enable, name);
|
||||||
|
will_return(accounts_enable, FALSE);
|
||||||
|
|
||||||
|
expect_string(cons_show, output, "No such account: account_name");
|
||||||
|
expect_string(cons_show, output, "");
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_disable_shows_usage_when_no_arg(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
help->usage = "some usage";
|
||||||
|
gchar *args[] = { "disable", NULL };
|
||||||
|
|
||||||
|
expect_string(cons_show, output, "Usage: some usage");
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_disable_disables_account(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
gchar *args[] = { "disable", "account_name", NULL };
|
||||||
|
|
||||||
|
expect_string(accounts_disable, name, "account_name");
|
||||||
|
will_return(accounts_disable, TRUE);
|
||||||
|
|
||||||
|
expect_any_count(cons_show, output, 2);
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_disable_shows_message_when_disabled(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
gchar *args[] = { "disable", "account_name", NULL };
|
||||||
|
|
||||||
|
expect_any(accounts_disable, name);
|
||||||
|
will_return(accounts_disable, TRUE);
|
||||||
|
|
||||||
|
expect_string(cons_show, output, "Account disabled.");
|
||||||
|
expect_string(cons_show, output, "");
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_disable_shows_message_when_account_doesnt_exist(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
gchar *args[] = { "disable", "account_name", NULL };
|
||||||
|
|
||||||
|
expect_any(accounts_disable, name);
|
||||||
|
will_return(accounts_disable, FALSE);
|
||||||
|
|
||||||
|
expect_string(cons_show, output, "No such account: account_name");
|
||||||
|
expect_string(cons_show, output, "");
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_rename_shows_usage_when_no_args(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
help->usage = "some usage";
|
||||||
|
gchar *args[] = { "rename", NULL };
|
||||||
|
|
||||||
|
expect_string(cons_show, output, "Usage: some usage");
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_rename_shows_usage_when_one_arg(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
help->usage = "some usage";
|
||||||
|
gchar *args[] = { "rename", "original_name", NULL };
|
||||||
|
|
||||||
|
expect_string(cons_show, output, "Usage: some usage");
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_rename_renames_account(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
gchar *args[] = { "rename", "original_name", "new_name", NULL };
|
||||||
|
|
||||||
|
expect_string(accounts_rename, account_name, "original_name");
|
||||||
|
expect_string(accounts_rename, new_name, "new_name");
|
||||||
|
will_return(accounts_rename, TRUE);
|
||||||
|
|
||||||
|
expect_any_count(cons_show, output, 2);
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_rename_shows_message_when_renamed(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
gchar *args[] = { "rename", "original_name", "new_name", NULL };
|
||||||
|
|
||||||
|
expect_any(accounts_rename, account_name);
|
||||||
|
expect_any(accounts_rename, new_name);
|
||||||
|
will_return(accounts_rename, TRUE);
|
||||||
|
|
||||||
|
expect_string(cons_show, output, "Account renamed.");
|
||||||
|
expect_string(cons_show, output, "");
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_rename_shows_message_when_not_renamed(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
gchar *args[] = { "rename", "original_name", "new_name", NULL };
|
||||||
|
|
||||||
|
expect_any(accounts_rename, account_name);
|
||||||
|
expect_any(accounts_rename, new_name);
|
||||||
|
will_return(accounts_rename, FALSE);
|
||||||
|
|
||||||
|
expect_string(cons_show, output, "Either account original_name doesn't exist, or account new_name already exists.");
|
||||||
|
expect_string(cons_show, output, "");
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_set_shows_usage_when_no_args(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
help->usage = "some usage";
|
||||||
|
gchar *args[] = { "set", NULL };
|
||||||
|
|
||||||
|
expect_string(cons_show, output, "Usage: some usage");
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_set_shows_usage_when_one_arg(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
help->usage = "some usage";
|
||||||
|
gchar *args[] = { "set", "a_account", NULL };
|
||||||
|
|
||||||
|
expect_string(cons_show, output, "Usage: some usage");
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_set_shows_usage_when_two_args(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
help->usage = "some usage";
|
||||||
|
gchar *args[] = { "set", "a_account", "a_property", NULL };
|
||||||
|
|
||||||
|
expect_string(cons_show, output, "Usage: some usage");
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_set_checks_account_exists(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
help->usage = "some usage";
|
||||||
|
gchar *args[] = { "set", "a_account", "a_property", "a_value", NULL };
|
||||||
|
|
||||||
|
expect_string(accounts_account_exists, account_name, "a_account");
|
||||||
|
will_return(accounts_account_exists, FALSE);
|
||||||
|
|
||||||
|
expect_any_count(cons_show, output, 2);
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_set_shows_message_when_account_doesnt_exist(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
help->usage = "some usage";
|
||||||
|
gchar *args[] = { "set", "a_account", "a_property", "a_value", NULL };
|
||||||
|
|
||||||
|
expect_any(accounts_account_exists, account_name);
|
||||||
|
will_return(accounts_account_exists, FALSE);
|
||||||
|
|
||||||
|
expect_string(cons_show, output, "Account a_account doesn't exist");
|
||||||
|
expect_string(cons_show, output, "");
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_set_jid_shows_message_for_malformed_jid(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
help->usage = "some usage";
|
||||||
|
gchar *args[] = { "set", "a_account", "jid", "@malformed", NULL };
|
||||||
|
|
||||||
|
expect_any(accounts_account_exists, account_name);
|
||||||
|
will_return(accounts_account_exists, TRUE);
|
||||||
|
|
||||||
|
expect_string(cons_show, output, "Malformed jid: @malformed");
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_set_jid_sets_barejid(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
help->usage = "some usage";
|
||||||
|
gchar *args[] = { "set", "a_account", "jid", "a_local@a_domain/a_resource", NULL };
|
||||||
|
|
||||||
|
expect_any(accounts_account_exists, account_name);
|
||||||
|
will_return(accounts_account_exists, TRUE);
|
||||||
|
|
||||||
|
expect_string(accounts_set_jid, account_name, "a_account");
|
||||||
|
expect_string(accounts_set_jid, value, "a_local@a_domain");
|
||||||
|
|
||||||
|
expect_string(cons_show, output, "Updated jid for account a_account: a_local@a_domain");
|
||||||
|
|
||||||
|
expect_any(accounts_set_resource, account_name);
|
||||||
|
expect_any(accounts_set_resource, value);
|
||||||
|
|
||||||
|
expect_any(cons_show, output);
|
||||||
|
expect_string(cons_show, output, "");
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_account_set_jid_sets_resource(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
help->usage = "some usage";
|
||||||
|
gchar *args[] = { "set", "a_account", "jid", "a_local@a_domain/a_resource", NULL };
|
||||||
|
|
||||||
|
expect_any(accounts_account_exists, account_name);
|
||||||
|
will_return(accounts_account_exists, TRUE);
|
||||||
|
|
||||||
|
expect_any(accounts_set_jid, account_name);
|
||||||
|
expect_any(accounts_set_jid, value);
|
||||||
|
|
||||||
|
expect_any(cons_show, output);
|
||||||
|
|
||||||
|
expect_string(accounts_set_resource, account_name, "a_account");
|
||||||
|
expect_string(accounts_set_resource, value, "a_resource");
|
||||||
|
|
||||||
|
expect_string(cons_show, output, "Updated resource for account a_account: a_resource");
|
||||||
|
expect_string(cons_show, output, "");
|
||||||
|
|
||||||
|
gboolean result = cmd_account(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
30
tests/test_cmd_account.h
Normal file
30
tests/test_cmd_account.h
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
void cmd_account_shows_usage_when_not_connected_and_no_args(void **state);
|
||||||
|
void cmd_account_shows_account_when_connected_and_no_args(void **state);
|
||||||
|
void cmd_account_list_shows_accounts(void **state);
|
||||||
|
void cmd_account_show_shows_usage_when_no_arg(void **state);
|
||||||
|
void cmd_account_show_shows_message_when_account_does_not_exist(void **state);
|
||||||
|
void cmd_account_show_shows_message_when_account_exists(void **state);
|
||||||
|
void cmd_account_add_shows_usage_when_no_arg(void **state);
|
||||||
|
void cmd_account_add_adds_account(void **state);
|
||||||
|
void cmd_account_add_shows_message(void **state);
|
||||||
|
void cmd_account_enable_shows_usage_when_no_arg(void **state);
|
||||||
|
void cmd_account_enable_enables_account(void **state);
|
||||||
|
void cmd_account_enable_shows_message_when_enabled(void **state);
|
||||||
|
void cmd_account_enable_shows_message_when_account_doesnt_exist(void **state);
|
||||||
|
void cmd_account_disable_shows_usage_when_no_arg(void **state);
|
||||||
|
void cmd_account_disable_disables_account(void **state);
|
||||||
|
void cmd_account_disable_shows_message_when_disabled(void **state);
|
||||||
|
void cmd_account_disable_shows_message_when_account_doesnt_exist(void **state);
|
||||||
|
void cmd_account_rename_shows_usage_when_no_args(void **state);
|
||||||
|
void cmd_account_rename_shows_usage_when_one_arg(void **state);
|
||||||
|
void cmd_account_rename_renames_account(void **state);
|
||||||
|
void cmd_account_rename_shows_message_when_renamed(void **state);
|
||||||
|
void cmd_account_rename_shows_message_when_not_renamed(void **state);
|
||||||
|
void cmd_account_set_shows_usage_when_no_args(void **state);
|
||||||
|
void cmd_account_set_shows_usage_when_one_arg(void **state);
|
||||||
|
void cmd_account_set_shows_usage_when_two_args(void **state);
|
||||||
|
void cmd_account_set_checks_account_exists(void **state);
|
||||||
|
void cmd_account_set_shows_message_when_account_doesnt_exist(void **state);
|
||||||
|
void cmd_account_set_jid_shows_message_for_malformed_jid(void **state);
|
||||||
|
void cmd_account_set_jid_sets_barejid(void **state);
|
||||||
|
void cmd_account_set_jid_sets_resource(void **state);
|
261
tests/test_cmd_connect.c
Normal file
261
tests/test_cmd_connect.c
Normal file
@ -0,0 +1,261 @@
|
|||||||
|
#include <stdarg.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <setjmp.h>
|
||||||
|
#include <cmocka.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <glib.h>
|
||||||
|
|
||||||
|
#include "xmpp/xmpp.h"
|
||||||
|
#include "ui/ui.h"
|
||||||
|
#include "command/commands.h"
|
||||||
|
|
||||||
|
static void test_with_connection_status(jabber_conn_status_t status)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
|
||||||
|
will_return(jabber_get_connection_status, status);
|
||||||
|
expect_string(cons_show, output, "You are either connected already, or a login is in process.");
|
||||||
|
|
||||||
|
gboolean result = cmd_connect(NULL, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_connect_shows_message_when_disconnecting(void **state)
|
||||||
|
{
|
||||||
|
test_with_connection_status(JABBER_DISCONNECTING);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_connect_shows_message_when_connecting(void **state)
|
||||||
|
{
|
||||||
|
test_with_connection_status(JABBER_CONNECTING);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_connect_shows_message_when_connected(void **state)
|
||||||
|
{
|
||||||
|
test_with_connection_status(JABBER_CONNECTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_connect_shows_message_when_undefined(void **state)
|
||||||
|
{
|
||||||
|
test_with_connection_status(JABBER_UNDEFINED);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_connect_when_no_account(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
gchar *args[] = { "user@server.org", NULL };
|
||||||
|
|
||||||
|
will_return(jabber_get_connection_status, JABBER_DISCONNECTED);
|
||||||
|
|
||||||
|
expect_string(accounts_get_account, name, "user@server.org");
|
||||||
|
will_return(accounts_get_account, NULL);
|
||||||
|
|
||||||
|
will_return(ui_ask_password, strdup("password"));
|
||||||
|
|
||||||
|
expect_string(cons_show, output, "Connecting as user@server.org");
|
||||||
|
|
||||||
|
expect_string(jabber_connect_with_details, jid, "user@server.org");
|
||||||
|
expect_string(jabber_connect_with_details, passwd, "password");
|
||||||
|
expect_any(jabber_connect_with_details, altdomain);
|
||||||
|
will_return(jabber_connect_with_details, JABBER_CONNECTING);
|
||||||
|
|
||||||
|
gboolean result = cmd_connect(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_connect_with_altdomain_when_provided(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
gchar *args[] = { "user@server.org", "altdomain" };
|
||||||
|
|
||||||
|
will_return(jabber_get_connection_status, JABBER_DISCONNECTED);
|
||||||
|
|
||||||
|
expect_any(accounts_get_account, name);
|
||||||
|
will_return(accounts_get_account, NULL);
|
||||||
|
|
||||||
|
will_return(ui_ask_password, strdup("password"));
|
||||||
|
|
||||||
|
expect_any(cons_show, output);
|
||||||
|
|
||||||
|
expect_any(jabber_connect_with_details, jid);
|
||||||
|
expect_any(jabber_connect_with_details, passwd);
|
||||||
|
expect_string(jabber_connect_with_details, altdomain, "altdomain");
|
||||||
|
will_return(jabber_connect_with_details, JABBER_CONNECTING);
|
||||||
|
|
||||||
|
gboolean result = cmd_connect(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_connect_fail_message(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
gchar *args[] = { "user@server.org", NULL };
|
||||||
|
|
||||||
|
will_return(jabber_get_connection_status, JABBER_DISCONNECTED);
|
||||||
|
|
||||||
|
expect_any(accounts_get_account, name);
|
||||||
|
will_return(accounts_get_account, NULL);
|
||||||
|
|
||||||
|
will_return(ui_ask_password, strdup("password"));
|
||||||
|
|
||||||
|
expect_any(cons_show, output);
|
||||||
|
|
||||||
|
expect_any(jabber_connect_with_details, jid);
|
||||||
|
expect_any(jabber_connect_with_details, passwd);
|
||||||
|
expect_any(jabber_connect_with_details, altdomain);
|
||||||
|
will_return(jabber_connect_with_details, JABBER_DISCONNECTED);
|
||||||
|
|
||||||
|
expect_string(cons_show_error, output, "Connection attempt for user@server.org failed.");
|
||||||
|
|
||||||
|
gboolean result = cmd_connect(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_connect_lowercases_argument(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
gchar *args[] = { "USER@server.ORG", NULL };
|
||||||
|
|
||||||
|
will_return(jabber_get_connection_status, JABBER_DISCONNECTED);
|
||||||
|
|
||||||
|
expect_string(accounts_get_account, name, "user@server.org");
|
||||||
|
will_return(accounts_get_account, NULL);
|
||||||
|
|
||||||
|
will_return(ui_ask_password, strdup("password"));
|
||||||
|
|
||||||
|
expect_any(cons_show, output);
|
||||||
|
|
||||||
|
expect_any(jabber_connect_with_details, jid);
|
||||||
|
expect_any(jabber_connect_with_details, passwd);
|
||||||
|
expect_any(jabber_connect_with_details, altdomain);
|
||||||
|
will_return(jabber_connect_with_details, JABBER_CONNECTING);
|
||||||
|
|
||||||
|
gboolean result = cmd_connect(args, *help);
|
||||||
|
assert_true(result);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_connect_asks_password_when_not_in_account(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
gchar *args[] = { "jabber_org", NULL };
|
||||||
|
ProfAccount *account = malloc(sizeof(ProfAccount));
|
||||||
|
account->password = NULL;
|
||||||
|
|
||||||
|
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"));
|
||||||
|
|
||||||
|
will_return(ui_ask_password, strdup("password"));
|
||||||
|
|
||||||
|
expect_any(cons_show, output);
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
free(account);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_connect_shows_message_when_connecting_with_account(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
gchar *args[] = { "jabber_org", NULL };
|
||||||
|
ProfAccount *account = malloc(sizeof(ProfAccount));
|
||||||
|
account->password = "password";
|
||||||
|
account->name = "jabber_org";
|
||||||
|
|
||||||
|
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_string(cons_show, output, "Connecting with account jabber_org as user@jabber.org/laptop");
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
free(help);
|
||||||
|
free(account);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_connect_connects_with_account(void **state)
|
||||||
|
{
|
||||||
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
gchar *args[] = { "jabber_org", NULL };
|
||||||
|
ProfAccount *account = malloc(sizeof(ProfAccount));
|
||||||
|
account->password = "password";
|
||||||
|
account->name = "jabber_org";
|
||||||
|
|
||||||
|
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_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);
|
||||||
|
}
|
12
tests/test_cmd_connect.h
Normal file
12
tests/test_cmd_connect.h
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
void cmd_connect_shows_message_when_disconnecting(void **state);
|
||||||
|
void cmd_connect_shows_message_when_connecting(void **state);
|
||||||
|
void cmd_connect_shows_message_when_connected(void **state);
|
||||||
|
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_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);
|
@ -12,10 +12,10 @@
|
|||||||
static void test_with_connection_status(jabber_conn_status_t status)
|
static void test_with_connection_status(jabber_conn_status_t status)
|
||||||
{
|
{
|
||||||
CommandHelp *help = malloc(sizeof(CommandHelp));
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
|
|
||||||
will_return(jabber_get_connection_status, status);
|
will_return(jabber_get_connection_status, status);
|
||||||
expect_string(cons_show, msg, "You are not currently connected.");
|
expect_string(cons_show, output, "You are not currently connected.");
|
||||||
|
|
||||||
gboolean result = cmd_rooms(NULL, *help);
|
gboolean result = cmd_rooms(NULL, *help);
|
||||||
assert_true(result);
|
assert_true(result);
|
||||||
|
|
||||||
@ -52,13 +52,14 @@ void cmd_rooms_uses_account_default_when_no_arg(void **state)
|
|||||||
CommandHelp *help = malloc(sizeof(CommandHelp));
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
ProfAccount *account = malloc(sizeof(ProfAccount));
|
ProfAccount *account = malloc(sizeof(ProfAccount));
|
||||||
account->muc_service = "default_conf_server";
|
account->muc_service = "default_conf_server";
|
||||||
gchar *args[] = { NULL };
|
gchar *args[] = { NULL };
|
||||||
|
|
||||||
will_return(jabber_get_connection_status, JABBER_CONNECTED);
|
will_return(jabber_get_connection_status, JABBER_CONNECTED);
|
||||||
will_return(jabber_get_account_name, "account_name");
|
will_return(jabber_get_account_name, "account_name");
|
||||||
|
expect_string(accounts_get_account, name, "account_name");
|
||||||
will_return(accounts_get_account, account);
|
will_return(accounts_get_account, account);
|
||||||
expect_string(iq_room_list_request, conferencejid, "default_conf_server");
|
expect_string(iq_room_list_request, conferencejid, "default_conf_server");
|
||||||
|
|
||||||
gboolean result = cmd_rooms(args, *help);
|
gboolean result = cmd_rooms(args, *help);
|
||||||
|
|
||||||
assert_true(result);
|
assert_true(result);
|
||||||
@ -67,14 +68,14 @@ void cmd_rooms_uses_account_default_when_no_arg(void **state)
|
|||||||
free(account);
|
free(account);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmd_arg_used_when_passed(void **state)
|
void cmd_rooms_arg_used_when_passed(void **state)
|
||||||
{
|
{
|
||||||
CommandHelp *help = malloc(sizeof(CommandHelp));
|
CommandHelp *help = malloc(sizeof(CommandHelp));
|
||||||
gchar *args[] = { "conf_server_arg" };
|
gchar *args[] = { "conf_server_arg" };
|
||||||
|
|
||||||
will_return(jabber_get_connection_status, JABBER_CONNECTED);
|
will_return(jabber_get_connection_status, JABBER_CONNECTED);
|
||||||
expect_string(iq_room_list_request, conferencejid, "conf_server_arg");
|
expect_string(iq_room_list_request, conferencejid, "conf_server_arg");
|
||||||
|
|
||||||
gboolean result = cmd_rooms(args, *help);
|
gboolean result = cmd_rooms(args, *help);
|
||||||
|
|
||||||
assert_true(result);
|
assert_true(result);
|
@ -4,4 +4,4 @@ void cmd_rooms_shows_message_when_connecting(void **state);
|
|||||||
void cmd_rooms_shows_message_when_started(void **state);
|
void cmd_rooms_shows_message_when_started(void **state);
|
||||||
void cmd_rooms_shows_message_when_undefined(void **state);
|
void cmd_rooms_shows_message_when_undefined(void **state);
|
||||||
void cmd_rooms_uses_account_default_when_no_arg(void **state);
|
void cmd_rooms_uses_account_default_when_no_arg(void **state);
|
||||||
void cmd_arg_used_when_passed(void **state);
|
void cmd_rooms_arg_used_when_passed(void **state);
|
@ -5,7 +5,9 @@
|
|||||||
|
|
||||||
#include "test_autocomplete.h"
|
#include "test_autocomplete.h"
|
||||||
#include "test_common.h"
|
#include "test_common.h"
|
||||||
#include "test_command.h"
|
#include "test_cmd_connect.h"
|
||||||
|
#include "test_cmd_account.h"
|
||||||
|
#include "test_cmd_rooms.h"
|
||||||
#include "test_history.h"
|
#include "test_history.h"
|
||||||
#include "test_jid.h"
|
#include "test_jid.h"
|
||||||
#include "test_parser.h"
|
#include "test_parser.h"
|
||||||
@ -13,14 +15,6 @@
|
|||||||
|
|
||||||
int main(int argc, char* argv[]) {
|
int main(int argc, char* argv[]) {
|
||||||
const UnitTest tests[] = {
|
const UnitTest tests[] = {
|
||||||
unit_test(cmd_rooms_shows_message_when_disconnected),
|
|
||||||
unit_test(cmd_rooms_shows_message_when_disconnecting),
|
|
||||||
unit_test(cmd_rooms_shows_message_when_connecting),
|
|
||||||
unit_test(cmd_rooms_shows_message_when_started),
|
|
||||||
unit_test(cmd_rooms_shows_message_when_undefined),
|
|
||||||
unit_test(cmd_rooms_uses_account_default_when_no_arg),
|
|
||||||
unit_test(cmd_arg_used_when_passed),
|
|
||||||
|
|
||||||
unit_test(replace_one_substr),
|
unit_test(replace_one_substr),
|
||||||
unit_test(replace_one_substr_beginning),
|
unit_test(replace_one_substr_beginning),
|
||||||
unit_test(replace_one_substr_end),
|
unit_test(replace_one_substr_end),
|
||||||
@ -165,6 +159,58 @@ int main(int argc, char* argv[]) {
|
|||||||
unit_test(find_twice_returns_second_when_two_match),
|
unit_test(find_twice_returns_second_when_two_match),
|
||||||
unit_test(find_five_times_finds_fifth),
|
unit_test(find_five_times_finds_fifth),
|
||||||
unit_test(find_twice_returns_first_when_two_match_and_reset),
|
unit_test(find_twice_returns_first_when_two_match_and_reset),
|
||||||
|
|
||||||
|
unit_test(cmd_connect_shows_message_when_disconnecting),
|
||||||
|
unit_test(cmd_connect_shows_message_when_connecting),
|
||||||
|
unit_test(cmd_connect_shows_message_when_connected),
|
||||||
|
unit_test(cmd_connect_shows_message_when_undefined),
|
||||||
|
unit_test(cmd_connect_when_no_account),
|
||||||
|
unit_test(cmd_connect_with_altdomain_when_provided),
|
||||||
|
unit_test(cmd_connect_fail_message),
|
||||||
|
unit_test(cmd_connect_lowercases_argument),
|
||||||
|
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),
|
||||||
|
unit_test(cmd_rooms_shows_message_when_connecting),
|
||||||
|
unit_test(cmd_rooms_shows_message_when_started),
|
||||||
|
unit_test(cmd_rooms_shows_message_when_undefined),
|
||||||
|
unit_test(cmd_rooms_uses_account_default_when_no_arg),
|
||||||
|
unit_test(cmd_rooms_arg_used_when_passed),
|
||||||
|
|
||||||
|
unit_test(cmd_account_shows_usage_when_not_connected_and_no_args),
|
||||||
|
unit_test(cmd_account_shows_account_when_connected_and_no_args),
|
||||||
|
unit_test(cmd_account_list_shows_accounts),
|
||||||
|
unit_test(cmd_account_show_shows_usage_when_no_arg),
|
||||||
|
unit_test(cmd_account_show_shows_message_when_account_does_not_exist),
|
||||||
|
unit_test(cmd_account_show_shows_message_when_account_exists),
|
||||||
|
unit_test(cmd_account_add_shows_usage_when_no_arg),
|
||||||
|
unit_test(cmd_account_add_adds_account),
|
||||||
|
unit_test(cmd_account_add_shows_message),
|
||||||
|
unit_test(cmd_account_enable_shows_usage_when_no_arg),
|
||||||
|
unit_test(cmd_account_enable_enables_account),
|
||||||
|
unit_test(cmd_account_enable_shows_message_when_enabled),
|
||||||
|
unit_test(cmd_account_enable_shows_message_when_account_doesnt_exist),
|
||||||
|
unit_test(cmd_account_disable_shows_usage_when_no_arg),
|
||||||
|
unit_test(cmd_account_disable_disables_account),
|
||||||
|
unit_test(cmd_account_disable_shows_message_when_disabled),
|
||||||
|
unit_test(cmd_account_disable_shows_message_when_account_doesnt_exist),
|
||||||
|
unit_test(cmd_account_rename_shows_usage_when_no_args),
|
||||||
|
unit_test(cmd_account_rename_shows_usage_when_one_arg),
|
||||||
|
unit_test(cmd_account_rename_renames_account),
|
||||||
|
unit_test(cmd_account_rename_shows_message_when_renamed),
|
||||||
|
unit_test(cmd_account_rename_shows_message_when_not_renamed),
|
||||||
|
unit_test(cmd_account_set_shows_usage_when_no_args),
|
||||||
|
unit_test(cmd_account_set_shows_usage_when_one_arg),
|
||||||
|
unit_test(cmd_account_set_shows_usage_when_two_args),
|
||||||
|
unit_test(cmd_account_set_checks_account_exists),
|
||||||
|
unit_test(cmd_account_set_shows_message_when_account_doesnt_exist),
|
||||||
|
unit_test(cmd_account_set_jid_shows_message_for_malformed_jid),
|
||||||
|
unit_test(cmd_account_set_jid_sets_barejid),
|
||||||
|
unit_test(cmd_account_set_jid_sets_resource),
|
||||||
};
|
};
|
||||||
return run_tests(tests);
|
return run_tests(tests);
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,8 @@
|
|||||||
|
|
||||||
#include "ui/ui.h"
|
#include "ui/ui.h"
|
||||||
|
|
||||||
|
char output[256];
|
||||||
|
|
||||||
// ui startup and control
|
// ui startup and control
|
||||||
void ui_init(void) {}
|
void ui_init(void) {}
|
||||||
void ui_load_colours(void) {}
|
void ui_load_colours(void) {}
|
||||||
@ -173,6 +175,11 @@ gboolean ui_duck_exists(void)
|
|||||||
void ui_tidy_wins(void) {}
|
void ui_tidy_wins(void) {}
|
||||||
void ui_prune_wins(void) {}
|
void ui_prune_wins(void) {}
|
||||||
|
|
||||||
|
char * ui_ask_password(void)
|
||||||
|
{
|
||||||
|
return (char *)mock();
|
||||||
|
}
|
||||||
|
|
||||||
// create windows
|
// create windows
|
||||||
void create_title_bar(void) {}
|
void create_title_bar(void) {}
|
||||||
void create_status_bar(void) {}
|
void create_status_bar(void) {}
|
||||||
@ -191,7 +198,11 @@ void title_bar_draw(void) {}
|
|||||||
// console window actions
|
// console window actions
|
||||||
void cons_show(const char * const msg, ...)
|
void cons_show(const char * const msg, ...)
|
||||||
{
|
{
|
||||||
check_expected(msg);
|
va_list args;
|
||||||
|
va_start(args, msg);
|
||||||
|
vsnprintf(output, sizeof(output), msg, args);
|
||||||
|
check_expected(output);
|
||||||
|
va_end(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cons_about(void) {}
|
void cons_about(void) {}
|
||||||
@ -207,11 +218,25 @@ void cons_show_chat_prefs(void) {}
|
|||||||
void cons_show_log_prefs(void) {}
|
void cons_show_log_prefs(void) {}
|
||||||
void cons_show_presence_prefs(void) {}
|
void cons_show_presence_prefs(void) {}
|
||||||
void cons_show_connection_prefs(void) {}
|
void cons_show_connection_prefs(void) {}
|
||||||
void cons_show_account(ProfAccount *account) {}
|
|
||||||
|
void cons_show_account(ProfAccount *account)
|
||||||
|
{
|
||||||
|
check_expected(account);
|
||||||
|
}
|
||||||
|
|
||||||
void cons_debug(const char * const msg, ...) {}
|
void cons_debug(const char * const msg, ...) {}
|
||||||
void cons_show_time(void) {}
|
void cons_show_time(void) {}
|
||||||
void cons_show_word(const char * const word) {}
|
void cons_show_word(const char * const word) {}
|
||||||
void cons_show_error(const char * const cmd, ...) {}
|
|
||||||
|
void cons_show_error(const char * const cmd, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
va_start(args, cmd);
|
||||||
|
vsnprintf(output, sizeof(output), cmd, args);
|
||||||
|
check_expected(output);
|
||||||
|
va_end(args);
|
||||||
|
}
|
||||||
|
|
||||||
void cons_highlight_show(const char * const cmd) {}
|
void cons_highlight_show(const char * const cmd) {}
|
||||||
void cons_show_contacts(GSList * list) {}
|
void cons_show_contacts(GSList * list) {}
|
||||||
void cons_show_roster(GSList * list) {}
|
void cons_show_roster(GSList * list) {}
|
||||||
@ -225,7 +250,12 @@ void cons_show_login_success(ProfAccount *account) {}
|
|||||||
void cons_show_software_version(const char * const jid,
|
void cons_show_software_version(const char * const jid,
|
||||||
const char * const presence, const char * const name,
|
const char * const presence, const char * const name,
|
||||||
const char * const version, const char * const os) {}
|
const char * const version, const char * const os) {}
|
||||||
void cons_show_account_list(gchar **accounts) {}
|
|
||||||
|
void cons_show_account_list(gchar **accounts)
|
||||||
|
{
|
||||||
|
check_expected(accounts);
|
||||||
|
}
|
||||||
|
|
||||||
void cons_show_room_list(GSList *room, const char * const conference_node) {}
|
void cons_show_room_list(GSList *room, const char * const conference_node) {}
|
||||||
void cons_show_bookmarks(const GList *list) {}
|
void cons_show_bookmarks(const GList *list) {}
|
||||||
void cons_show_disco_items(GSList *items, const char * const jid) {}
|
void cons_show_disco_items(GSList *items, const char * const jid) {}
|
||||||
|
@ -32,11 +32,15 @@ void jabber_init(const int disable_tls) {}
|
|||||||
jabber_conn_status_t jabber_connect_with_details(const char * const jid,
|
jabber_conn_status_t jabber_connect_with_details(const char * const jid,
|
||||||
const char * const passwd, const char * const altdomain)
|
const char * const passwd, const char * const altdomain)
|
||||||
{
|
{
|
||||||
|
check_expected(jid);
|
||||||
|
check_expected(passwd);
|
||||||
|
check_expected(altdomain);
|
||||||
return (jabber_conn_status_t)mock();
|
return (jabber_conn_status_t)mock();
|
||||||
}
|
}
|
||||||
|
|
||||||
jabber_conn_status_t jabber_connect_with_account(const ProfAccount * const account)
|
jabber_conn_status_t jabber_connect_with_account(const ProfAccount * const account)
|
||||||
{
|
{
|
||||||
|
check_expected(account);
|
||||||
return (jabber_conn_status_t)mock();
|
return (jabber_conn_status_t)mock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user