@@ -158,3 +158,68 @@ cmd_join__tests__uses_password_when_supplied(void** state)
158158 gboolean result = cmd_join (NULL , CMD_JOIN , args );
159159 assert_true (result );
160160}
161+
162+ void
163+ cmd_join__tests__xmpp_uri_join (void * * state )
164+ {
165+ gchar * account_name = g_strdup ("an_account" );
166+ char * room_uri = "xmpp:room@conf.server.org?join" ;
167+ char * expected_room = "room@conf.server.org" ;
168+ gchar * account_nick = g_strdup ("a_nick" );
169+ gchar * args [] = { room_uri , NULL };
170+ ProfAccount * account = account_new (account_name , g_strdup ("user@server.org" ), NULL , NULL ,
171+ TRUE, NULL , 0 , g_strdup ("laptop" ), NULL , NULL , 0 , 0 , 0 , 0 , 0 , NULL , account_nick , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , 0 );
172+
173+ will_return (connection_get_status , JABBER_CONNECTED );
174+ will_return (session_get_account_name , account_name );
175+
176+ expect_string (accounts_get_account , name , account_name );
177+ will_return (accounts_get_account , account );
178+
179+ expect_string (presence_join_room , room , expected_room );
180+ expect_string (presence_join_room , nick , account_nick );
181+ expect_value (presence_join_room , passwd , NULL );
182+
183+ gboolean result = cmd_join (NULL , CMD_JOIN , args );
184+ assert_true (result );
185+ }
186+
187+ void
188+ cmd_join__tests__xmpp_uri_join_with_password (void * * state )
189+ {
190+ gchar * account_name = g_strdup ("an_account" );
191+ char * room_uri = "xmpp:room@conf.server.org?join;password=secret" ;
192+ char * expected_room = "room@conf.server.org" ;
193+ char * expected_password = "secret" ;
194+ gchar * account_nick = g_strdup ("a_nick" );
195+ gchar * args [] = { room_uri , NULL };
196+ ProfAccount * account = account_new (account_name , g_strdup ("user@server.org" ), NULL , NULL ,
197+ TRUE, NULL , 0 , g_strdup ("laptop" ), NULL , NULL , 0 , 0 , 0 , 0 , 0 , NULL , account_nick , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , 0 );
198+
199+ will_return (connection_get_status , JABBER_CONNECTED );
200+ will_return (session_get_account_name , account_name );
201+
202+ expect_string (accounts_get_account , name , account_name );
203+ will_return (accounts_get_account , account );
204+
205+ expect_string (presence_join_room , room , expected_room );
206+ expect_string (presence_join_room , nick , account_nick );
207+ expect_string (presence_join_room , passwd , expected_password );
208+
209+ gboolean result = cmd_join (NULL , CMD_JOIN , args );
210+ assert_true (result );
211+ }
212+
213+ void
214+ cmd_join__tests__xmpp_uri_invalid_query_type (void * * state )
215+ {
216+ char * room_uri = "xmpp:room@conf.server.org?message" ;
217+ gchar * args [] = { room_uri , NULL };
218+
219+ will_return (connection_get_status , JABBER_CONNECTED );
220+
221+ expect_cons_show_error ("Unsupported or invalid XMPP URI query type. Only 'join' is supported." );
222+
223+ gboolean result = cmd_join (NULL , CMD_JOIN , args );
224+ assert_true (result );
225+ }
0 commit comments