Update UnitTest Code about "Resource Broker"
[platform/upstream/iotivity.git] / service / resource-manipulation / src / resourceBroker / unittest / ResourceBrokerUnitTest.cpp
1 #include "gtest/gtest.h"
2 #include "HippoMocks/hippomocks.h"
3
4 #include "OCPlatform.h"
5 #include "PrimitiveResource.h"
6 #include "ResponseStatement.h"
7 #include "ResourceBroker.h"
8 #include "UnitTestHelper.h"
9
10 using namespace testing;
11 using namespace OIC::Service;
12 using namespace OC;
13
14 typedef OCStackResult (*subscribePresenceSig1)(OC::OCPlatform::OCPresenceHandle&,
15         const std::string&, OCConnectivityType, SubscribeCallback);
16
17 class ResourceBrokerTest : public TestWithMock
18 {
19 public:
20
21     MockRepository mocks;
22     ResourceBroker * brokerInstance;
23     PrimitiveResource::Ptr pResource;
24     BrokerCB cb;
25     BrokerID id;
26
27 protected:
28
29     void SetUp() override
30     {
31         brokerInstance = ResourceBroker::getInstance();
32         pResource = PrimitiveResource::Ptr(mocks.Mock< PrimitiveResource >(), [](PrimitiveResource*){});
33         cb = ([](BROKER_STATE)->OCStackResult{return OC_STACK_OK;});
34         id = 0;
35     }
36
37     void TearDown() override
38     {
39         pResource.reset();
40         id = 0;
41         cb = nullptr;
42     }
43
44     void MockingFunc()
45     {
46         mocks.OnCall(pResource.get(), PrimitiveResource::requestGet);
47         mocks.OnCall(pResource.get(), PrimitiveResource::getHost).Return(std::string());
48         mocks.OnCallFuncOverload(static_cast< subscribePresenceSig1 >(OC::OCPlatform::subscribePresence)).Return(OC_STACK_OK);
49     }
50
51 };
52  
53 TEST_F(ResourceBrokerTest,HostResource_ReturnNormalValueIfNormalParams)
54 {
55
56     MockingFunc();
57
58     BrokerID ret;
59     ASSERT_NE(ret = brokerInstance->hostResource(pResource,cb),0);
60
61     brokerInstance->cancelHostResource(ret);
62
63 }
64
65 TEST_F(ResourceBrokerTest, HostResource_NormalErrorHandlingIfResourceNull)
66 {
67
68     ASSERT_THROW(brokerInstance->hostResource(nullptr, cb),ResourceBroker::InvalidParameterException);
69
70 }
71
72 TEST_F(ResourceBrokerTest, HostResource_NormalErrorHandlingIfCbFuncNull)
73 {
74
75     ASSERT_THROW(brokerInstance->hostResource(pResource,nullptr),ResourceBroker::InvalidParameterException);
76
77 }
78
79 TEST_F(ResourceBrokerTest,CancelHostResource_NoThrowIfNormalParams)
80 {
81
82     MockingFunc();
83
84     BrokerID ret;
85     ret = brokerInstance->hostResource(pResource,cb);
86
87     ASSERT_NO_THROW(brokerInstance->cancelHostResource(ret));
88
89
90 }
91
92 TEST_F(ResourceBrokerTest,CancelHostResource_NormalErrorHandlingIfAbNormalIdZero)
93 {
94
95     id = 0;
96     ASSERT_THROW(brokerInstance->cancelHostResource(id),ResourceBroker::InvalidParameterException);
97
98 }
99
100 TEST_F(ResourceBrokerTest,CancelHostResource_NormalErrorHandlingIfAbNormalIdOutOfRangeValue)
101 {
102
103     id = -1;
104     ASSERT_THROW(brokerInstance->cancelHostResource(id),ResourceBroker::InvalidParameterException);
105
106 }
107
108 TEST_F(ResourceBrokerTest,getResourceState_ReturnNormalValueIfNormalId)
109 {
110
111     MockingFunc();
112
113     BrokerID ret;
114     ret = brokerInstance->hostResource(pResource,cb);
115
116     ASSERT_NE(brokerInstance->getResourceState(ret),BROKER_STATE::NONE);
117
118     brokerInstance->cancelHostResource(ret);
119     TearDown();
120
121 }
122
123 TEST_F(ResourceBrokerTest,getResourceState_NormalErrorHandlingIfIdZero)
124 {
125
126     id = 0;
127     ASSERT_THROW(brokerInstance->getResourceState(id),ResourceBroker::InvalidParameterException);
128
129 }
130
131 TEST_F(ResourceBrokerTest,getResourceState_ReturnNormalValueIfNormalResource)
132 {
133
134     MockingFunc();
135
136     BrokerID ret;
137     ret = brokerInstance->hostResource(pResource,cb);
138
139     ASSERT_NE(brokerInstance->getResourceState(pResource),BROKER_STATE::NONE);
140
141     brokerInstance->cancelHostResource(ret);
142
143 }
144
145 TEST_F(ResourceBrokerTest,getResourceState_NormalErrorHandlingIfResourceNull)
146 {
147
148     ASSERT_THROW(brokerInstance->getResourceState((PrimitiveResource::Ptr)nullptr),ResourceBroker::InvalidParameterException);
149
150 }
151
152 TEST_F(ResourceBrokerTest,getResourceState_NormalErrorHandlingIfAbnormalResource)
153 {
154
155     MockingFunc();
156
157     PrimitiveResource::Ptr resource[3];
158     BrokerID id[3];
159
160     for(int i=0;i!=3;i++)
161     {
162         resource[i] = PrimitiveResource::Ptr(mocks.Mock< PrimitiveResource >(), [](PrimitiveResource*){});
163         mocks.OnCall(resource[i].get(), PrimitiveResource::requestGet);
164         mocks.OnCall(resource[i].get(), PrimitiveResource::getHost).Return(std::string());
165         mocks.OnCallFuncOverload(static_cast< subscribePresenceSig1 >(OC::OCPlatform::subscribePresence)).Return(OC_STACK_OK);
166         id[i] = brokerInstance->hostResource(resource[i],cb);
167     }
168
169
170     EXPECT_EQ(brokerInstance->getResourceState(pResource),BROKER_STATE::NONE);
171
172     for(int i=0;i!=3;i++)
173     {
174         brokerInstance->cancelHostResource(id[i]);
175     }
176
177 }
178
179 TEST_F(ResourceBrokerTest,getResourceState_NormalErrorHandlingIfAbnormalId)
180 {
181
182     id = -1;
183     ASSERT_THROW(brokerInstance->getResourceState(id),ResourceBroker::InvalidParameterException);
184
185 }
186