X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=service%2Fresource-encapsulation%2Funittests%2FResourceClientTest.cpp;h=78e443d821e88bd4283b4359511bbf8d3a71de9b;hb=7f00f942c39b7bc27c7eeecf213a239c3fe4173c;hp=a0e5274520b2047a0a2286f32fcfda4f6e8804fa;hpb=cc68c51711ac0211b3c29da57ef6f794dd2f6120;p=platform%2Fupstream%2Fiotivity.git diff --git a/service/resource-encapsulation/unittests/ResourceClientTest.cpp b/service/resource-encapsulation/unittests/ResourceClientTest.cpp index a0e5274..78e443d 100644 --- a/service/resource-encapsulation/unittests/ResourceClientTest.cpp +++ b/service/resource-encapsulation/unittests/ResourceClientTest.cpp @@ -20,10 +20,13 @@ #include "UnitTestHelper.h" +#include "OCResource.h" + #include "RCSRemoteResourceObject.h" #include "RCSDiscoveryManager.h" #include "RCSResourceObject.h" #include "RCSAddress.h" +#include "RCSRequest.h" #include #include @@ -42,8 +45,9 @@ constexpr int DEFAULT_WAITING_TIME_IN_MILLIS = 3000; void getRemoteAttributesCallback(const RCSResourceAttributes&, int) {} void setRemoteAttributesCallback(const RCSResourceAttributes&, int) {} +void setRemoteRepresentationCallback(const HeaderOpts&, const RCSRepresentation&, int) {} void resourceStateChanged(ResourceState) { } -void cacheUpdatedCallback(const RCSResourceAttributes&) {} +void cacheUpdatedCallback(const RCSResourceAttributes&, int) {} class RemoteResourceObjectTest: public TestWithMock { @@ -94,12 +98,12 @@ private: { for (int i=0; i<10 && !object; ++i) { - const std::string uri = "/oic/res"; auto discoveryTask = RCSDiscoveryManager::getInstance()->discoverResourceByType( - RCSAddress::multicast(), uri, RESOURCETYPE, + RCSAddress::multicast(), RESOURCETYPE, std::bind(&RemoteResourceObjectTest::resourceDiscovered, this, std::placeholders::_1)); Wait(1000); + discoveryTask->cancel(); } } @@ -160,7 +164,71 @@ TEST_F(RemoteResourceObjectTest, SetRemoteAttributesSetsAttributesOfServer) object->setRemoteAttributes(newAttrs, setRemoteAttributesCallback); Wait(); - ASSERT_EQ(newValue, server->getAttributeValue(ATTR_KEY)); + ASSERT_EQ(newValue, server->getAttributeValue(ATTR_KEY).get()); +} + +TEST_F(RemoteResourceObjectTest, SetRemoteRepresentationDoesNotAllowEmptyFunction) +{ + RCSQueryParams queryParams; + RCSRepresentation rcsRep; + ASSERT_THROW(object->set(queryParams, rcsRep, {}), RCSInvalidParameterException); +} + +TEST_F(RemoteResourceObjectTest, SetRemoteRepresentationSetsRepresentationOfServer) +{ + RCSRepresentation rcsRep; + RCSQueryParams queryParams; + constexpr int newValue = ATTR_VALUE + 1; + RCSResourceAttributes newAttrs; + newAttrs[ATTR_KEY] = newValue; + + rcsRep.setAttributes(newAttrs); + + mocks.ExpectCallFunc(setRemoteRepresentationCallback). + Do([this](const HeaderOpts&, const RCSRepresentation&, int){ Proceed(); }); + + object->set(queryParams, rcsRep, setRemoteRepresentationCallback); + Wait(); + + ASSERT_EQ(newValue, server->getAttributeValue(ATTR_KEY).get()); +} + +TEST_F(RemoteResourceObjectTest, QueryParamsForGetWillBePassedToBase) +{ + class CustomHandler + { + public: + virtual RCSGetResponse handle(const RCSRequest&, RCSResourceAttributes&) = 0; + virtual ~CustomHandler() {} + }; + + constexpr char PARAM_KEY[] { "aKey" }; + constexpr char VALUE[] { "value" }; + + object->get(RCSQueryParams().setResourceInterface(RESOURCEINTERFACE).setResourceType(RESOURCETYPE). + put(PARAM_KEY, VALUE), + [](const HeaderOpts&, const RCSRepresentation&, int){}); + + auto mockHandler = mocks.Mock< CustomHandler >(); + + mocks.ExpectCall(mockHandler, CustomHandler::handle). + Match([](const RCSRequest& request, RCSResourceAttributes&) + { + return request.getInterface() == RESOURCEINTERFACE && + request.getQueryParams().at(PARAM_KEY) == VALUE; + } + ). + Do([this](const RCSRequest&, RCSResourceAttributes&) + { + Proceed(); + return RCSGetResponse::defaultAction(); + } + ); + + server->setGetRequestHandler(std::bind(&CustomHandler::handle, mockHandler, + std::placeholders::_1, std::placeholders::_2)); + + Wait(); } TEST_F(RemoteResourceObjectTest, MonitoringIsNotStartedByDefault) @@ -226,7 +294,7 @@ TEST_F(RemoteResourceObjectTest, CacheStateIsUnreadyAfterStartCaching) TEST_F(RemoteResourceObjectTest, CacheStateIsReadyAfterCacheUpdated) { mocks.ExpectCallFunc(cacheUpdatedCallback). - Do([this](const RCSResourceAttributes&){ Proceed(); }); + Do([this](const RCSResourceAttributes&, int){ Proceed(); }); object->startCaching(cacheUpdatedCallback); Wait(); @@ -237,7 +305,7 @@ TEST_F(RemoteResourceObjectTest, CacheStateIsReadyAfterCacheUpdated) TEST_F(RemoteResourceObjectTest, IsCachedAvailableReturnsTrueWhenCacheIsReady) { mocks.ExpectCallFunc(cacheUpdatedCallback). - Do([this](const RCSResourceAttributes&){ Proceed(); }); + Do([this](const RCSResourceAttributes&, int){ Proceed(); }); object->startCaching(cacheUpdatedCallback); Wait(); @@ -248,12 +316,12 @@ TEST_F(RemoteResourceObjectTest, IsCachedAvailableReturnsTrueWhenCacheIsReady) TEST_F(RemoteResourceObjectTest, DISABLED_CacheUpdatedCallbackBeCalledWheneverCacheUpdated) { mocks.OnCallFunc(cacheUpdatedCallback). - Do([this](const RCSResourceAttributes&){ Proceed(); }); + Do([this](const RCSResourceAttributes&, int){ Proceed(); }); object->startCaching(cacheUpdatedCallback); Wait(); mocks.ExpectCallFunc(cacheUpdatedCallback). - Do([this](const RCSResourceAttributes&){ Proceed(); }); + Do([this](const RCSResourceAttributes&, int){ Proceed(); }); server->setAttribute(ATTR_KEY, ATTR_VALUE + 1); @@ -265,15 +333,15 @@ TEST_F(RemoteResourceObjectTest, DISABLED_CacheUpdatedCallbackBeCalledWithUpdate constexpr int newValue = ATTR_VALUE + 1; mocks.OnCallFunc(cacheUpdatedCallback). - Do([this](const RCSResourceAttributes&){ Proceed(); }); + Do([this](const RCSResourceAttributes&, int){ Proceed(); }); object->startCaching(cacheUpdatedCallback); Wait(); mocks.ExpectCallFunc(cacheUpdatedCallback). - Match([this](const RCSResourceAttributes& attrs){ + Match([this](const RCSResourceAttributes& attrs, int){ return attrs.at(ATTR_KEY) == newValue; }). - Do([this](const RCSResourceAttributes&){ Proceed(); }); + Do([this](const RCSResourceAttributes&, int){ Proceed(); }); server->setAttribute(ATTR_KEY, newValue); @@ -288,7 +356,7 @@ TEST_F(RemoteResourceObjectTest, GetCachedAttributesThrowsIfCachingIsNotStarted) TEST_F(RemoteResourceObjectTest, CachedAttributesHasSameAttributesWithServer) { mocks.OnCallFunc(cacheUpdatedCallback). - Do([this](const RCSResourceAttributes&){ Proceed(); }); + Do([this](const RCSResourceAttributes&, int){ Proceed(); }); object->startCaching(cacheUpdatedCallback); Wait(); @@ -305,7 +373,7 @@ TEST_F(RemoteResourceObjectTest, GetCachedAttributeThrowsIfCachingIsNotStarted) TEST_F(RemoteResourceObjectTest, GetCachedAttributeThrowsIfKeyIsInvalid) { mocks.OnCallFunc(cacheUpdatedCallback). - Do([this](const RCSResourceAttributes&){ Proceed(); }); + Do([this](const RCSResourceAttributes&, int){ Proceed(); }); object->startCaching(cacheUpdatedCallback); Wait(); @@ -327,3 +395,12 @@ TEST_F(RemoteResourceObjectTest, HasSameInterfaceWithServer) EXPECT_EQ(RESOURCEINTERFACE, object->getInterfaces()[0]); } +TEST_F(RemoteResourceObjectTest, GetValidOCResourceTest) +{ + std::shared_ptr ocRes = RCSRemoteResourceObject::toOCResource(object); + + EXPECT_NE(nullptr, ocRes); + + EXPECT_EQ(RESOURCEURI, ocRes->uri()); +} +