public void inviteDirectly(EntityBareJid address) throws NotConnectedException, InterruptedException {
        inviteDirectly(address, null, null, false, null);
    }
@Test
    public void testInviteDirectly() throws Throwable {
        EntityBareJid roomJid = JidCreate.entityBareFrom("room@example.com");
        EntityBareJid userJid = JidCreate.entityBareFrom("user@example.com");

        AtomicBoolean updateRequestSent = new AtomicBoolean();
        InvokeDirectlyResponder serverSimulator = new InvokeDirectlyResponder() {
            @Override
            void verifyRequest(Message updateRequest) {
                assertEquals(userJid, updateRequest.getTo(), "The provided JID doesn't match the request!");

                GroupChatInvitation groupChatInvitation = (GroupChatInvitation) updateRequest.getExtension(GroupChatInvitation.NAMESPACE);
                assertNotNull(groupChatInvitation, "Missing GroupChatInvitation extension");
                assertEquals(roomJid, groupChatInvitation.getRoomAddress());
                assertNull(groupChatInvitation.getReason());
                assertNull(groupChatInvitation.getPassword());
                assertFalse(groupChatInvitation.continueAsOneToOneChat());
                assertNull(groupChatInvitation.getThread());

                updateRequestSent.set(true);
            }
        };
        serverSimulator.start();

        // Create multi user chat
        MultiUserChat multiUserChat = multiUserChatManager.getMultiUserChat(roomJid);

        // Call tested method
        multiUserChat.inviteDirectly(userJid);

        // Wait for processing requests
        serverSimulator.join(RESPONSE_TIMEOUT_IN_MILLIS);

        // Check if an error occurred within the simulator
        final Throwable exception = serverSimulator.getException();
        if (exception != null) {
            throw exception;
        }

        assertTrue(updateRequestSent.get(), "Invite directly request not sent");
    }