Add tests for muc hats
This commit is contained in:
+74
-1
@@ -305,9 +305,77 @@ master_slave_cases() ->
|
||||
master_slave_test(config_voice_request_interval),
|
||||
master_slave_test(config_visitor_nickchange),
|
||||
master_slave_test(join_conflict),
|
||||
master_slave_test(duplicate_occupantid)
|
||||
master_slave_test(duplicate_occupantid),
|
||||
master_slave_test(hats)
|
||||
]}.
|
||||
|
||||
hats_master(Config) ->
|
||||
Room = muc_room_jid(Config),
|
||||
PeerJID = ?config(slave, Config),
|
||||
PeerNick = ?config(slave_nick, Config),
|
||||
PeerNickJID = jid:replace_resource(Room, PeerNick),
|
||||
ok = master_join(Config),
|
||||
CommandCreate =
|
||||
#adhoc_command{action = complete, node = <<"urn:xmpp:hats:commands:create">>, xdata = #xdata{
|
||||
type = form, fields = [
|
||||
#xdata_field{var = <<"FORM_TYPE">>, values = [<<"urn:xmpp:hats:commands">>]},
|
||||
#xdata_field{var = <<"hats#title">>, values = [<<"Test">>]},
|
||||
#xdata_field{var = <<"hats#uri">>, values = [<<"https://example.com/Test">>]},
|
||||
#xdata_field{var = <<"hats#hue">>, values = [<<"100">>]}
|
||||
]}},
|
||||
#iq{type = result,
|
||||
sub_els =
|
||||
[#adhoc_command{status = completed}]} =
|
||||
send_recv(Config,
|
||||
#iq{type = set,
|
||||
to = Room,
|
||||
sub_els = [CommandCreate]}),
|
||||
[104] = recv_only_config_change_message(Config),
|
||||
put_event(Config, post_hat_setup),
|
||||
post_hat_setup = get_event(Config),
|
||||
CommandAssign =
|
||||
#adhoc_command{action = complete, node = <<"urn:xmpp:hats:commands:assign">>, xdata = #xdata{
|
||||
type = form, fields = [
|
||||
#xdata_field{var = <<"FORM_TYPE">>, values = [<<"urn:xmpp:hats:commands">>]},
|
||||
#xdata_field{var = <<"hats#jid">>, values = [jid:encode(PeerJID)]},
|
||||
#xdata_field{var = <<"hat">>, values = [<<"https://example.com/Test">>]}
|
||||
]}},
|
||||
#iq{type = result,
|
||||
sub_els =
|
||||
[#adhoc_command{status = completed}]} =
|
||||
send_recv(Config,
|
||||
#iq{type = set,
|
||||
to = Room,
|
||||
sub_els = [CommandAssign]}),
|
||||
#presence{from = PeerNickJID} = PresHat = recv_presence(Config),
|
||||
?match(#muc_hats{hats = [#muc_hat{title = <<"Test">>,
|
||||
uri = <<"https://example.com/Test">>,
|
||||
hue = <<"100">>}]},
|
||||
xmpp:get_subtag(PresHat, #muc_hats{})),
|
||||
put_event(Config, post_hat_assign),
|
||||
post_hat_assign = get_event(Config),
|
||||
recv_muc_presence(Config, PeerNickJID, unavailable),
|
||||
ok = leave(Config),
|
||||
disconnect(Config).
|
||||
|
||||
hats_slave(Config) ->
|
||||
Room = muc_room_jid(Config),
|
||||
MyNick = ?config(nick, Config),
|
||||
MyNickJID = jid:replace_resource(Room, MyNick),
|
||||
{[], _, _} = slave_join(Config),
|
||||
[104] = recv_only_config_change_message(Config),
|
||||
post_hat_setup = get_event(Config),
|
||||
put_event(Config, post_hat_setup),
|
||||
#presence{from = MyNickJID} = PresHat = recv_presence(Config),
|
||||
?match(#muc_hats{hats = [#muc_hat{title = <<"Test">>,
|
||||
uri = <<"https://example.com/Test">>,
|
||||
hue = <<"100">>}]},
|
||||
xmpp:get_subtag(PresHat, #muc_hats{})),
|
||||
post_hat_assign = get_event(Config),
|
||||
put_event(Config, post_hat_assign),
|
||||
ok = leave(Config),
|
||||
disconnect(Config).
|
||||
|
||||
duplicate_occupantid_master(Config) ->
|
||||
Room = muc_room_jid(Config),
|
||||
PeerJID = ?config(slave, Config),
|
||||
@@ -1950,6 +2018,11 @@ recv_config_change_message(Config) ->
|
||||
ct:comment("Receiving configuration change notification message"),
|
||||
Room = muc_room_jid(Config),
|
||||
#presence{from = Room, type = available} = recv_presence(Config),
|
||||
recv_only_config_change_message(Config).
|
||||
|
||||
recv_only_config_change_message(Config) ->
|
||||
ct:comment("Receiving configuration change notification message"),
|
||||
Room = muc_room_jid(Config),
|
||||
#message{type = groupchat, from = Room} = Msg = recv_message(Config),
|
||||
#muc_user{status_codes = Codes} = xmpp:get_subtag(Msg, #muc_user{}),
|
||||
lists:sort(Codes).
|
||||
|
||||
Reference in New Issue
Block a user