MockRepository mocks;
protected:
- virtual ~TestWithMock() noexcept(noexcept(std::declval<Test>().~Test())) {}
+ virtual ~TestWithMock() noexcept(noexcept(std::declval<Test>().~Test()))
+ {
+
+ }
- virtual void TearDown() {
+ virtual void TearDown()
+ {
try
{
mocks.VerifyAll();
std::cout << __func__ << std::endl;
}
- static void NSNotificationReceivedCallbackEmpty(NSProvider *, NSMessage *) { }
+ static void NSNotificationReceivedCallbackEmpty(NSMessage *)
+ {
+ std::cout << __func__ << std::endl;
+ }
+
+ static void NSSyncCallbackEmpty(NSSyncInfo *)
+ {
+ std::cout << __func__ << std::endl;
+ }
- static void NSSyncCallbackEmpty(NSProvider *, NSSync *) { }
+ static void foundResourceEmpty(std::shared_ptr< OC::OCResource >)
+ {
+ std::cout << __func__ << std::endl;
+ }
- static void foundResourceEmpty(std::shared_ptr< OC::OCResource >) { }
+ static void SubscriptionAcceptedCallback(NSProvider *)
+ {
+ std::cout << __func__ << std::endl;
+ }
protected:
TEST_F(NotificationConsumerTest, StartConsumerPositive)
{
- EXPECT_EQ(NS_OK,
- NSStartConsumer(
- NSProviderDiscoveredCallbackEmpty,
- NSNotificationReceivedCallbackEmpty,
- NSSyncCallbackEmpty));
+ NSConsumerConfig cfg;
+ cfg.discoverCb = NSProviderDiscoveredCallbackEmpty;
+ cfg.acceptedCb = SubscriptionAcceptedCallback;
+ cfg.messageCb = NSNotificationReceivedCallbackEmpty;
+ cfg.syncInfoCb = NSSyncCallbackEmpty;
+ EXPECT_EQ(NS_OK, NSStartConsumer(cfg));
}
TEST_F(NotificationConsumerTest, StopConsumerPositive)
TEST_F(NotificationConsumerTest, DiscoverProviderWithNonAccepterWhenStartedConsumerFirst)
{
mocks.ExpectCallFunc(NSProviderDiscoveredCallbackEmpty).Do(
- [this, & responseCon](NSProvider *)
+ [this](NSProvider *)
{
std::cout << "Call Discovered" << std::endl;
responseCon.notify_all();
});
- NSStartConsumer(
- NSProviderDiscoveredCallbackEmpty,
- NSNotificationReceivedCallbackEmpty,
- NSSyncCallbackEmpty);
+ NSConsumerConfig cfg;
+ cfg.discoverCb = NSProviderDiscoveredCallbackEmpty;
+ cfg.acceptedCb = SubscriptionAcceptedCallback;
+ cfg.messageCb = NSNotificationReceivedCallbackEmpty;
+ cfg.syncInfoCb = NSSyncCallbackEmpty;
+ NSStartConsumer(cfg);
g_providerSimul.setAccepter(1);
g_providerSimul.createNotificationResource();
}
mocks.ExpectCallFunc(NSProviderDiscoveredCallbackEmpty).Do(
- [this, & responseCon](NSProvider *)
+ [this](NSProvider * provider)
{
std::cout << "Call Discovered" << std::endl;
+ g_provider = provider;
responseCon.notify_all();
});
- NSStartConsumer(
- NSProviderDiscoveredCallbackEmpty,
- NSNotificationReceivedCallbackEmpty,
- NSSyncCallbackEmpty);
+ NSConsumerConfig cfg;
+ cfg.discoverCb = NSProviderDiscoveredCallbackEmpty;
+ cfg.acceptedCb = SubscriptionAcceptedCallback;
+ cfg.messageCb = NSNotificationReceivedCallbackEmpty;
+ cfg.syncInfoCb = NSSyncCallbackEmpty;
+ NSStartConsumer(cfg);
std::unique_lock< std::mutex > lock{ mutexForCondition };
responseCon.wait_for(lock, g_waitForResponse);
TEST_F(NotificationConsumerTest, DiscoverProviderWithNonAccepterWhenRescan)
{
- mocks.ExpectCallFunc(NSProviderDiscoveredCallbackEmpty)
- .Do(
- [this, & responseCon](NSProvider * provider)
+ g_providerSimul.setAccepter(1);
+ mocks.ExpectCallFunc(NSProviderDiscoveredCallbackEmpty).Do(
+ [this](NSProvider * provider)
{
std::cout << "Call Discovered" << std::endl;
g_provider = provider;
+ std::cout << g_provider->providerId << std::endl;
responseCon.notify_all();
});
TEST_F(NotificationConsumerTest, ExpectSubscribeSuccess)
{
+ mocks.ExpectCallFunc(SubscriptionAcceptedCallback).Do(
+ [](NSProvider * )
+ {
+ std::cout << "Income Accepted subscription : " << std::endl;
+ });
+
NSResult ret = NSSubscribe(g_provider);
std::unique_lock< std::mutex > lock{ mutexForCondition };
responseCon.wait_for(lock, g_waitForResponse);
TEST_F(NotificationConsumerTest, ExpectReceiveNotification)
{
- std::string id = "id";
+ uint64_t id = 10;
std::string title = "title";
std::string msg = "msg";
mocks.ExpectCallFunc(NSNotificationReceivedCallbackEmpty).Do(
- [](NSProvider *, NSMessage * message)
+ [](NSMessage * message)
{
- std::cout << "Income Notification : " << message->mId << std::endl;
- NSDropNSObject(message);
+ std::cout << "Income Notification : " << message->messageId << std::endl;
});
g_providerSimul.notifyMessage(id, title, msg);
std::unique_lock< std::mutex > lock{ mutexForCondition };
responseCon.wait_for(lock, g_waitForResponse);
-}
-
-TEST_F(NotificationConsumerTest, ExpectUnsubscribeSuccess)
-{
- NSResult ret = NSUnsubscribe(g_provider);
- std::unique_lock< std::mutex > lock{ mutexForCondition };
- responseCon.wait_for(lock, g_waitForResponse);
-
- EXPECT_EQ(NS_OK, ret);
+ NSStopConsumer();
}
TEST_F(NotificationConsumerTest, ExpectReceiveNotificationWithAccepterisProvider)
{
- std::string id = "ExpectReceiveNotificationWithAccepterisProvider";
+ uint64_t id = 11;
std::string title = "title";
std::string msg = "msg";
g_providerSimul.setAccepter(0);
- NSRescanProvider();
+ NSConsumerConfig cfg;
+ cfg.discoverCb = NSProviderDiscoveredCallbackEmpty;
+ cfg.acceptedCb = SubscriptionAcceptedCallback;
+ cfg.messageCb = NSNotificationReceivedCallbackEmpty;
+ cfg.syncInfoCb = NSSyncCallbackEmpty;
+ NSStartConsumer(cfg);
{
std::unique_lock< std::mutex > lock{ mutexForCondition };
responseCon.wait_for(lock, g_waitForResponse);
}
mocks.ExpectCallFunc(NSNotificationReceivedCallbackEmpty).Do(
- [](NSProvider *, NSMessage * message)
+ [](NSMessage * message)
{
- std::cout << "Income Notification : " << message->mId << std::endl;
- NSDropNSObject(message);
+ std::cout << "Income Notification : " << message->messageId << std::endl;
});
g_providerSimul.notifyMessage(id, title, msg);
TEST_F(NotificationConsumerTest, ExpectCallbackReadCheckWhenProviderNotifySync)
{
- std::string id = "ExpectCallbackReadCheckWhenProviderNotifySync";
+ uint64_t id = 12;
std::string title = "title";
std::string msg = "msg";
- NSSyncTypes type = Notification_Dismiss;
+ NSSyncType type = NS_SYNC_DELETED;
mocks.OnCallFunc(NSNotificationReceivedCallbackEmpty).Do(
- [](NSProvider *, NSMessage * message)
+ [](NSMessage * message)
{
- std::cout << "Income Notification : " << message->mId << std::endl;
- NSDropNSObject(message);
+ std::cout << "Income Notification : " << message->messageId << std::endl;
});
mocks.ExpectCallFunc(NSSyncCallbackEmpty).Do(
- [& type](NSProvider *, NSSync * sync)
+ [& type](NSSyncInfo * sync)
{
- std::cout << "Income Notification : " << sync->mMessageId
- << ", State : " << sync->mState << std::endl;
- type = sync->mState;
+ std::cout << "Income SyncInfo : " << sync->messageId
+ << ", State : " << sync->state << std::endl;
+ type = sync->state;
});
// g_providerSimul.deleteNotificationResource();
// NSStopConsumer();
- EXPECT_EQ(Notification_Read, type);
+ EXPECT_EQ(NS_SYNC_READ, type);
}
TEST_F(NotificationConsumerTest, ExpectCallbackDismissCheckWhenProviderNotifySync)
{
- std::string id = "ExpectCallbackDismissCheckWhenProviderNotifySync";
+ uint64_t id = 13;
std::string title = "title";
std::string msg = "msg";
- NSSyncTypes type = Notification_Read;
+ NSSyncType type = NS_SYNC_READ;
mocks.OnCallFunc(NSNotificationReceivedCallbackEmpty).Do(
- [](NSProvider *, NSMessage * message)
+ [](NSMessage * message)
{
- std::cout << "Income Notification : " << message->mId << std::endl;
- NSDropNSObject(message);
+ std::cout << "Income Notification : " << message->messageId << std::endl;
});
mocks.ExpectCallFunc(NSSyncCallbackEmpty).Do(
- [& type](NSProvider *, NSSync * sync)
+ [& type](NSSyncInfo * sync)
{
- std::cout << "Income Notification : " << sync->mMessageId
- << ", State : " << sync->mState << std::endl;
- type = sync->mState;
+ std::cout << "Income Notification : " << sync->messageId
+ << ", State : " << sync->state << std::endl;
+ type = sync->state;
});
// g_providerSimul.deleteNotificationResource();
// NSStopConsumer();
- EXPECT_EQ(Notification_Dismiss, type);
+ EXPECT_EQ(NS_SYNC_DELETED, type);
}
TEST_F(NotificationConsumerTest, ExpectCallbackReadCheckWhenConsumerPostSync)
{
- std::string id = "ExpectCallbackReadCheckWhenConsumerPostSync";
+ uint64_t id = 14;
std::string title = "title";
std::string msg = "msg";
- NSSyncTypes type = Notification_Dismiss;
+ NSSyncType type = NS_SYNC_DELETED;
mocks.OnCallFunc(NSNotificationReceivedCallbackEmpty).Do(
- [](NSProvider *, NSMessage * message)
+ [](NSMessage * message)
{
- std::cout << "Income Notification : " << message->mId << std::endl;
- NSConsumerReadCheck(message);
+ std::cout << "Income Notification : " << message->messageId << std::endl;
+ NSConsumerSendSyncInfo(message->providerId, message->messageId, NS_SYNC_READ);
std::unique_lock< std::mutex > lock{ mutexForCondition };
responseCon.wait_for(lock, g_waitForResponse);
});
mocks.ExpectCallFunc(NSSyncCallbackEmpty).Do(
- [& type](NSProvider *, NSSync * sync)
+ [& type](NSSyncInfo * sync)
{
- std::cout << "Income Notification : " << sync->mMessageId
- << ", State : " << sync->mState << std::endl;
- type = sync->mState;
+ std::cout << "Income Notification : " << sync->messageId
+ << ", State : " << sync->state << std::endl;
+ type = sync->state;
});
// g_providerSimul.deleteNotificationResource();
// NSStopConsumer();
- EXPECT_EQ(Notification_Read, type);
+ EXPECT_EQ(NS_SYNC_READ, type);
}
TEST_F(NotificationConsumerTest, ExpectCallbackDismissCheckWhenConsumerPostSync)
{
- std::string id = "ExpectCallbackDismissCheckWhenConsumerPostSync";
+ uint64_t id = 15;
std::string title = "title";
std::string msg = "msg";
- NSSyncTypes type = Notification_Read;
+ NSSyncType type = NS_SYNC_READ;
mocks.OnCallFunc(NSNotificationReceivedCallbackEmpty).Do(
- [](NSProvider *, NSMessage * message)
+ [](NSMessage * message)
{
- std::cout << "Income Notification : " << message->mId << std::endl;
- NSConsumerDismissCheck(message);
+ std::cout << "Income Notification : " << message->messageId << std::endl;
+ NSConsumerSendSyncInfo(message->providerId, message->messageId, NS_SYNC_DELETED);
std::unique_lock< std::mutex > lock{ mutexForCondition };
responseCon.wait_for(lock, g_waitForResponse);
});
mocks.ExpectCallFunc(NSSyncCallbackEmpty).Do(
- [& type](NSProvider *, NSSync * sync)
+ [& type](NSSyncInfo * sync)
{
- std::cout << "Income Notification : " << sync->mMessageId
- << ", State : " << sync->mState << std::endl;
- type = sync->mState;
+ std::cout << "Income Notification : " << sync->messageId
+ << ", State : " << sync->state << std::endl;
+ type = sync->state;
});
responseCon.wait_for(lock, g_waitForResponse);
}
+ EXPECT_EQ(NS_SYNC_DELETED, type);
+}
+
+TEST_F(NotificationConsumerTest, ExpectUnsubscribeSuccess)
+{
+ NSResult ret = NSUnsubscribe(g_provider);
+ std::unique_lock< std::mutex > lock{ mutexForCondition };
+ responseCon.wait_for(lock, g_waitForResponse);
+
g_providerSimul.deleteNotificationResource();
NSStopConsumer();
- EXPECT_EQ(Notification_Dismiss, type);
+ EXPECT_EQ(NS_OK, ret);
}
m_notificationUri(std::string("/notification")),
m_messageUri(std::string("/message")),
m_syncUri(std::string("/sync")),
- m_syncObservers() { };
+ m_syncObservers()
+ {
+
+ };
~NSProviderSimulator() = default;
{
std::string msgUri = m_notificationUri + m_messageUri;
std::string syncUri = m_notificationUri + m_syncUri;
+ std::string providerId = "123456789012345678901234567890123456";
rep.setValue("ACCEPTER", m_accepter);
rep.setValue("MESSAGE_URI", msgUri);
rep.setValue("SYNC_URI", syncUri);
+ rep.setValue("PROVIDER_ID", providerId);
}
else if (type == requestType::NS_SYNC)
{
observationInfo.obsId), m_syncObservers.end());
}
}
+ else if (type == requestType::NS_MESSAGE)
+ {
+ OC::OCRepresentation rep;
+ std::string providerId = "123456789012345678901234567890123456";
+ rep.setValue<int>("MESSAGE_ID", (int)1);
+ rep.setValue("PROVIDER_ID", providerId);
+
+ auto response = std::make_shared<OC::OCResourceResponse>();
+ response->setRequestHandle(requests->getRequestHandle());
+ response->setResourceHandle(requests->getResourceHandle());
+ response->setErrorCode(200);
+ response->setResponseResult(OC_EH_OK);
+ response->setResourceRepresentation(rep);
+
+ OC::ObservationIds ids;
+ ids.push_back(requests->getObservationInfo().obsId);
+
+ OC::OCPlatform::notifyListOfObservers(m_messageHandle, ids, response);
+ }
}
OCEntityHandlerResult entityHandler(
OC::OCPlatform::notifyAllObservers(m_messageHandle);
}
- void notifyMessage(const std::string & id, const std::string & title, const std::string & content)
+ void notifyMessage(const uint64_t & id, const std::string & title, const std::string & content)
{
setMessage(id, title, content);
notifyMessage();
}
- void sendRead(const std::string & id)
+ void sendRead(const uint64_t & id)
{
- m_syncRep.setValue("ID", id);
- m_syncRep.setValue("STATE", (int)0);
+ std::string providerId = "123456789012345678901234567890123456";
+ m_syncRep.setValue<int>("MESSAGE_ID", id);
+ m_syncRep.setValue("STATE", (int)1);
+ m_syncRep.setValue("PROVIDER_ID", providerId);
OC::OCPlatform::notifyAllObservers(m_syncHandle);
}
- void sendDismiss(const std::string & id)
+ void sendDismiss(const uint64_t & id)
{
- m_syncRep.setValue("ID", id);
- m_syncRep.setValue("STATE", (int)1);
+ std::string providerId = "123456789012345678901234567890123456";
+ m_syncRep.setValue<int>("MESSAGE_ID", id);
+ m_syncRep.setValue("STATE", (int)2);
+ m_syncRep.setValue("PROVIDER_ID", providerId);
OC::OCPlatform::notifyAllObservers(m_syncHandle);
}
- void setMessage(const std::string & id, const std::string & title, const std::string & content)
+ void setMessage(const uint64_t & id, const std::string & title, const std::string & content)
{
- m_messageRep.setValue("ID", id);
+ std::string providerId = "123456789012345678901234567890123456";
+ m_messageRep.setValue<int>("MESSAGE_ID", id);
m_messageRep.setValue("TITLE", title);
m_messageRep.setValue("CONTENTTEXT", content);
+ m_messageRep.setValue("PROVIDER_ID", providerId);
}
void deleteNotificationResource()
std::bind(& NSProviderSimulator::entityHandler, this,
std::placeholders::_1, requestType::NS_MESSAGE),
resourceProperty);
- } catch (std::exception & e)
+ }
+ catch (std::exception & e)
{
std::cout << e.what() << std::endl;
}
std::bind(& NSProviderSimulator::entityHandler, this,
std::placeholders::_1, requestType::NS_SYNC),
resourceProperty);
- } catch (std::exception & e)
+ }
+ catch (std::exception & e)
{
std::cout << e.what() << std::endl;
}
std::bind(& NSProviderSimulator::entityHandler, this,
std::placeholders::_1, requestType::NS_NOTIFICATION),
resourceProperty);
- } catch (std::exception & e)
+ }
+ catch (std::exception & e)
{
std::cout << e.what() << std::endl;
}