]> granicus.if.org Git - ejabberd/commitdiff
Add integration test for set_room_affiliation
authorMarc Philipp <marc.philipp@logmein.com>
Wed, 5 Jul 2017 14:18:31 +0000 (16:18 +0200)
committerMarc Philipp <marc.philipp@logmein.com>
Thu, 6 Jul 2017 11:33:13 +0000 (13:33 +0200)
test/ejabberd_SUITE_data/ejabberd.yml
test/muc_tests.erl

index 89618c0c00f76df2b0ad1099e1fd839257b0ec98..131fc2edf57f372047d134a68230964459abfe83 100644 (file)
@@ -450,6 +450,8 @@ listen:
     port: @@web_port@@
     module: ejabberd_http
     captcha: true
+    request_handlers:
+      "/api": mod_http_api
   - 
     port: @@component_port@@
     module: ejabberd_service
@@ -466,6 +468,7 @@ modules:
   mod_proxy65: []
   mod_legacy: []
   mod_muc: []
+  mod_muc_admin: []
   mod_register: 
     welcome_message: 
       subject: "Welcome!"
@@ -488,3 +491,8 @@ outgoing_s2s_port: @@s2s_port@@
 shaper: 
   fast: 50000
   normal: 10000
+
+api_permissions:
+  "public commands":
+    who: all
+    what: "*"
index 9ded2e0fe6aceb844f96c6bc33b514d81926e0e1..bcceb69386b672d58164631e5dfef048c86342ad 100644 (file)
@@ -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
 %%%===================================================================