EntityHandler,
uint8_t );
+static constexpr char RESOURCE_URI[] = "a/test";
static constexpr char KEY[] = "key";
TEST(ServerResourceBuilderTest, ThrowIfUriIsInvalid)
mocks.ExpectCallFuncOverload(
static_cast<registerResourceSig>(OCPlatform::registerResource)).Return(OC_STACK_OK);
- PrimitiveServerResource::Builder("a/test", "", "").create();
+ PrimitiveServerResource::Builder(RESOURCE_URI, "", "").create();
}
+TEST(ServerResourceBuilderTest, ResourceServerHasPropertiesSetByBuilder)
+{
+ auto serverResource = PrimitiveServerResource::Builder(RESOURCE_URI, "", "").
+ setDiscoverable(false).setObservable(true).create();
+
+ EXPECT_FALSE(serverResource->isDiscoverable());
+ EXPECT_TRUE(serverResource->isObservable());
+}
+
+TEST(ServerResourceBuilderTest, ResourceServerHasAttrsSetByBuilder)
+{
+ ResourceAttributes attrs;
+ attrs[KEY] = 100;
+
+ auto serverResource = PrimitiveServerResource::Builder(RESOURCE_URI, "", "").
+ setAttributes(attrs).create();
+
+ PrimitiveServerResource::LockGuard lock{ serverResource };
+ EXPECT_EQ(attrs, serverResource->getAttributes());
+}
+
+
class ServerResourceTest: public Test
{
public:
void SetUp() override
{
initMocks();
- server = PrimitiveServerResource::Builder("a/test", "", "").create();
+ server = PrimitiveServerResource::Builder(RESOURCE_URI, "", "").create();
}
virtual void initMocks()
ASSERT_EQ(OC_EH_OK, handler(createRequest()));
}
-TEST_F(ServerResourceHandlingRequestTest, SendResponseWithPrimitiveResponseParams)
+TEST_F(ServerResourceHandlingRequestTest, SendResponseWithPrimitiveResponseResults)
{
constexpr int errorCode{ 1999 };
constexpr OCEntityHandlerResult result{ OC_EH_SLOW };
ASSERT_EQ(OC_EH_OK, handler(createRequest()));
}
+TEST_F(ServerResourceHandlingRequestTest, SendSetResponseWithCustomAttrsAndResults)
+{
+ constexpr int errorCode{ 1999 };
+ constexpr OCEntityHandlerResult result{ OC_EH_SLOW };
+ constexpr char value[]{ "value" };
+
+ server->setSetRequestHandler(
+ [](const PrimitiveRequest&, ResourceAttributes&) -> PrimitiveSetResponse
+ {
+ ResourceAttributes attrs;
+ attrs[KEY] = value;
+ return PrimitiveSetResponse::create(attrs, result, errorCode);
+ }
+ );
+
+ mocks.ExpectCallFunc(OCPlatform::sendResponse).Match(
+ [](const shared_ptr<OCResourceResponse> response)
+ {
+ return value == response->getResourceRepresentation()[KEY].getValue<std::string>()
+ && response->getErrorCode() == errorCode
+ && response->getResponseResult() == result;
+ }
+ ).Return(OC_STACK_OK);
+
+ ASSERT_EQ(OC_EH_OK, handler(createRequest(OC_REST_PUT)));
+}
+
class ServerResourceSynchronizationTest: public ServerResourceHandlingRequestTest
ASSERT_EQ(ORIGIN_VALUE, response->getResourceRepresentation()[EXISTING].getValue<int>());
}
+TEST_F(SimpleRequestHandlerTest, ResponseHasAttrsSetByCustomAttrRequestHandler)
+{
+ constexpr char key[] { "key" };
+ constexpr int newValue{ 100 };
+
+ ResourceAttributes attrs;
+ attrs[key] = newValue;
+ CustomAttrRequestHandler handler{ attrs };
+
+ auto response = handler.buildResponse(*server, requestAttrs);
+
+ ASSERT_EQ(ORIGIN_VALUE, response->getResourceRepresentation()[key].getValue<int>());
+}
+
class SetRequestProxyHandlerTest: public Test
TEST_F(SetRequestProxyHandlerTest, ServerAttributesChangedIfOnlySameKeyExists)
{
- int newValue{ 100 };
+ constexpr int newValue{ 100 };
requestAttrs[EXISTING] = newValue;