From 1ebd04184881b5b1dcb38b5adf9935d9e2ba3979 Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Tue, 11 Dec 2012 11:25:33 +0100 Subject: [PATCH] Handle also TextIsngleFormField in Settings command --- src/settingsadhoccommand.cpp | 3 +++ src/tests/settingsadhoccommand.cpp | 25 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/settingsadhoccommand.cpp b/src/settingsadhoccommand.cpp index 69939296..82cc9aaa 100644 --- a/src/settingsadhoccommand.cpp +++ b/src/settingsadhoccommand.cpp @@ -98,6 +98,9 @@ boost::shared_ptr SettingsAdHocCommand::handleResponse(boost::sh std::string value = f->getValue() ? "1" : "0"; m_storageBackend->updateUserSetting(user.id, f->getName(), value); } + else if (boost::dynamic_pointer_cast(received)) { + m_storageBackend->updateUserSetting(user.id, f->getName(), f->getValue()); + } } } diff --git a/src/tests/settingsadhoccommand.cpp b/src/tests/settingsadhoccommand.cpp index 1ad98518..5c7a1aa9 100644 --- a/src/tests/settingsadhoccommand.cpp +++ b/src/tests/settingsadhoccommand.cpp @@ -180,6 +180,31 @@ class SettingsAdHocCommandTest : public CPPUNIT_NS :: TestFixture, public BasicT storage->getUserSetting(1, "enable_transport", type, value); CPPUNIT_ASSERT_EQUAL(std::string("0"), value); } + + received.clear(); + + payload = boost::shared_ptr(new Swift::Command("settings")); + iq = Swift::IQ::createRequest(Swift::IQ::Set, Swift::JID("localhost"), "id", payload); + iq->setFrom("user@localhost"); + injectIQ(iq); + loop->processEvents(); + + CPPUNIT_ASSERT_EQUAL(1, (int) received.size()); + + CPPUNIT_ASSERT(dynamic_cast(getStanza(received[0]))); + CPPUNIT_ASSERT_EQUAL(Swift::IQ::Result, dynamic_cast(getStanza(received[0]))->getType()); + + CPPUNIT_ASSERT(getStanza(received[0])->getPayload()); + CPPUNIT_ASSERT_EQUAL(std::string("settings"), getStanza(received[0])->getPayload()->getNode()); + CPPUNIT_ASSERT_EQUAL(Swift::Command::Executing, getStanza(received[0])->getPayload()->getStatus()); + + // form element + CPPUNIT_ASSERT(getStanza(received[0])->getPayload()->getForm()); + CPPUNIT_ASSERT(getStanza(received[0])->getPayload()->getForm()->getField("enable_transport")); + + // set enabled_transport = 0 + f = getStanza(received[0])->getPayload()->getForm()->getField("enable_transport"); + CPPUNIT_ASSERT_EQUAL(false, boost::dynamic_pointer_cast(f)->getValue()); } void executeBadSessionID() {