about summary refs log tree commit diff stats
path: root/src/xmpp/message.c
Commit message (Expand)AuthorAgeFilesLines
* Return after message receiptJames Booth2015-03-141-1/+1
* Merge branch 'master' into xep-0184James Booth2015-03-141-1/+1
|\
| * Check for sent and received carbonsJames Booth2015-03-141-1/+1
* | Merge branch 'master' into xep-0184James Booth2015-03-141-33/+36
|\|
| * Fixed error with /otr start with carbons enabledJames Booth2015-03-141-33/+36
* | Show message received text for receiptsJames Booth2015-03-111-6/+16
* | Added basic delivery receiptsJames Booth2015-03-111-16/+87
|/
* Send private carbons element with message when encryptedJames Booth2015-03-101-6/+34
* Merge remote-tracking branch 'oliverlemoal/xep-0280' into xep-0280James Booth2015-03-081-1/+44
|\
| * mergeOlivier LE MOAL2015-02-231-1/+6
| |\
| | * fix segfault on self sent message carbonOlivier Le Moal2015-02-211-0/+5
| | * Add XEP-0280 supportOlivier LE MOAL2015-02-021-0/+38
| * | Add XEP-0280 supportOlivier LE MOAL2015-02-101-0/+38
| |/
* / Updated copyrightJames Booth2015-02-101-1/+1
|/
* Only show UI events for chat states when in sessionJames Booth2015-01-111-1/+1
* Added remaining chat statesJames Booth2015-01-111-27/+26
* Send active chat state, handle composing and gone from recipientsJames Booth2015-01-101-25/+21
* Show resource in titlebar and on each messageJames Booth2015-01-101-1/+1
* Removed chat states from chat_session module, WIPJames Booth2015-01-081-32/+32
* Refactored chat sessions in _chat_handlerJames Booth2015-01-071-13/+9
* Added offline handler for chat sessionsJames Booth2015-01-061-2/+4
* Create chat session when no resourceJames Booth2015-01-051-9/+3
* Refactored chat session handling on sending messageJames Booth2015-01-041-10/+20
* Use resource in chat sessionsJames Booth2015-01-041-10/+9
* Fix for receiving regular chat messages with no type attributeJames Booth2015-01-041-2/+16
* Use events for chat sessionsJames Booth2014-12-291-4/+4
* Moved chat_session_set_sent from message.c moduleJames Booth2014-12-291-4/+0
* Added chat_session_on_incoming_messageJames Booth2014-12-291-5/+1
* Fixed chat state for non OTRJames Booth2014-12-281-1/+1
* Moved chat states out of xmpp module for message send chatJames Booth2014-12-271-21/+12
* Removed function pointersJames Booth2014-12-221-33/+19
* Refactored all window recipients and typesJames Booth2014-12-201-24/+35
* Split private message handling to separate functionsJames Booth2014-12-101-4/+4
* Removed /duck commandJames Booth2014-10-181-28/+1
* Added /room subject commandJames Booth2014-10-051-4/+14
* Tidied muc moduleJames Booth2014-09-281-2/+2
* Added license exemption for OpenSSL to source headersJames Booth2014-08-241-0/+12
* Spelling errors fixed and hyphenation used as minus sign fixedDariusz Dwornikowski2014-08-111-1/+1
* Added notification setting for typing in current windowJames Booth2014-05-241-3/+1
* Fixed cppcheck warningsJames Booth2014-04-261-3/+2
* Added some otr policy functionality, if policy is set to "always"lightb2014-04-191-1/+0
* Fixed handling of room subjectJames Booth2014-04-131-24/+20
* Tidied ui dependenciesJames Booth2014-04-061-1/+0
* Updated copyrightJames Booth2014-03-091-1/+1
* Refactored muc_room_is_active to only take room, rather than full jidJames Booth2014-03-081-2/+2
* Moved error handling logic to server_eventsJames Booth2014-01-281-12/+1
* Refactored presence_error_handlerJames Booth2014-01-271-12/+15
* Added fallback message error handlersJames Booth2014-01-271-2/+11
* Fixed commentJames Booth2014-01-271-1/+1
* Removed unnecessary strdupJames Booth2014-01-271-3/+2
68839de8af64de5eb07c5a2499ff2'>dd1ee18c ^
dd1ee18c ^
6af10696 ^
475dfebd ^
f3fe1d34 ^
dd1ee18c ^
f3fe1d34 ^
aa4ffa7e ^




f3fe1d34 ^
aa4ffa7e ^


baf46c6a ^
81190251 ^
f3fe1d34 ^
f3fe1d34 ^
bafc0f25 ^



2c15aba9 ^
bafc0f25 ^
bafc0f25 ^
6af10696 ^
475dfebd ^
bafc0f25 ^


aa4ffa7e ^

bafc0f25 ^
aa4ffa7e ^





bafc0f25 ^
81190251 ^
bafc0f25 ^
bafc0f25 ^
15fce2cf ^








22ab2686 ^
6af10696 ^
475dfebd ^
15fce2cf ^


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
163
164
165
166
167








                      

                  
                       
 
                            
 
                             
                
 

                        

                                                                    
                                                      


                                                         
                                                     
                        




















                                                            
 

                                                                     

                                      
                                                                



                                                                   
                                                     
                        

 






                                                                             
                                                 
                                                                                   
                                                                                                                 


               

                                                                
 





                                                            
 
                                                     
                        

 
                                              
 


                                        
                                                 
                                                                                   
                                                                                                      
 
               
 




                                                                
 


                                                   
 
                                                     
                        
 



                                                               
                                         
                                  
                                   
                                                                                   
                                                                                                              


               

                                                                
 





                                                            
 
                                                     
                        
 








                                                       
                                                         
                                                                                   
                                                                                                                         


               




                                                                
 


                                                           
 
                                                     
                        
 
#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/commands.h"
#include "muc.h"

#define CMD_JOIN "/join"

static void test_with_connection_status(jabber_conn_status_t status)
{
    will_return(jabber_get_connection_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_message_when_undefined(void **state)
{
    test_with_connection_status(JABBER_UNDEFINED);
}

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

    will_return(jabber_get_connection_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);

    muc_init();

    will_return(jabber_get_connection_status, JABBER_CONNECTED);
    will_return(jabber_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);

    muc_init();

    will_return(jabber_get_connection_status, JABBER_CONNECTED);
    will_return(jabber_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);

    muc_init();

    will_return(jabber_get_connection_status, JABBER_CONNECTED);
    will_return(jabber_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);

    muc_init();

    will_return(jabber_get_connection_status, JABBER_CONNECTED);
    will_return(jabber_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);
}