/* * Copyright (c) 2017 Tarun Gupta * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ #include #include #include using namespace Swift; TEST(MIXJoinParserTest, XEP0369_Example22) { PayloadsParserTester parser; ASSERT_TRUE(parser.parse( "" "" "" "" "" "" )); MIXJoin::ref payload = parser.getPayload(); ASSERT_TRUE(payload); ASSERT_TRUE(payload->getChannel()); ASSERT_EQ(JID("coven@mix.shakespeare.example"), *payload->getChannel()); ASSERT_FALSE(payload->getJID()); ASSERT_FALSE(payload->getForm()); const std::vector items = payload->getSubscriptions(); ASSERT_EQ(static_cast(4), items.size()); ASSERT_EQ(std::string("urn:xmpp:mix:nodes:messages"), items[0]->getNode()); ASSERT_EQ(std::string("urn:xmpp:mix:nodes:presence"), items[1]->getNode()); ASSERT_EQ(std::string("urn:xmpp:mix:nodes:participants"), items[2]->getNode()); ASSERT_EQ(std::string("urn:xmpp:mix:nodes:config"), items[3]->getNode()); } TEST(MIXJoinParserTest, XEP0369_Example23) { PayloadsParserTester parser; ASSERT_TRUE(parser.parse( "" "" "" "" "" "" )); MIXJoin::ref payload = parser.getPayload(); ASSERT_TRUE(payload); ASSERT_FALSE(payload->getChannel()); ASSERT_FALSE(payload->getJID()); ASSERT_FALSE(payload->getForm()); const std::vector items = payload->getSubscriptions(); ASSERT_EQ(static_cast(4), items.size()); ASSERT_EQ(std::string("urn:xmpp:mix:nodes:messages"), items[0]->getNode()); ASSERT_EQ(std::string("urn:xmpp:mix:nodes:presence"), items[1]->getNode()); ASSERT_EQ(std::string("urn:xmpp:mix:nodes:participants"), items[2]->getNode()); ASSERT_EQ(std::string("urn:xmpp:mix:nodes:config"), items[3]->getNode()); } TEST(MIXJoinParserTest, XEP0369_Example24) { PayloadsParserTester parser; ASSERT_TRUE(parser.parse( "" "" "" "" "" "" )); MIXJoin::ref payload = parser.getPayload(); ASSERT_TRUE(payload); ASSERT_FALSE(payload->getChannel()); ASSERT_TRUE(payload->getJID()); ASSERT_EQ(JID("123456#coven@mix.shakespeare.example"), *payload->getJID()); ASSERT_FALSE(payload->getForm()); const std::vector items = payload->getSubscriptions(); ASSERT_EQ(static_cast(4), items.size()); ASSERT_EQ(std::string("urn:xmpp:mix:nodes:messages"), items[0]->getNode()); ASSERT_EQ(std::string("urn:xmpp:mix:nodes:presence"), items[1]->getNode()); ASSERT_EQ(std::string("urn:xmpp:mix:nodes:participants"), items[2]->getNode()); ASSERT_EQ(std::string("urn:xmpp:mix:nodes:config"), items[3]->getNode()); } TEST(MIXJoinParserTest, XEP0369_Example29) { PayloadsParserTester parser; ASSERT_TRUE(parser.parse( "" "" "" "" "" "urn:xmpp:mix:1" "" "" "never" "" "" "")); MIXJoin::ref payload = parser.getPayload(); ASSERT_TRUE(payload); ASSERT_FALSE(payload->getChannel()); ASSERT_FALSE(payload->getJID()); const std::vector items = payload->getSubscriptions(); ASSERT_EQ(static_cast(2), items.size()); ASSERT_EQ(std::string("urn:xmpp:mix:nodes:messages"), items[0]->getNode()); ASSERT_EQ(std::string("urn:xmpp:mix:nodes:presence"), items[1]->getNode()); ASSERT_TRUE(payload->getForm()); ASSERT_EQ(Form::Type::SubmitType, payload->getForm()->getType()); std::shared_ptr fieldType = payload->getForm()->getField("FORM_TYPE"); ASSERT_TRUE(fieldType); std::shared_ptr fieldJIDVisibility = payload->getForm()->getField("JID Visibility"); ASSERT_TRUE(fieldJIDVisibility); ASSERT_EQ(std::string("never"), fieldJIDVisibility->getTextSingleValue()); } TEST(MIXJoinParserTest, XEP0369_Example30) { PayloadsParserTester parser; ASSERT_TRUE(parser.parse( "" "" "" "" "" "urn:xmpp:mix:1" "" "" "never" "" "" "allow" "" "" "block" "" "" "")); MIXJoin::ref payload = parser.getPayload(); ASSERT_TRUE(payload); ASSERT_FALSE(payload->getChannel()); ASSERT_TRUE(payload->getJID()); ASSERT_EQ(JID("hag66@shakespeare.example"), *payload->getJID()); const std::vector items = payload->getSubscriptions(); ASSERT_EQ(static_cast(2), items.size()); ASSERT_EQ(std::string("urn:xmpp:mix:nodes:messages"), items[0]->getNode()); ASSERT_EQ(std::string("urn:xmpp:mix:nodes:presence"), items[1]->getNode()); ASSERT_TRUE(payload->getForm()); ASSERT_EQ(Form::Type::ResultType, payload->getForm()->getType()); std::shared_ptr fieldType = payload->getForm()->getField("FORM_TYPE"); ASSERT_TRUE(fieldType); std::shared_ptr fieldJIDVisibility = payload->getForm()->getField("JID Visibility"); ASSERT_TRUE(fieldJIDVisibility); ASSERT_EQ(std::string("never"), fieldJIDVisibility->getTextSingleValue()); std::shared_ptr fieldprivateMessages = payload->getForm()->getField("Private Messages"); ASSERT_TRUE(fieldprivateMessages); ASSERT_EQ(std::string("allow"), fieldprivateMessages->getTextSingleValue()); std::shared_ptr vCard = payload->getForm()->getField("vCard"); ASSERT_TRUE(vCard); ASSERT_EQ(std::string("block"), vCard->getTextSingleValue()); }