*
******************************************************************/
+#include "platform_features.h"
#include "gtest/gtest.h"
#include "cainterface.h"
+#include "cautilinterface.h"
#include "cacommon.h"
+#include "oic_string.h"
+#include "oic_malloc.h"
+#define CA_TRANSPORT_ADAPTER_SCOPE 1000
class CATests : public testing::Test {
protected:
- virtual void SetUp() {
- CAInitialize();
+ virtual void SetUp()
+ {
+ CAInitialize(CA_ADAPTER_IP);
}
virtual void TearDown()
}
};
-void request_handler(CARemoteEndpoint_t* object, CARequestInfo_t* requestInfo);
-void response_handler(CARemoteEndpoint_t* object, CAResponseInfo_t* responseInfo);
-void error_handler(const CARemoteEndpoint_t *object, const CAErrorInfo_t* errorInfo);
-
-CAResult_t checkGetNetworkInfo();
+void request_handler(CAEndpoint_t* object, CARequestInfo_t* requestInfo);
+void response_handler(CAEndpoint_t* object, CAResponseInfo_t* responseInfo);
+void error_handler(const CAEndpoint_t *object, const CAErrorInfo_t* errorInfo);
+void adapter_handler(CATransportAdapter_t adapter, bool enabled);
+void connection_handler(CATransportAdapter_t adapter, const char *remote_address, bool connected);
CAResult_t checkSelectNetwork();
-
-
-void request_handler(const CARemoteEndpoint_t *object, const CARequestInfo_t *requestInfo)
+void request_handler(const CAEndpoint_t * /*object*/,
+ const CARequestInfo_t * /*requestInfo*/)
{
}
-void response_handler(const CARemoteEndpoint_t *object, const CAResponseInfo_t *responseInfo)
+void response_handler(const CAEndpoint_t * /*object*/,
+ const CAResponseInfo_t * /*responseInfo*/)
{
}
-void error_handler(const CARemoteEndpoint_t *object, const CAErrorInfo_t* errorInfo)
+void error_handler(const CAEndpoint_t *object, const CAErrorInfo_t* errorInfo)
{
if(!object || !errorInfo)
{
return;
}
-static char* uri = NULL;
-static CARemoteEndpoint_t* tempRep = NULL;
+void adapter_handler(CATransportAdapter_t /*adapter*/,
+ bool /*enabled*/)
+{
+}
+
+void connection_handler(const CAEndpoint_t * /*endpoint*/,
+ bool /*connected*/)
+{
+}
+
+static char* addr = NULL;
+static CAEndpoint_t* tempRep = NULL;
static CARequestInfo_t requestInfo;
static CAInfo_t requestData;
static CAInfo_t responseData;
static CAResponseInfo_t responseInfo;
static CAToken_t tempToken = NULL;
static uint8_t tokenLength = CA_MAX_TOKEN_LEN;
-static const char URI[] = "coap://10.11.12.13:4545/a/light";
-static const char RESOURCE_URI[] = "/a/light";
+static const char ADDRESS[] = "10.11.12.13";
+static const uint16_t PORT = 4545;
-static const char SECURE_INFO_DATA[] =
- "{\"oc\":[{\"href\":\"%s\",\"prop\":{\"rt\":[\"core.led\"],"
- "\"if\":[\"oic.if.baseline\"],\"obs\":1,\"sec\":1,\"port\":%d}}]}";
static const char NORMAL_INFO_DATA[] =
"{\"oc\":[{\"href\":\"%s\",\"prop\":{\"rt\":[\"core.led\"],"
- "\"if\":[\"oic.if.baseline\"],\"obs\":1}}]}";
+ "\"if\":[\"oc.mi.def\"],\"obs\":1}}]}";
#ifdef __WITH_DTLS__
-/**
- * @def RS_IDENTITY
- * @brief
- */
-#define IDENTITY ("1111111111111111")
-/* @def RS_CLIENT_PSK
- * @brief
- */
-#define RS_CLIENT_PSK ("AAAAAAAAAAAAAAAA")
-
-static CADtlsPskCredsBlob_t *pskCredsBlob = NULL;
-
-void clearDtlsCredentialInfo()
-{
- printf("clearDtlsCredentialInfo IN\n");
- if (pskCredsBlob)
- {
- // Initialize sensitive data to zeroes before freeing.
- memset(pskCredsBlob->creds, 0, sizeof(OCDtlsPskCreds) * (pskCredsBlob->num));
- free(pskCredsBlob->creds);
+// Iotivity Device Identity.
+const unsigned char IDENTITY[] = ("1111111111111111");
- memset(pskCredsBlob, 0, sizeof(CADtlsPskCredsBlob_t));
- free(pskCredsBlob);
- pskCredsBlob = NULL;
- }
- printf("clearDtlsCredentialInfo OUT\n");
-}
+// PSK between this device and peer device.
+const unsigned char RS_CLIENT_PSK[] = ("AAAAAAAAAAAAAAAA");
-// Internal API. Invoked by OC stack to retrieve credentials from this module
-void CAGetDtlsPskCredentials(CADtlsPskCredsBlob_t **credInfo)
+// Internal API. Invoked by CA stack to retrieve credentials from this module
+int32_t CAGetDtlsPskCredentials( CADtlsPskCredType_t type,
+ const unsigned char *desc, size_t desc_len,
+ unsigned char *result, size_t result_length)
{
printf("CAGetDtlsPskCredentials IN\n");
- if (pskCredsBlob != NULL)
+ int32_t ret = -1;
+
+ if (NULL == result)
{
- *credInfo = pskCredsBlob;
+ return ret;
}
- printf("CAGetDtlsPskCredentials OUT\n");
-}
-
-int32_t SetCredentials()
-{
- printf("SetCredentials IN\n");
- pskCredsBlob = (CADtlsPskCredsBlob_t *)malloc(sizeof(CADtlsPskCredsBlob_t));
-
- memset(pskCredsBlob, 0x0, sizeof(CADtlsPskCredsBlob_t));
- memcpy(pskCredsBlob->identity, IDENTITY, DTLS_PSK_ID_LEN);
-
- pskCredsBlob->num = 1;
-
- pskCredsBlob->creds = (OCDtlsPskCreds *)malloc(sizeof(OCDtlsPskCreds) * (pskCredsBlob->num));
-
- memcpy(pskCredsBlob->creds[0].id, IDENTITY, DTLS_PSK_ID_LEN);
- memcpy(pskCredsBlob->creds[0].psk, RS_CLIENT_PSK, DTLS_PSK_PSK_LEN);
+ switch (type)
+ {
+ case CA_DTLS_PSK_HINT:
+ case CA_DTLS_PSK_IDENTITY:
+
+ if (result_length < sizeof(IDENTITY))
+ {
+ printf("ERROR : Wrong value for result for storing IDENTITY");
+ return ret;
+ }
+
+ memcpy(result, IDENTITY, sizeof(IDENTITY));
+ ret = sizeof(IDENTITY);
+ break;
+
+ case CA_DTLS_PSK_KEY:
+
+ if ((desc_len == sizeof(IDENTITY)) &&
+ memcmp(desc, IDENTITY, sizeof(IDENTITY)) == 0)
+ {
+ if (result_length < sizeof(RS_CLIENT_PSK))
+ {
+ printf("ERROR : Wrong value for result for storing RS_CLIENT_PSK");
+ return ret;
+ }
+
+ memcpy(result, RS_CLIENT_PSK, sizeof(RS_CLIENT_PSK));
+ ret = sizeof(RS_CLIENT_PSK);
+ }
+ break;
+
+ default:
+
+ printf("Wrong value passed for PSK_CRED_TYPE.");
+ ret = -1;
+ }
- printf("SetCredentials OUT\n");
- return 1;
-}
-#endif
-int main(int argc, char **argv)
-{
- testing::InitGoogleTest(&argc, argv);
- return RUN_ALL_TESTS();
+ printf("CAGetDtlsPskCredentials OUT\n");
+ return ret;
}
+#endif //__WITH_DTLS__
// CAInitialize TC
-// check return value
-TEST(InitializeTest, TC_01_Positive_01)
+TEST(InitializeTest, CAInitializeTest)
{
- EXPECT_EQ(CA_STATUS_OK, CAInitialize());
+ EXPECT_EQ(CA_STATUS_OK, CAInitialize(CA_ADAPTER_IP));
CATerminate();
}
char* check = (char *) "terminate success";
EXPECT_STREQ(check, "terminate success");
- CAInitialize();
+ CAInitialize(CA_ADAPTER_IP);
+}
+
+// CAStartListeningServer TC
+TEST_F(CATests, StartListeningServerTestWithNonSelect)
+{
+ EXPECT_EQ(CA_STATUS_FAILED, CAStartListeningServer());
}
+
// CAStartListeningServer TC
-// check return value
-TEST(StartListeningServerTest, DISABLED_TC_03_Positive_01)
+TEST_F(CATests, StartListeningServerTest)
{
- CASelectNetwork(CA_IPV4);
+ EXPECT_EQ(CA_STATUS_OK, CASelectNetwork(CA_ADAPTER_IP));
EXPECT_EQ(CA_STATUS_OK, CAStartListeningServer());
}
-// CAStartDiscoveryServer TC
-// check return value
-TEST(StartDiscoveryServerTest, DISABLED_TC_04_Positive_01)
+// CAStopListeningServer TC
+TEST_F(CATests, CAStopListeningServerTestWithNonSelect)
{
- EXPECT_EQ(CA_STATUS_OK, CAStartDiscoveryServer());
+ EXPECT_EQ(CA_STATUS_FAILED, CAStopListeningServer());
+}
+
+// CAStopListeningServer TC
+TEST_F(CATests, CAStopListeningServerTest)
+{
+ EXPECT_EQ(CA_STATUS_OK, CASelectNetwork(CA_ADAPTER_IP));
+ EXPECT_EQ(CA_STATUS_OK, CAStopListeningServer());
}
// CARegisterHandlerTest TC
-// check return value
TEST_F(CATests, RegisterHandlerTest)
{
CARegisterHandler(request_handler, response_handler, error_handler);
}
// CACreateRemoteEndpoint TC
-// check return value
TEST_F(CATests, CreateRemoteEndpointTestGood)
{
- uri = (char *) URI;
+ addr = (char *) ADDRESS;
- EXPECT_EQ(CA_STATUS_OK, CACreateRemoteEndpoint(uri, CA_IPV4, &tempRep));
+ EXPECT_EQ(CA_STATUS_OK, CACreateEndpoint(CA_DEFAULT_FLAGS, CA_ADAPTER_IP, addr,
+ PORT, &tempRep));
- if (tempRep != NULL)
- {
- CADestroyRemoteEndpoint(tempRep);
- tempRep = NULL;
- }
+ CADestroyEndpoint(tempRep);
+ tempRep = NULL;
}
// check remoteEndpoint and values of remoteEndpoint
TEST_F(CATests, CreateRemoteEndpointTestValues)
{
- uri = (char *) URI;
+ addr = (char *) ADDRESS;
- CACreateRemoteEndpoint(uri, CA_IPV4, &tempRep);
+ CACreateEndpoint(CA_DEFAULT_FLAGS, CA_ADAPTER_IP, addr, PORT, &tempRep);
EXPECT_TRUE(tempRep != NULL);
- if (tempRep != NULL)
- {
- EXPECT_STRNE(NULL, tempRep->resourceUri);
- }
-
- if (tempRep != NULL)
- {
- CADestroyRemoteEndpoint(tempRep);
- tempRep = NULL;
- }
-}
-
-// check return value when uri is NULL
-TEST_F(CATests, CreateRemoteEndpointTestBad)
-{
- uri = NULL;
-
- EXPECT_EQ(CA_STATUS_FAILED, CACreateRemoteEndpoint(uri, CA_IPV4, &tempRep));
-
- if (tempRep != NULL)
- {
- CADestroyRemoteEndpoint(tempRep);
- tempRep = NULL;
- }
-}
-
-// check values of remoteEndpoint when uri is NULL
-TEST_F(CATests, CreateRemoteEndpointTestWithNullUri)
-{
- uri = NULL;
- CACreateRemoteEndpoint(uri, CA_IPV4, &tempRep);
-
- if (tempRep != NULL)
- {
- EXPECT_STREQ(NULL, tempRep->resourceUri);
-
- }
-
- if (tempRep != NULL)
- {
- CADestroyRemoteEndpoint(tempRep);
- tempRep = NULL;
- }
-}
-
-// CADestroyRemoteEndpoint TC
-// check destroyed remoteEndpoint
-TEST_F(CATests, DestroyRemoteEndpointTest)
-{
- uri = (char *) URI;
- CACreateRemoteEndpoint(uri, CA_IPV4, &tempRep);
-
- CADestroyRemoteEndpoint(tempRep);
+ CADestroyEndpoint(tempRep);
tempRep = NULL;
-
- char * check = (char *) "destroy success";
- EXPECT_STREQ(check, "destroy success");
}
// CAGerateToken TC
-// check return value
TEST_F(CATests, GenerateTokenTestGood)
{
EXPECT_EQ(CA_STATUS_OK, CAGenerateToken(&tempToken, tokenLength));
EXPECT_STREQ(check, "destroy success");
}
-// CAFindResource TC
-// check return value
-TEST(FindResourceTest, DISABLED_TC_14_Positive_01)
-{
- uri = (char *) RESOURCE_URI;
-
- CAGenerateToken(&tempToken, tokenLength);
- EXPECT_EQ(CA_STATUS_OK, CAFindResource(uri, tempToken, tokenLength));
- CADestroyToken(tempToken);
-}
-
-// check return value when uri is NULL
-TEST_F(CATests, FindResourceTest)
+TEST_F(CATests, SendRequestTestWithInvalidAddress)
{
- uri = NULL;
- CAGenerateToken(&tempToken, tokenLength);
- EXPECT_EQ(CA_STATUS_INVALID_PARAM, CAFindResource(uri, tempToken, tokenLength));
- CADestroyToken(tempToken);
-}
+ CARegisterHandler(request_handler, response_handler, error_handler);
-// CASendRequest TC
-// check return value
-TEST(SendRequestTest, DISABLED_TC_16_Positive_01)
-{
- uri = (char *) URI;
- CACreateRemoteEndpoint(uri, CA_IPV4, &tempRep);
+ EXPECT_EQ(CA_STATUS_OK, CASelectNetwork(CA_ADAPTER_IP));
+ CACreateEndpoint(CA_DEFAULT_FLAGS, CA_ADAPTER_IP, "10.11.13.13.14", PORT, &tempRep);
memset(&requestData, 0, sizeof(CAInfo_t));
CAGenerateToken(&tempToken, tokenLength);
requestData.token = tempToken;
requestData.tokenLength = tokenLength;
-
- int length = strlen(NORMAL_INFO_DATA) + strlen("a/light");
- requestData.payload = (CAPayload_t) calloc(length, sizeof(char));
-
- if(!requestData.payload)
- {
- CADestroyToken(tempToken);
- FAIL() << "requestData.payload allocation failed";
- }
-
- snprintf(requestData.payload, length, NORMAL_INFO_DATA, "a/light");
- requestData.type = CA_MSG_NONCONFIRM;
+ requestData.type = CA_MSG_CONFIRM;
memset(&requestInfo, 0, sizeof(CARequestInfo_t));
requestInfo.method = CA_GET;
EXPECT_EQ(CA_STATUS_OK, CASendRequest(tempRep, &requestInfo));
CADestroyToken(tempToken);
-
+ CADestroyEndpoint(tempRep);
free(requestData.payload);
-
- CADestroyRemoteEndpoint(tempRep);
tempRep = NULL;
-
}
-// check return value when uri is NULL
-TEST_F(CATests, SendRequestTestWithNullURI)
+// CASendRequest TC
+TEST(SendRequestTest, DISABLED_TC_16_Positive_01)
{
- uri = NULL;
- CACreateRemoteEndpoint(uri, CA_IPV4, &tempRep);
+ addr = (char *) ADDRESS;
+ CACreateEndpoint(CA_DEFAULT_FLAGS, CA_ADAPTER_IP, addr, PORT, &tempRep);
memset(&requestData, 0, sizeof(CAInfo_t));
CAGenerateToken(&tempToken, tokenLength);
requestData.token = tempToken;
requestData.tokenLength = tokenLength;
- int length = strlen(NORMAL_INFO_DATA) + strlen("a/light");
+ size_t length = strlen(NORMAL_INFO_DATA) + strlen("a/light");
requestData.payload = (CAPayload_t) calloc(length, sizeof(char));
-
if(!requestData.payload)
{
CADestroyToken(tempToken);
FAIL() << "requestData.payload allocation failed";
}
-
- snprintf(requestData.payload, length, NORMAL_INFO_DATA, "a/light");
+ snprintf((char*)requestData.payload, length, NORMAL_INFO_DATA, "a/light");
+ requestData.payloadSize = length + 1;
requestData.type = CA_MSG_NONCONFIRM;
memset(&requestInfo, 0, sizeof(CARequestInfo_t));
requestInfo.method = CA_GET;
requestInfo.info = requestData;
- EXPECT_EQ(CA_STATUS_INVALID_PARAM, CASendRequest(tempRep, &requestInfo));
+ EXPECT_EQ(CA_STATUS_OK, CASendRequest(tempRep, &requestInfo));
CADestroyToken(tempToken);
-
+ CADestroyEndpoint(tempRep);
free(requestData.payload);
-
- if (tempRep != NULL)
- {
- CADestroyRemoteEndpoint(tempRep);
- tempRep = NULL;
- }
+ tempRep = NULL;
}
// check return value when a NULL is passed instead of a valid CARequestInfo_t address
TEST_F(CATests, SendRequestTestWithNullAddr)
{
- uri = (char *) URI;
- CACreateRemoteEndpoint(uri, CA_IPV4, &tempRep);
+ addr = (char *) ADDRESS;
+ CACreateEndpoint(CA_DEFAULT_FLAGS, CA_ADAPTER_IP, addr, PORT, &tempRep);
EXPECT_EQ(CA_STATUS_INVALID_PARAM, CASendRequest(tempRep, NULL));
- if (tempRep != NULL)
- {
- CADestroyRemoteEndpoint(tempRep);
- tempRep = NULL;
- }
-}
-
-// CASendResponse TC
-// check return value
-TEST(SendResponseTest, DISABLED_TC_19_Positive_01)
-{
- uri = (char *) URI;
- CACreateRemoteEndpoint(uri, CA_IPV4, &tempRep);
-
- memset(&responseData, 0, sizeof(CAInfo_t));
- responseData.type = CA_MSG_NONCONFIRM;
- responseData.messageId = 1;
- responseData.payload = (char *) "response payload";
-
- CAGenerateToken(&tempToken, tokenLength);
- requestData.token = tempToken;
- requestData.tokenLength = tokenLength;
-
- memset(&responseInfo, 0, sizeof(CAResponseInfo_t));
- responseInfo.result = CA_SUCCESS;
- responseInfo.info = responseData;
-
- EXPECT_EQ(CA_STATUS_OK, CASendResponse(tempRep, &responseInfo));
-
- CADestroyToken(tempToken);
- CADestroyRemoteEndpoint(tempRep);
+ CADestroyEndpoint(tempRep);
tempRep = NULL;
}
-// check return value when uri is NULL
-TEST(SendResponseTest, DISABLED_TC_20_Negative_01)
+TEST_F(CATests, SendResponseTestWithInvalidCode)
{
- uri = NULL;
- CACreateRemoteEndpoint(uri, CA_IPV4, &tempRep);
+ EXPECT_EQ(CA_STATUS_OK, CASelectNetwork(CA_ADAPTER_IP));
+
+ addr = (char *) ADDRESS;
+ CACreateEndpoint(CA_DEFAULT_FLAGS, CA_ADAPTER_IP, addr, PORT, &tempRep);
memset(&responseData, 0, sizeof(CAInfo_t));
- responseData.type = CA_MSG_NONCONFIRM;
+ responseData.type = CA_MSG_RESET;
responseData.messageId = 1;
- responseData.payload = (char *) "response payload";
+ responseData.payload = (CAPayload_t)OICMalloc(sizeof("response payload"));
+ responseData.dataType = CA_RESPONSE_DATA;
- CAGenerateToken(&tempToken, tokenLength);
- requestData.token = tempToken;
- requestData.tokenLength = tokenLength;
-
- memset(&responseInfo, 0, sizeof(CAResponseInfo_t));
- responseInfo.result = CA_SUCCESS;
- responseInfo.info = responseData;
+ EXPECT_TRUE(responseData.payload != NULL);
- EXPECT_EQ(CA_STATUS_INVALID_PARAM, CASendResponse(tempRep, &responseInfo));
-
- CADestroyToken(tempToken);
- if (tempRep != NULL)
+ if (responseData.payload)
{
- CADestroyRemoteEndpoint(tempRep);
- tempRep = NULL;
- }
-}
+ CAGenerateToken(&tempToken, tokenLength);
+ requestData.token = tempToken;
+ requestData.tokenLength = tokenLength;
-// check return value NULL is passed instead of a valid CAResponseInfo_t address
-TEST_F(CATests, SendResponseTest)
-{
- uri = (char *) URI;
- CACreateRemoteEndpoint(uri, CA_IPV4, &tempRep);
+ memset(&responseInfo, 0, sizeof(CAResponseInfo_t));
+ responseInfo.result = CA_CONTENT;
+ responseInfo.info = responseData;
- EXPECT_EQ(CA_STATUS_INVALID_PARAM, CASendResponse(tempRep, NULL));
+ EXPECT_EQ(CA_STATUS_OK, CASendResponse(tempRep, &responseInfo));
- if (tempRep != NULL)
- {
- CADestroyRemoteEndpoint(tempRep);
+ CADestroyToken(tempToken);
+ CADestroyEndpoint(tempRep);
+ OICFree(responseData.payload);
tempRep = NULL;
}
}
-// CASendNotification TC
-// check return value
-TEST(SendNotificationTest, DISABLED_TC_22_Positive_01)
+// CASendResponse TC
+TEST(SendResponseTest, DISABLED_TC_19_Positive_01)
{
- uri = (char *) URI;
- CACreateRemoteEndpoint(uri, CA_IPV4, &tempRep);
+ addr = (char *) ADDRESS;
+ CACreateEndpoint(CA_DEFAULT_FLAGS, CA_ADAPTER_IP, addr, PORT, &tempRep);
memset(&responseData, 0, sizeof(CAInfo_t));
responseData.type = CA_MSG_NONCONFIRM;
- responseData.payload = (char *) "Temp Notification Data";
-
- CAGenerateToken(&tempToken, tokenLength);
- requestData.token = tempToken;
- requestData.tokenLength = tokenLength;
-
- memset(&responseInfo, 0, sizeof(CAResponseInfo_t));
- responseInfo.result = CA_SUCCESS;
- responseInfo.info = responseData;
-
- EXPECT_EQ(CA_STATUS_OK, CASendNotification(tempRep, &responseInfo));
+ responseData.messageId = 1;
+ responseData.payload = (CAPayload_t)malloc(sizeof("response payload"));
+ responseData.dataType = CA_RESPONSE_DATA;
- CADestroyToken(tempToken);
- if (tempRep != NULL)
+ EXPECT_TRUE(responseData.payload != NULL);
+ if(!responseData.payload)
{
- CADestroyRemoteEndpoint(tempRep);
- tempRep = NULL;
+ CADestroyEndpoint(tempRep);
+ return;
}
-}
-// check return value when uri is NULL
-TEST_F(CATests, SendNotificationTest)
-{
- uri = NULL;
- CACreateRemoteEndpoint(uri, CA_IPV4, &tempRep);
-
- memset(&responseData, 0, sizeof(CAInfo_t));
- responseData.type = CA_MSG_NONCONFIRM;
- responseData.payload = (char *) "Temp Notification Data";
+ memcpy(responseData.payload, "response payload", sizeof("response payload"));
+ responseData.payloadSize = sizeof("response payload");
CAGenerateToken(&tempToken, tokenLength);
requestData.token = tempToken;
requestData.tokenLength = tokenLength;
memset(&responseInfo, 0, sizeof(CAResponseInfo_t));
- responseInfo.result = CA_SUCCESS;
+ responseInfo.result = CA_CONTENT;
responseInfo.info = responseData;
- EXPECT_EQ(CA_STATUS_INVALID_PARAM, CASendNotification(tempRep, &responseInfo));
+ EXPECT_EQ(CA_STATUS_OK, CASendResponse(tempRep, &responseInfo));
CADestroyToken(tempToken);
- if (tempRep != NULL)
- {
- CADestroyRemoteEndpoint(tempRep);
- tempRep = NULL;
- }
+ CADestroyEndpoint(tempRep);
+ free(responseData.payload);
+ tempRep = NULL;
}
-// CAAdvertiseResource TC
-// check return value
-TEST(AdvertiseResourceTest, DISABLED_TC_24_Positive_01)
+// check return value when address is NULL as multicast
+TEST(SendResponseTest, DISABLED_TC_20_Negative_01)
{
- uri = (char *) RESOURCE_URI;
- int optionNum = 2;
+ addr = NULL;
+ CACreateEndpoint(CA_DEFAULT_FLAGS, CA_ADAPTER_IP, addr, 0, &tempRep);
- CAHeaderOption_t* headerOpt;
- headerOpt = (CAHeaderOption_t *) calloc(1, optionNum * sizeof(CAHeaderOption_t));
+ memset(&responseData, 0, sizeof(CAInfo_t));
+ responseData.type = CA_MSG_NONCONFIRM;
+ responseData.messageId = 1;
+ responseData.payload = (CAPayload_t)malloc(sizeof("response payload"));
+ responseData.dataType = CA_RESPONSE_DATA;
+ EXPECT_TRUE(responseData.payload != NULL);
- if(!headerOpt)
+ if(!responseData.payload)
{
- FAIL() <<"Allocation for headerOpt failed";
+ CADestroyEndpoint(tempRep);
+ return;
}
- char* tmpOptionData1 = (char *) "Hello";
- size_t tmpOptionDataLen = (strlen(tmpOptionData1) < CA_MAX_HEADER_OPTION_DATA_LENGTH) ?
- strlen(tmpOptionData1) : CA_MAX_HEADER_OPTION_DATA_LENGTH - 1;
- headerOpt[0].optionID = 3000;
- memcpy(headerOpt[0].optionData, tmpOptionData1, tmpOptionDataLen);
- headerOpt[0].optionLength = (uint16_t) tmpOptionDataLen;
-
- char* tmpOptionData2 = (char *) "World";
- tmpOptionDataLen = (strlen(tmpOptionData2) < CA_MAX_HEADER_OPTION_DATA_LENGTH) ?
- strlen(tmpOptionData2) : CA_MAX_HEADER_OPTION_DATA_LENGTH - 1;
- headerOpt[1].optionID = 3001;
- memcpy(headerOpt[1].optionData, tmpOptionData2, tmpOptionDataLen);
- headerOpt[1].optionLength = (uint16_t) tmpOptionDataLen;
+ memcpy(responseData.payload, "response payload", sizeof("response payload"));
+ responseData.payloadSize = sizeof("response payload");
CAGenerateToken(&tempToken, tokenLength);
+ requestData.token = tempToken;
+ requestData.tokenLength = tokenLength;
+
+ memset(&responseInfo, 0, sizeof(CAResponseInfo_t));
+ responseInfo.result = CA_CONTENT;
+ responseInfo.info = responseData;
- EXPECT_EQ(CA_STATUS_OK, CAAdvertiseResource(uri, tempToken, tokenLength,
- headerOpt, (uint8_t )optionNum));
+ EXPECT_EQ(CA_STATUS_OK, CASendResponse(tempRep, &responseInfo));
CADestroyToken(tempToken);
-
- free(headerOpt);
+ CADestroyEndpoint(tempRep);
+ free (responseData.payload);
+ tempRep = NULL;
}
-// check return value when uri is NULL
-TEST_F(CATests, AdvertiseResourceTest)
+// check return value NULL is passed instead of a valid CAResponseInfo_t address
+TEST_F(CATests, SendResponseTest)
{
- uri = NULL;
- int optionNum = 2;
-
- CAHeaderOption_t* headerOpt;
- headerOpt = (CAHeaderOption_t *) calloc(1, optionNum * sizeof(CAHeaderOption_t));
-
- if(!headerOpt)
- {
- FAIL() << "Allocation for headerOpt failed";
- }
-
- char* tmpOptionData1 = (char *) "Hello";
- size_t tmpOptionDataLen = (strlen(tmpOptionData1) < CA_MAX_HEADER_OPTION_DATA_LENGTH) ?
- strlen(tmpOptionData1) : CA_MAX_HEADER_OPTION_DATA_LENGTH - 1;
- headerOpt[0].optionID = 3000;
- memcpy(headerOpt[0].optionData, tmpOptionData1, tmpOptionDataLen);
- headerOpt[0].optionLength = (uint16_t) tmpOptionDataLen;
+ addr = (char *) ADDRESS;
+ CACreateEndpoint(CA_DEFAULT_FLAGS, CA_ADAPTER_IP, addr, PORT, &tempRep);
- char* tmpOptionData2 = (char *) "World";
- tmpOptionDataLen = (strlen(tmpOptionData2) < CA_MAX_HEADER_OPTION_DATA_LENGTH) ?
- strlen(tmpOptionData2) : CA_MAX_HEADER_OPTION_DATA_LENGTH - 1;
- headerOpt[1].optionID = 3001;
- memcpy(headerOpt[1].optionData, tmpOptionData2, tmpOptionDataLen);
- headerOpt[1].optionLength = (uint16_t) tmpOptionDataLen;
-
- CAGenerateToken(&tempToken, tokenLength);
-
- EXPECT_EQ(CA_STATUS_INVALID_PARAM, CAAdvertiseResource(uri, tempToken, tokenLength,
- headerOpt, (uint8_t )optionNum));
-
- CADestroyToken(tempToken);
+ EXPECT_EQ(CA_STATUS_INVALID_PARAM, CASendResponse(tempRep, NULL));
- free(headerOpt);
+ CADestroyEndpoint(tempRep);
+ tempRep = NULL;
}
// CASelectNewwork TC
-// check return value
TEST_F(CATests, SelectNetworkTestGood)
{
- CAResult_t res = checkSelectNetwork();
- EXPECT_EQ(CA_STATUS_OK, res);
+ EXPECT_EQ(CA_STATUS_OK, checkSelectNetwork());
}
CAResult_t checkSelectNetwork()
{
- CAResult_t res = CASelectNetwork(CA_IPV4);
+ CAResult_t res = CASelectNetwork(CA_ADAPTER_IP);
if (CA_STATUS_OK == res)
{
- EXPECT_EQ(CA_STATUS_OK, CAUnSelectNetwork(CA_IPV4));
+ EXPECT_EQ(CA_STATUS_OK, CAUnSelectNetwork(CA_ADAPTER_IP));
return CA_STATUS_OK;
}
if (CA_NOT_SUPPORTED == res)
{
- EXPECT_EQ(CA_STATUS_FAILED, CAUnSelectNetwork(CA_IPV4));
+ EXPECT_EQ(CA_STATUS_FAILED, CAUnSelectNetwork(CA_ADAPTER_IP));
return CA_STATUS_OK;
}
TEST_F(CATests, SelectNetworkTestBad)
{
//Select disable network
- EXPECT_EQ(CA_NOT_SUPPORTED, CASelectNetwork(1000));
+ EXPECT_EQ(CA_NOT_SUPPORTED, CASelectNetwork((CATransportAdapter_t)
+ CA_TRANSPORT_ADAPTER_SCOPE));
}
// check return value when selected network is disable
TEST_F(CATests, UnSelectNetworkTest)
{
//UnSelect disable network
- EXPECT_EQ(CA_STATUS_FAILED, CAUnSelectNetwork(1000));
+ EXPECT_EQ(CA_STATUS_FAILED, CAUnSelectNetwork((CATransportAdapter_t)
+ CA_TRANSPORT_ADAPTER_SCOPE));
}
// CAHandlerRequestResponse TC
-// check return value
TEST_F(CATests, HandlerRequestResponseTest)
{
EXPECT_EQ(CA_STATUS_OK, CAHandleRequestResponse());
}
-// CASendRequestToAll TC
-// check return value
-TEST(SendRequestToAllTest, DISABLED_TC_31_Positive_01)
+// CAGetNetworkInformation TC
+TEST_F (CATests, GetNetworkInformationTest)
{
- CASelectNetwork(CA_IPV4);
+ uint32_t tempSize = 0;
+ CAEndpoint_t *tempInfo = NULL;
+
+ EXPECT_EQ(CA_STATUS_OK, CASelectNetwork(CA_ADAPTER_IP));
+ EXPECT_EQ(CA_STATUS_OK, CAGetNetworkInformation(&tempInfo, &tempSize));
- uri = (char *) RESOURCE_URI;
- CACreateRemoteEndpoint(uri, CA_IPV4, &tempRep);
- CAGroupEndpoint_t *group = NULL;
- group = (CAGroupEndpoint_t *) malloc(sizeof(CAGroupEndpoint_t));
- if(!group)
+// @todo: if this api is supported on windows platform, it should be changed.
+#if !defined(_WIN32)
+ for (uint32_t index = 0; index < tempSize; index++)
{
- FAIL() << "Allocation for group failed";
+ EXPECT_TRUE(tempInfo[index].adapter != 0);
+ EXPECT_TRUE(strlen(tempInfo[index].addr) != 0);
}
+#endif
- group->transportType = tempRep->transportType;
- group->resourceUri = tempRep->resourceUri;
-
- memset(&requestData, 0, sizeof(CAInfo_t));
- CAGenerateToken(&tempToken, tokenLength);
- requestData.token = tempToken;
- requestData.tokenLength = tokenLength;
-
- requestData.payload = (char *) "Temp Json Payload";
- requestData.type = CA_MSG_NONCONFIRM;
- memset(&requestInfo, 0, sizeof(CARequestInfo_t));
- requestInfo.method = CA_GET;
- requestInfo.info = requestData;
-
- EXPECT_EQ(CA_STATUS_OK, CASendRequestToAll(group, &requestInfo));
-
- CADestroyToken(tempToken);
-
- CADestroyRemoteEndpoint(tempRep);
- tempRep = NULL;
-
- free(group);
+ free(tempInfo);
}
-// check return value when group->resourceUri is NULL
-TEST(SendRequestToAllTest, DISABLED_TC_32_Negative_01)
+TEST_F(CATests, RegisterDTLSCredentialsHandlerTest)
{
- uri = (char *) RESOURCE_URI;
- CAGroupEndpoint_t *group = NULL;
-
- memset(&requestData, 0, sizeof(CAInfo_t));
- CAGenerateToken(&tempToken, tokenLength);
- requestData.token = tempToken;
- requestData.tokenLength = tokenLength;
-
- requestData.payload = (char *) "Temp Json Payload";
- requestData.type = CA_MSG_NONCONFIRM;
- memset(&requestInfo, 0, sizeof(CARequestInfo_t));
- requestInfo.method = CA_GET;
- requestInfo.info = requestData;
-
- EXPECT_EQ(CA_STATUS_INVALID_PARAM, CASendRequestToAll(group, &requestInfo));
-
- CADestroyToken(tempToken);
+#ifdef __WITH_DTLS__
+ EXPECT_EQ(CA_STATUS_OK, CAregisterPskCredentialsHandler(CAGetDtlsPskCredentials));
+#endif
}
-// CAGetNetworkInformation TC
-// check return value
-TEST_F (CATests, GetNetworkInformationTestGood)
+// CARegisterNetworkMonitorHandler TC
+TEST_F(CATests, RegisterNetworkMonitorHandler)
{
- EXPECT_EQ(CA_STATUS_OK, checkGetNetworkInfo());
+ EXPECT_EQ(CA_STATUS_OK, CARegisterNetworkMonitorHandler(adapter_handler,
+ connection_handler));
}
-TEST_F(CATests, RegisterDTLSCredentialsHandlerTest)
+// CASetAutoConnectionDeviceInfo TC
+TEST_F(CATests, SetAutoConnectionDeviceInfo)
{
-#ifdef __WITH_DTLS__
- if (SetCredentials() == 0)
- {
- printf("SetCredentials failed\n");
- }
+ addr = (char *) ADDRESS;
- EXPECT_EQ(CA_STATUS_OK, CARegisterDTLSCredentialsHandler(CAGetDtlsPskCredentials));
+#if defined(__ANDROID__) && defined(LE_ADAPTER)
+ EXPECT_EQ(CA_STATUS_OK, CASetAutoConnectionDeviceInfo(addr));
+#else
+ EXPECT_EQ(CA_NOT_SUPPORTED, CASetAutoConnectionDeviceInfo(addr));
#endif
}
-CAResult_t checkGetNetworkInfo()
+// CAUnsetAutoConnectionDeviceInfo TC
+TEST_F(CATests, UnsetAutoConnectionDeviceInfo)
{
- CALocalConnectivity_t *tempInfo = NULL;
- uint32_t tempSize = 0;
+ addr = (char *) ADDRESS;
- CAResult_t res = CAGetNetworkInformation(&tempInfo, &tempSize);
+#if defined(__ANDROID__) && defined(LE_ADAPTER)
+ EXPECT_EQ(CA_STATUS_OK, CAUnsetAutoConnectionDeviceInfo(addr));
+#else
+ EXPECT_EQ(CA_NOT_SUPPORTED, CAUnsetAutoConnectionDeviceInfo(addr));
+#endif
+}
- free(tempInfo);
+TEST(CASetPortNumberTest, CASetPortNumberToAssign)
+{
+ EXPECT_EQ(CA_STATUS_OK, CASetPortNumberToAssign(CA_ADAPTER_IP, CA_IPV4, 5683));
+ EXPECT_EQ(CA_STATUS_OK, CASetPortNumberToAssign(CA_ADAPTER_IP, CA_IPV6, 5683));
+ EXPECT_EQ(CA_STATUS_OK,
+ CASetPortNumberToAssign(CA_ADAPTER_IP,
+ static_cast<CATransportFlags_t>(CA_IPV4|CA_SECURE), 5683));
+ EXPECT_EQ(CA_STATUS_OK,
+ CASetPortNumberToAssign(CA_ADAPTER_IP,
+ static_cast<CATransportFlags_t>(CA_IPV6|CA_SECURE), 5683));
- if (CA_STATUS_OK == res || CA_ADAPTER_NOT_ENABLED == res ||
- CA_NOT_SUPPORTED == res)
- {
- return CA_STATUS_OK;
- }
- else
- {
- return CA_STATUS_FAILED;
- }
+#ifdef TCP_ADAPTER
+ EXPECT_EQ(CA_STATUS_OK, CASetPortNumberToAssign(CA_ADAPTER_TCP, CA_IPV4, 5683));
+ EXPECT_EQ(CA_STATUS_OK, CASetPortNumberToAssign(CA_ADAPTER_TCP, CA_IPV6, 5683));
+#endif
+}
+
+TEST(CAGetPortNumberTest, CAGetPortNumberToAssign)
+{
+ ASSERT_EQ(static_cast<uint16_t>(0),
+ CAGetAssignedPortNumber(CA_ADAPTER_IP, CA_IPV4));
+ ASSERT_EQ(static_cast<uint16_t>(0),
+ CAGetAssignedPortNumber(CA_ADAPTER_IP, CA_IPV6));
+ ASSERT_EQ(static_cast<uint16_t>(0),
+ CAGetAssignedPortNumber(CA_ADAPTER_IP,
+ static_cast<CATransportFlags_t>(CA_IPV4|CA_SECURE)));
+ ASSERT_EQ(static_cast<uint16_t>(0),
+ CAGetAssignedPortNumber(CA_ADAPTER_IP,
+ static_cast<CATransportFlags_t>(CA_IPV6|CA_SECURE)));
+#ifdef TCP_ADAPTER
+ ASSERT_EQ(static_cast<uint16_t>(0), CAGetAssignedPortNumber(CA_ADAPTER_TCP, CA_IPV4));
+ ASSERT_EQ(static_cast<uint16_t>(0), CAGetAssignedPortNumber(CA_ADAPTER_TCP, CA_IPV6));
+#endif
}