/** * * Copyright 2015-2020 Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jivesoftware.smack; import static org.jivesoftware.smackx.jiveproperties.JivePropertiesManager.addProperty; import static org.jivesoftware.smackx.jiveproperties.JivePropertiesManager.getProperty; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.Date; import org.jivesoftware.smack.chat.ChatManagerListener; import org.jivesoftware.smack.filter.ThreadFilter; import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.packet.MessageBuilder; import org.jivesoftware.smack.packet.StanzaBuilder; import org.jivesoftware.smackx.jiveproperties.JivePropertiesManager; import org.igniterealtime.smack.inttest.AbstractSmackIntegrationTest; import org.igniterealtime.smack.inttest.SmackIntegrationTestEnvironment; import org.igniterealtime.smack.inttest.annotations.AfterClass; import org.igniterealtime.smack.inttest.annotations.BeforeClass; import org.igniterealtime.smack.inttest.annotations.SmackIntegrationTest; /** * Tests for Chat Manager and for Chat Manager Listener. * * @author Stawicki Adam */ public class ChatTest extends AbstractSmackIntegrationTest { @SuppressWarnings("deprecation") private final org.jivesoftware.smack.chat.ChatManager chatManagerOne; private boolean invoked; @SuppressWarnings("deprecation") public ChatTest(SmackIntegrationTestEnvironment environment) { super(environment); chatManagerOne = org.jivesoftware.smack.chat.ChatManager.getInstanceFor(conOne); } @BeforeClass public void setUp() { JivePropertiesManager.setJavaObjectEnabled(true); } @AfterClass public void tearDown() { JivePropertiesManager.setJavaObjectEnabled(false); } @SuppressWarnings("deprecation") @SmackIntegrationTest public void testProperties() throws Exception { org.jivesoftware.smack.chat.Chat newChat = chatManagerOne.createChat(conTwo.getUser()); StanzaCollector collector = conTwo.createStanzaCollector(new ThreadFilter(newChat.getThreadID())); MessageBuilder messageBuilder = StanzaBuilder.buildMessage(); messageBuilder.setSubject("Subject of the chat"); messageBuilder.setBody("Body of the chat"); addProperty(messageBuilder, "favoriteColor", "red"); addProperty(messageBuilder, "age", 30); addProperty(messageBuilder, "distance", 30f); addProperty(messageBuilder, "weight", 30d); addProperty(messageBuilder, "male", true); addProperty(messageBuilder, "birthdate", new Date()); Message msg = messageBuilder.build(); newChat.sendMessage(msg); Message msg2 = collector.nextResult(2000); assertNotNull(msg2, "No message was received"); assertEquals(msg.getSubject(), msg2.getSubject(), "Subjects are different"); assertEquals(msg.getBody(), msg2.getBody(), "Bodies are different"); assertEquals( getProperty(msg, "favoriteColor"), getProperty(msg2, "favoriteColor"), "favoriteColors are different"); assertEquals( getProperty(msg, "age"), getProperty(msg2, "age"), "ages are different"); assertEquals( getProperty(msg, "distance"), getProperty(msg2, "distance"), "distances are different"); assertEquals( getProperty(msg, "weight"), getProperty(msg2, "weight"), "weights are different"); assertEquals( getProperty(msg, "male"), getProperty(msg2, "male"), "males are different"); assertEquals( getProperty(msg, "birthdate"), getProperty(msg2, "birthdate"), "birthdates are different"); } @SuppressWarnings("deprecation") @SmackIntegrationTest public void chatManagerTest() { ChatManagerListener listener = new ChatManagerListener() { @Override public void chatCreated(org.jivesoftware.smack.chat.Chat chat, boolean createdLocally) { invoked = true; } }; try { chatManagerOne.addChatListener(listener); chatManagerOne.createChat(conTwo.getUser()); assertTrue(invoked, "TestChatManagerListener wasn't invoked"); } finally { chatManagerOne.removeChatListener(listener); } } }