1 //******************************************************************
3 // Copyright 2015 Samsung Electronics All Rights Reserved.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
11 // http://www.apache.org/licenses/LICENSE-2.0
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21 #include <UnitTestHelper.h>
23 #include <RCSResponse.h>
24 #include <RCSResourceObject.h>
26 #include <RequestHandler.h>
27 #include <ResourceAttributesConverter.h>
29 #include <OCPlatform.h>
33 using namespace OIC::Service;
36 typedef OCStackResult (*registerResourceSig)(OCResourceHandle&,
43 static constexpr char KEY[] = "key";
46 void EXPECT_RESPONSE(shared_ptr< OCResourceResponse > ocResponse, int errorCode,
47 const RCSResourceAttributes& attrs)
49 EXPECT_EQ(ocResponse->getErrorCode(), errorCode);
50 EXPECT_EQ(ResourceAttributesConverter::fromOCRepresentation(
51 ocResponse->getResourceRepresentation()), attrs);
55 class RCSResponseTest: public TestWithMock
58 template< typename T >
59 shared_ptr< OCResourceResponse > buildResponse(const T& response)
61 RCSResourceObject::Ptr server =
62 RCSResourceObject::Builder("a/test", "", "").build();
64 return response.getHandler()->buildResponse(*server);
70 TestWithMock::SetUp();
72 mocks.OnCallFuncOverload(static_cast< registerResourceSig >(OCPlatform::registerResource))
75 mocks.OnCallFunc(OCPlatform::unregisterResource).Return(OC_STACK_OK);
79 TEST_F(RCSResponseTest, GetDefaultActionHasEmptyAttrs)
81 EXPECT_RESPONSE(buildResponse(RCSGetResponse::defaultAction()),
82 RequestHandler::DEFAULT_ERROR_CODE, RCSResourceAttributes());
85 TEST_F(RCSResponseTest, GetResponseHasResultsPassedCodes)
87 constexpr int errorCode{ -10 };
89 EXPECT_RESPONSE(buildResponse(RCSGetResponse::create(errorCode)),
90 errorCode, RCSResourceAttributes());
93 TEST_F(RCSResponseTest, GetResponseHasAttrsAndResultsPassedCodes)
95 constexpr int errorCode{ -10 };
97 RCSResourceAttributes attrs;
100 EXPECT_RESPONSE(buildResponse(RCSGetResponse::create(attrs, errorCode)), errorCode, attrs);
103 TEST_F(RCSResponseTest, GetResponseCanMoveAttrs)
105 constexpr int errorCode{ -10 };
107 RCSResourceAttributes attrs;
110 RCSResourceAttributes attrsClone;
111 attrsClone[KEY] = 100;
114 buildResponse(RCSGetResponse::create(std::move(attrs), errorCode)),
115 errorCode, attrsClone);
117 EXPECT_TRUE(attrs.empty());
120 TEST_F(RCSResponseTest, SetDefaultActionHasEmptyAttrs)
122 EXPECT_RESPONSE(buildResponse(RCSSetResponse::defaultAction()),
123 RequestHandler::DEFAULT_ERROR_CODE, RCSResourceAttributes());
126 TEST_F(RCSResponseTest, SetResponseHasResultsPassedCodes)
128 constexpr int errorCode{ -10 };
130 EXPECT_RESPONSE(buildResponse(RCSSetResponse::create(errorCode)),
131 errorCode, RCSResourceAttributes());
134 TEST_F(RCSResponseTest, SetResponseHasAttrsAndResultsPassedCodes)
136 constexpr int errorCode{ -10 };
138 RCSResourceAttributes attrs;
141 EXPECT_RESPONSE(buildResponse(RCSSetResponse::create(attrs, errorCode)),
145 TEST_F(RCSResponseTest, SetResponseCanMoveAttrs)
147 constexpr int errorCode{ -10 };
149 RCSResourceAttributes attrs;
152 RCSResourceAttributes attrsClone;
153 attrsClone[KEY] = 100;
155 EXPECT_RESPONSE(buildResponse(RCSSetResponse::create(std::move(attrs), errorCode)),
156 errorCode, attrsClone);
158 EXPECT_TRUE(attrs.empty());
162 TEST_F(RCSResponseTest, DefaultSetResponseHasDefaultMethod)
164 EXPECT_EQ(RCSSetResponse::AcceptanceMethod::DEFAULT,
165 RCSSetResponse::defaultAction().getAcceptanceMethod());
168 TEST_F(RCSResponseTest, AcceptSetResponseHasAcceptMethod)
170 EXPECT_EQ(RCSSetResponse::AcceptanceMethod::ACCEPT,
171 RCSSetResponse::accept().getAcceptanceMethod());
174 TEST_F(RCSResponseTest, IgnoreSetResponseHasIgnoreMethod)
176 EXPECT_EQ(RCSSetResponse::AcceptanceMethod::IGNORE,
177 RCSSetResponse::ignore().getAcceptanceMethod());
180 TEST_F(RCSResponseTest, SetResponseHasMethodSetBySetter)
182 RCSSetResponse::AcceptanceMethod method = RCSSetResponse::AcceptanceMethod::ACCEPT;
183 RCSSetResponse response =
184 RCSSetResponse::defaultAction().setAcceptanceMethod(method);
186 EXPECT_EQ(method, response.getAcceptanceMethod());