about summary refs log tree commit diff stats
path: root/html/077slurp.subx.html
Commit message (Collapse)AuthorAgeFilesLines
* 5582Kartik Agaram2019-08-251-4/+4
|
* 5490Kartik Agaram2019-07-271-2/+2
|
* 5485 - promote SubX to top-levelKartik Agaram2019-07-271-0/+224
'Blame the previous revision' href='/danisanti/profani-tty/blame/tests/test_cmd_join.c?id=d683c49b6c818d1ddb445654b8d11f6f82077a9d'>^
dd1ee18c ^
dd1ee18c ^
fb347855 ^
2af0d38e ^
f3fe1d34 ^
81190251 ^

f3fe1d34 ^

3bb1f124 ^
f3fe1d34 ^


81190251 ^
f3fe1d34 ^
f3fe1d34 ^
















a94814f0 ^

a94814f0 ^

3bb1f124 ^
a94814f0 ^



81190251 ^
a94814f0 ^
a94814f0 ^

baf46c6a ^






baf46c6a ^
6af10696 ^
53fc89f7 ^
baf46c6a ^


3bb1f124 ^
88f423af ^
baf46c6a ^
aa4ffa7e ^





baf46c6a ^
81190251 ^
baf46c6a ^
baf46c6a ^

dd1ee18c ^
f3fe1d34 ^
dd1ee18c ^


dd1ee18c ^
6af10696 ^
53fc89f7 ^
f3fe1d34 ^
dd1ee18c ^
f3fe1d34 ^
3bb1f124 ^
88f423af ^
aa4ffa7e ^


f3fe1d34 ^
aa4ffa7e ^


baf46c6a ^
81190251 ^
f3fe1d34 ^
f3fe1d34 ^
bafc0f25 ^



2c15aba9 ^
bafc0f25 ^
bafc0f25 ^
6af10696 ^
53fc89f7 ^
bafc0f25 ^


3bb1f124 ^
88f423af ^
bafc0f25 ^
aa4ffa7e ^





bafc0f25 ^
81190251 ^
bafc0f25 ^
bafc0f25 ^
15fce2cf ^








22ab2686 ^
6af10696 ^
53fc89f7 ^
15fce2cf ^


3bb1f124 ^
88f423af ^
aa4ffa7e ^


15fce2cf ^
aa4ffa7e ^


15fce2cf ^
81190251 ^
15fce2cf ^
15fce2cf ^
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162








                      

                  
                       
 
                            
 
                              
                     
 

                        

                                                                    
                                               


                                                         
                                                     
                        
















                                                            

                                                                     

                                      
                                                         



                                                                   
                                                     
                        

 






                                                                             
                                                 
                                                                                   
                                                                                                                                   


               
                                                         
                                                        
 





                                                            
 
                                                     
                        

 
                                              
 


                                        
                                                 
                                                                                   
                                                                                                                        
 
               
 
                                                         
                                                        


                                                            
 


                                                   
 
                                                     
                        
 



                                                               
                                         
                                  
                                   
                                                                                   
                                                                                                                                


               
                                                         
                                                        
 





                                                            
 
                                                     
                        
 








                                                       
                                                         
                                                                                   
                                                                                                                                           


               
                                                         
                                                        


                                                            
 


                                                           
 
                                                     
                        
 
#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 "ui/stub_ui.h"

#include "config/accounts.h"

#include "command/cmd_funcs.h"
#include "xmpp/muc.h"

#define CMD_JOIN "/join"

static void test_with_connection_status(jabber_conn_status_t status)
{
    will_return(connection_get_status, status);

    expect_cons_show("You are not currently connected.");

    gboolean result = cmd_join(NULL, CMD_JOIN, NULL);
    assert_true(result);
}

void cmd_join_shows_message_when_disconnecting(void **state)
{
    test_with_connection_status(JABBER_DISCONNECTING);
}

void cmd_join_shows_message_when_connecting(void **state)
{
    test_with_connection_status(JABBER_CONNECTING);
}

void cmd_join_shows_message_when_disconnected(void **state)
{
    test_with_connection_status(JABBER_DISCONNECTED);
}

void cmd_join_shows_error_message_when_invalid_room_jid(void **state)
{
    gchar *args[] = { "//@@/", NULL };

    will_return(connection_get_status, JABBER_CONNECTED);

    expect_cons_show_error("Specified room has incorrect format.");
    expect_cons_show("");

    gboolean result = cmd_join(NULL, CMD_JOIN, args);
    assert_true(result);
}

void cmd_join_uses_account_mucservice_when_no_service_specified(void **state)
{
    char *account_name = "an_account";
    char *room = "room";
    char *nick = "bob";
    char *account_service = "conference.server.org";
    char *expected_room = "room@conference.server.org";
    gchar *args[] = { room, "nick", nick, NULL };
    ProfAccount *account = account_new(account_name, "user@server.org", NULL, NULL,
        TRUE, NULL, 0, "laptop", NULL, NULL, 0, 0, 0, 0, 0, account_service, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);

    muc_init();

    will_return(connection_get_status, JABBER_CONNECTED);
    will_return(session_get_account_name, account_name);

    expect_string(accounts_get_account, name, account_name);
    will_return(accounts_get_account, account);

    expect_string(presence_join_room, room, expected_room);
    expect_string(presence_join_room, nick, nick);
    expect_value(presence_join_room, passwd, NULL);

    gboolean result = cmd_join(NULL, CMD_JOIN, args);
    assert_true(result);
}

void cmd_join_uses_supplied_nick(void **state)
{
    char *account_name = "an_account";
    char *room = "room@conf.server.org";
    char *nick = "bob";
    gchar *args[] = { room, "nick", nick, NULL };
    ProfAccount *account = account_new(account_name, "user@server.org", NULL, NULL,
        TRUE, NULL, 0, "laptop", NULL, NULL, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);

    muc_init();

    will_return(connection_get_status, JABBER_CONNECTED);
    will_return(session_get_account_name, account_name);

    expect_string(accounts_get_account, name, account_name);
    will_return(accounts_get_account, account);

    expect_string(presence_join_room, room, room);
    expect_string(presence_join_room, nick, nick);
    expect_value(presence_join_room, passwd, NULL);

    gboolean result = cmd_join(NULL, CMD_JOIN, args);
    assert_true(result);
}

void cmd_join_uses_account_nick_when_not_supplied(void **state)
{
    char *account_name = "an_account";
    char *room = "room2@conf.server.org";
    char *account_nick = "a_nick";
    gchar *args[] = { room, NULL };
    ProfAccount *account = account_new(account_name, "user@server.org", NULL, NULL,
        TRUE, NULL, 0, "laptop", NULL, NULL, 0, 0, 0, 0, 0, NULL, account_nick, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);

    muc_init();

    will_return(connection_get_status, JABBER_CONNECTED);
    will_return(session_get_account_name, account_name);

    expect_string(accounts_get_account, name, account_name);
    will_return(accounts_get_account, account);

    expect_string(presence_join_room, room, room);
    expect_string(presence_join_room, nick, account_nick);
    expect_value(presence_join_room, passwd, NULL);

    gboolean result = cmd_join(NULL, CMD_JOIN, args);
    assert_true(result);
}

void cmd_join_uses_password_when_supplied(void **state)
{
    char *account_name = "an_account";
    char *room = "room";
    char *password = "a_password";
    char *account_nick = "a_nick";
    char *account_service = "a_service";
    char *expected_room = "room@a_service";
    gchar *args[] = { room, "password", password, NULL };
    ProfAccount *account = account_new(account_name, "user@server.org", NULL, NULL,
        TRUE, NULL, 0, "laptop", NULL, NULL, 0, 0, 0, 0, 0, account_service, account_nick, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);

    muc_init();

    will_return(connection_get_status, JABBER_CONNECTED);
    will_return(session_get_account_name, account_name);

    expect_string(accounts_get_account, name, account_name);
    will_return(accounts_get_account, account);

    expect_string(presence_join_room, room, expected_room);
    expect_string(presence_join_room, nick, account_nick);
    expect_value(presence_join_room, passwd, password);

    gboolean result = cmd_join(NULL, CMD_JOIN, args);
    assert_true(result);
}