aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/ejabberd_SUITE_data/ejabberd.yml8
-rwxr-xr-xtest/ejabberd_SUITE_data/extauth.py26
-rw-r--r--test/muc_tests.erl29
3 files changed, 51 insertions, 12 deletions
diff --git a/test/ejabberd_SUITE_data/ejabberd.yml b/test/ejabberd_SUITE_data/ejabberd.yml
index 74cabf584..a648cb422 100644
--- a/test/ejabberd_SUITE_data/ejabberd.yml
+++ b/test/ejabberd_SUITE_data/ejabberd.yml
@@ -458,6 +458,8 @@ listen:
port: @@web_port@@
module: ejabberd_http
captcha: true
+ request_handlers:
+ "/api": mod_http_api
-
port: @@component_port@@
module: ejabberd_service
@@ -474,6 +476,7 @@ modules:
mod_proxy65: []
mod_legacy: []
mod_muc: []
+ mod_muc_admin: []
mod_register:
welcome_message:
subject: "Welcome!"
@@ -496,3 +499,8 @@ outgoing_s2s_port: @@s2s_port@@
shaper:
fast: 50000
normal: 10000
+
+api_permissions:
+ "public commands":
+ who: all
+ what: "*"
diff --git a/test/ejabberd_SUITE_data/extauth.py b/test/ejabberd_SUITE_data/extauth.py
index fa2c9efd0..263d6464e 100755
--- a/test/ejabberd_SUITE_data/extauth.py
+++ b/test/ejabberd_SUITE_data/extauth.py
@@ -3,23 +3,27 @@ import struct
def read():
(pkt_size,) = struct.unpack('>H', sys.stdin.read(2))
- pkt = sys.stdin.read(pkt_size).split(':')
- cmd = pkt[0]
- args_num = len(pkt) - 1
- if cmd == 'auth' and args_num >= 3:
- if pkt[1] == "wrong":
+ pkt = sys.stdin.read(pkt_size)
+ cmd = pkt.split(':')[0]
+ if cmd == 'auth':
+ u, s, p = pkt.split(':', 3)[1:]
+ if u == "wrong":
write(False)
else:
write(True)
- elif cmd == 'isuser' and args_num == 2:
+ elif cmd == 'isuser':
+ u, s = pkt.split(':', 2)[1:]
+ elif cmd == 'setpass':
+ u, s, p = pkt.split(':', 3)[1:]
write(True)
- elif cmd == 'setpass' and args_num >= 3:
+ elif cmd == 'tryregister':
+ u, s, p = pkt.split(':', 3)[1:]
write(True)
- elif cmd == 'tryregister' and args_num >= 3:
+ elif cmd == 'removeuser':
+ u, s = pkt.split(':', 2)[1:]
write(True)
- elif cmd == 'removeuser' and args_num == 2:
- write(True)
- elif cmd == 'removeuser3' and args_num >= 3:
+ elif cmd == 'removeuser3':
+ u, s, p = pkt.split(':', 3)[1:]
write(True)
else:
write(False)
diff --git a/test/muc_tests.erl b/test/muc_tests.erl
index 9ded2e0fe..bcceb6938 100644
--- a/test/muc_tests.erl
+++ b/test/muc_tests.erl
@@ -53,7 +53,8 @@ single_cases() ->
single_test(service_vcard),
single_test(configure_non_existent),
single_test(cancel_configure_non_existent),
- single_test(service_subscriptions)]}.
+ single_test(service_subscriptions),
+ single_test(set_room_affiliation)]}.
service_presence_error(Config) ->
Service = muc_jid(Config),
@@ -242,6 +243,32 @@ service_subscriptions(Config) ->
end, Rooms),
disconnect(Config).
+set_room_affiliation(Config) ->
+ #jid{server = RoomService} = muc_jid(Config),
+ RoomName = <<"set_room_affiliation">>,
+ RoomJID = jid:make(RoomName, RoomService),
+ MyJID = my_jid(Config),
+ PeerJID = jid:remove_resource(?config(slave, Config)),
+
+ ct:pal("joining room ~p", [RoomJID]),
+ ok = join_new(Config, RoomJID),
+
+ ct:pal("setting affiliation in room ~p to 'member' for ~p", [RoomJID, PeerJID]),
+ ServerHost = ?config(server_host, Config),
+ WebPort = ct:get_config(web_port, 5280),
+ RequestURL = "http://" ++ ServerHost ++ ":" ++ integer_to_list(WebPort) ++ "/api/set_room_affiliation",
+ Headers = [{"X-Admin", "true"}],
+ ContentType = "application/json",
+ Body = jiffy:encode(#{name => RoomName, service => RoomService, jid => jid:encode(PeerJID), affiliation => member}),
+ {ok, {{_, 200, _}, _, _}} = httpc:request(post, {RequestURL, Headers, ContentType, Body}, [], []),
+
+ #message{id = _, from = RoomJID, to = MyJID, sub_els = [
+ #muc_user{items = [
+ #muc_item{affiliation = member, role = none, jid = PeerJID}]}]} = recv_message(Config),
+
+ ok = leave(Config, RoomJID),
+ disconnect(Config).
+
%%%===================================================================
%%% Master-slave tests
%%%===================================================================