replace : iotivity -> iotivity-sec
[platform/upstream/iotivity.git] / resource / csdk / connectivity / test / cablocktransfertest.cpp
index 09e7550..9fdb526 100644 (file)
@@ -31,7 +31,7 @@ class CABlockTransferTests : public testing::Test {
     protected:
     virtual void SetUp()
     {
-        CAInitialize();
+        CAInitialize(CA_ADAPTER_IP);
     }
 
     virtual void TearDown()
@@ -47,7 +47,7 @@ TEST_F(CABlockTransferTests, CACreateNewDataSetTest)
 
     coap_pdu_t *pdu = NULL;
     coap_list_t *options = NULL;
-    coap_transport_type transport = coap_udp;
+    coap_transport_t transport = COAP_UDP;
 
     CAToken_t tempToken = NULL;
     CAGenerateToken(&tempToken, CA_MAX_TOKEN_LEN);
@@ -81,7 +81,58 @@ TEST_F(CABlockTransferTests, CACreateNewDataSetTest)
         CAData_t *getData = CAGetDataSetFromBlockDataList(currData->blockDataId);
         EXPECT_TRUE(getData != NULL);
 
-        CARemoveBlockDataFromList(currData->blockDataId);
+        EXPECT_EQ(CA_STATUS_OK, CARemoveBlockDataFromList(currData->blockDataId));
+    }
+
+    CADestroyDataSet(cadata);
+    coap_delete_list(options);
+    coap_delete_pdu(pdu);
+
+    CADestroyToken(tempToken);
+    CADestroyEndpoint(tempRep);
+    free(requestData.payload);
+}
+
+TEST_F(CABlockTransferTests, CARemoveBlockDataFromListWithSeed)
+{
+    CAEndpoint_t* tempRep = NULL;
+    CACreateEndpoint(CA_DEFAULT_FLAGS, CA_ADAPTER_IP, "127.0.0.1", 5683, &tempRep);
+
+    coap_pdu_t *pdu = NULL;
+    coap_list_t *options = NULL;
+    coap_transport_t transport = COAP_UDP;
+
+    CAToken_t tempToken = NULL;
+    CAGenerateToken(&tempToken, CA_MAX_TOKEN_LEN);
+
+    CAInfo_t requestData;
+    memset(&requestData, 0, sizeof(CAInfo_t));
+    requestData.token = tempToken;
+    requestData.tokenLength = CA_MAX_TOKEN_LEN;
+    requestData.type = CA_MSG_NONCONFIRM;
+
+    requestData.payload = (CAPayload_t) calloc(LARGE_PAYLOAD_LENGTH, sizeof(char));
+    if (!requestData.payload)
+    {
+        CADestroyToken(tempToken);
+        FAIL() << "requestData.payload allocation failed";
+    }
+    memset(requestData.payload, '1', sizeof(requestData.payload) - 1);
+    requestData.payloadSize = sizeof(requestData.payload);
+    requestData.type = CA_MSG_NONCONFIRM;
+
+    pdu = CAGeneratePDU(CA_GET, &requestData, tempRep, &options, &transport);
+
+    CAData_t *cadata = CACreateNewDataSet(pdu, tempRep);
+    EXPECT_TRUE(cadata != NULL);
+
+    CABlockData_t *currData = CACreateNewBlockData(cadata);
+    EXPECT_TRUE(currData != NULL);
+
+    if (currData)
+    {
+        EXPECT_EQ(CA_STATUS_OK, CARemoveBlockDataFromListWithSeed(tempToken,
+                                                                  CA_MAX_TOKEN_LEN, 5683));
     }
 
     CADestroyDataSet(cadata);
@@ -100,7 +151,7 @@ TEST_F(CABlockTransferTests, CAGetBlockDataFromBlockDataListTest)
 
     coap_pdu_t *pdu = NULL;
     coap_list_t *options = NULL;
-    coap_transport_type transport = coap_udp;
+    coap_transport_t transport = COAP_UDP;
 
     CAToken_t tempToken = NULL;
     CAGenerateToken(&tempToken, CA_MAX_TOKEN_LEN);
@@ -124,7 +175,7 @@ TEST_F(CABlockTransferTests, CAGetBlockDataFromBlockDataListTest)
         CABlockData_t *data = CAGetBlockDataFromBlockDataList(currData->blockDataId);
         EXPECT_TRUE(data != NULL);
 
-        CARemoveBlockDataFromList(currData->blockDataId);
+        EXPECT_EQ(CA_STATUS_OK, CARemoveBlockDataFromList(currData->blockDataId));
     }
 
     CADestroyDataSet(cadata);
@@ -143,7 +194,7 @@ TEST_F(CABlockTransferTests, CAGetPayloadFromBlockDataListTest)
 
     coap_pdu_t *pdu = NULL;
     coap_list_t *options = NULL;
-    coap_transport_type transport = coap_udp;
+    coap_transport_t transport = COAP_UDP;
 
     CAToken_t tempToken = NULL;
     CAGenerateToken(&tempToken, CA_MAX_TOKEN_LEN);
@@ -162,14 +213,18 @@ TEST_F(CABlockTransferTests, CAGetPayloadFromBlockDataListTest)
     CABlockData_t *currData = CACreateNewBlockData(cadata);
     EXPECT_TRUE(currData != NULL);
 
-    size_t fullPayload = 0;
-    CAPayload_t payload = CAGetPayloadFromBlockDataList(currData->blockDataId,
-                                                        &fullPayload);
+    if (currData)
+    {
+        size_t fullPayload = 0;
+        CAPayload_t payload = CAGetPayloadFromBlockDataList(currData->blockDataId,
+                                                            &fullPayload);
 
-    size_t payloadLen = (payload != NULL) ? strlen((const char*) payload) : 0;
-    EXPECT_TRUE(fullPayload == payloadLen);
+        size_t payloadLen = (payload != NULL) ? strlen((const char*) payload) : 0;
+        EXPECT_TRUE(fullPayload == payloadLen);
+
+        CARemoveBlockDataFromList(currData->blockDataId);
+    }
 
-    CARemoveBlockDataFromList(currData->blockDataId);
     CADestroyDataSet(cadata);
     coap_delete_list(options);
     coap_delete_pdu(pdu);
@@ -187,7 +242,7 @@ TEST_F(CABlockTransferTests, CAAddBlockOptionTest)
 
     coap_pdu_t *pdu = NULL;
     coap_list_t *options = NULL;
-    coap_transport_type transport = coap_udp;
+    coap_transport_t transport = COAP_UDP;
 
     CAToken_t tempToken = NULL;
     CAGenerateToken(&tempToken, CA_MAX_TOKEN_LEN);
@@ -227,7 +282,7 @@ TEST_F(CABlockTransferTests, CAAddBlockOption1InRequest)
 
     coap_pdu_t *pdu = NULL;
     coap_list_t *options = NULL;
-    coap_transport_type transport = coap_udp;
+    coap_transport_t transport = COAP_UDP;
 
     CAToken_t tempToken = NULL;
     CAGenerateToken(&tempToken, CA_MAX_TOKEN_LEN);
@@ -255,12 +310,15 @@ TEST_F(CABlockTransferTests, CAAddBlockOption1InRequest)
     CABlockData_t *currData = CACreateNewBlockData(cadata);
     EXPECT_TRUE(currData != NULL);
 
-    EXPECT_EQ(CA_STATUS_OK, CAUpdateBlockOptionType(currData->blockDataId,
-                                                    COAP_OPTION_BLOCK1));
+    if (currData)
+    {
+        EXPECT_EQ(CA_STATUS_OK, CAUpdateBlockOptionType(currData->blockDataId,
+                                                        COAP_OPTION_BLOCK1));
 
-    EXPECT_EQ(CA_STATUS_OK, CAAddBlockOption1(&pdu, &requestData,
-                                              requestData.payloadSize,
-                                              currData->blockDataId, &options));
+        EXPECT_EQ(CA_STATUS_OK, CAAddBlockOption1(&pdu, &requestData,
+                                                  requestData.payloadSize,
+                                                  currData->blockDataId, &options));
+    }
 
     CADestroyDataSet(cadata);
     coap_delete_list(options);
@@ -279,7 +337,7 @@ TEST_F(CABlockTransferTests, CAAddBlockOption1InResponse)
 
     coap_pdu_t *pdu = NULL;
     coap_list_t *options = NULL;
-    coap_transport_type transport = coap_udp;
+    coap_transport_t transport = COAP_UDP;
 
     CAToken_t tempToken = NULL;
     CAGenerateToken(&tempToken, CA_MAX_TOKEN_LEN);
@@ -308,12 +366,15 @@ TEST_F(CABlockTransferTests, CAAddBlockOption1InResponse)
     CABlockData_t *currData = CACreateNewBlockData(cadata);
     EXPECT_TRUE(currData != NULL);
 
-    EXPECT_EQ(CA_STATUS_OK, CAUpdateBlockOptionType(currData->blockDataId,
-                                                    COAP_OPTION_BLOCK1));
+    if (currData)
+    {
+        EXPECT_EQ(CA_STATUS_OK, CAUpdateBlockOptionType(currData->blockDataId,
+                                                        COAP_OPTION_BLOCK1));
 
-    EXPECT_EQ(CA_STATUS_OK, CAAddBlockOption1(&pdu, &responseData,
-                                              responseData.payloadSize,
-                                              currData->blockDataId, &options));
+        EXPECT_EQ(CA_STATUS_OK, CAAddBlockOption1(&pdu, &responseData,
+                                                  responseData.payloadSize,
+                                                  currData->blockDataId, &options));
+    }
 
     CADestroyDataSet(cadata);
     coap_delete_list(options);
@@ -332,7 +393,7 @@ TEST_F(CABlockTransferTests, CAAddBlockOption2InResponse)
 
     coap_pdu_t *pdu = NULL;
     coap_list_t *options = NULL;
-    coap_transport_type transport = coap_udp;
+    coap_transport_t transport = COAP_UDP;
 
     CAToken_t tempToken = NULL;
     CAGenerateToken(&tempToken, CA_MAX_TOKEN_LEN);
@@ -361,12 +422,15 @@ TEST_F(CABlockTransferTests, CAAddBlockOption2InResponse)
     CABlockData_t *currData = CACreateNewBlockData(cadata);
     EXPECT_TRUE(currData != NULL);
 
-    EXPECT_EQ(CA_STATUS_OK, CAUpdateBlockOptionType(currData->blockDataId,
-                                                    COAP_OPTION_BLOCK2));
+    if (currData)
+    {
+        EXPECT_EQ(CA_STATUS_OK, CAUpdateBlockOptionType(currData->blockDataId,
+                                                        COAP_OPTION_BLOCK2));
 
-    EXPECT_EQ(CA_STATUS_OK, CAAddBlockOption2(&pdu, &responseData,
-                                              responseData.payloadSize,
-                                              currData->blockDataId, &options));
+        EXPECT_EQ(CA_STATUS_OK, CAAddBlockOption2(&pdu, &responseData,
+                                                  responseData.payloadSize,
+                                                  currData->blockDataId, &options));
+    }
 
     CADestroyDataSet(cadata);
     coap_delete_list(options);
@@ -385,7 +449,7 @@ TEST_F(CABlockTransferTests, CAAddBlockOption2InRequest)
 
     coap_pdu_t *pdu = NULL;
     coap_list_t *options = NULL;
-    coap_transport_type transport = coap_udp;
+    coap_transport_t transport = COAP_UDP;
 
     CAToken_t tempToken = NULL;
     CAGenerateToken(&tempToken, CA_MAX_TOKEN_LEN);
@@ -413,14 +477,16 @@ TEST_F(CABlockTransferTests, CAAddBlockOption2InRequest)
     CABlockData_t *currData = CACreateNewBlockData(cadata);
     EXPECT_TRUE(currData != NULL);
 
-    EXPECT_EQ(CA_STATUS_OK, CAUpdateBlockOptionType(currData->blockDataId,
-                                                    COAP_OPTION_BLOCK2));
+    if (currData)
+    {
+        EXPECT_EQ(CA_STATUS_OK, CAUpdateBlockOptionType(currData->blockDataId,
+                                                        COAP_OPTION_BLOCK2));
 
-    EXPECT_EQ(CA_STATUS_OK, CAAddBlockOption2(&pdu, &requestData,
-                                              requestData.payloadSize,
-                                              currData->blockDataId, &options));
+        EXPECT_EQ(CA_STATUS_OK, CAAddBlockOption2(&pdu, &requestData,
+                                                  requestData.payloadSize,
+                                                  currData->blockDataId, &options));
+    }
 
-    CARemoveBlockDataFromList(currData->blockDataId);
     CADestroyDataSet(cadata);
     coap_delete_list(options);
     coap_delete_pdu(pdu);
@@ -437,7 +503,7 @@ TEST_F(CABlockTransferTests, CAGetBlockSizeOptionFromPduTest)
 
     coap_pdu_t *pdu = NULL;
     coap_list_t *options = NULL;
-    coap_transport_type transport = coap_udp;
+    coap_transport_t transport = COAP_UDP;
 
     CAToken_t tempToken = NULL;
     CAGenerateToken(&tempToken, CA_MAX_TOKEN_LEN);
@@ -462,14 +528,52 @@ TEST_F(CABlockTransferTests, CAGetBlockSizeOptionFromPduTest)
     free(requestData.payload);
 }
 
-TEST_F(CABlockTransferTests, CASetNextBlockOption1Test)
+TEST_F(CABlockTransferTests, CASetNextBlockOption1WithRequest)
+{
+    CAEndpoint_t* tempRep = NULL;
+    CACreateEndpoint(CA_DEFAULT_FLAGS, CA_ADAPTER_IP, "127.0.0.1", 5683, &tempRep);
+
+    coap_pdu_t *pdu = NULL;
+    coap_list_t *options = NULL;
+    coap_transport_t transport = COAP_UDP;
+
+    CAToken_t tempToken = NULL;
+    CAGenerateToken(&tempToken, CA_MAX_TOKEN_LEN);
+
+    CAInfo_t requestData;
+    memset(&requestData, 0, sizeof(CAInfo_t));
+    requestData.token = tempToken;
+    requestData.tokenLength = CA_MAX_TOKEN_LEN;
+    requestData.type = CA_MSG_NONCONFIRM;
+
+    pdu = CAGeneratePDU(CA_GET, &requestData, tempRep, &options, &transport);
+
+    CAData_t *cadata = CACreateNewDataSet(pdu, tempRep);
+    EXPECT_TRUE(cadata != NULL);
+
+    CABlockData_t *currData = CACreateNewBlockData(cadata);
+    EXPECT_TRUE(currData != NULL);
+
+    coap_block_t block = {0, 0, 0};
+    EXPECT_EQ(CA_STATUS_OK, CASetNextBlockOption1(pdu, tempRep, cadata, block, pdu->length));
+
+    CADestroyDataSet(cadata);
+    coap_delete_list(options);
+    coap_delete_pdu(pdu);
+
+    CADestroyToken(tempToken);
+    CADestroyEndpoint(tempRep);
+    free(requestData.payload);
+}
+
+TEST_F(CABlockTransferTests, CASetNextBlockOption1WithResponse)
 {
     CAEndpoint_t* tempRep = NULL;
     CACreateEndpoint(CA_DEFAULT_FLAGS, CA_ADAPTER_IP, "127.0.0.1", 5683, &tempRep);
 
     coap_pdu_t *pdu = NULL;
     coap_list_t *options = NULL;
-    coap_transport_type transport = coap_udp;
+    coap_transport_t transport = COAP_UDP;
 
     CAToken_t tempToken = NULL;
     CAGenerateToken(&tempToken, CA_MAX_TOKEN_LEN);
@@ -492,8 +596,6 @@ TEST_F(CABlockTransferTests, CASetNextBlockOption1Test)
     coap_block_t block = {0, 0, 0};
     EXPECT_EQ(CA_STATUS_OK, CASetNextBlockOption1(pdu, tempRep, cadata, block, pdu->length));
 
-    EXPECT_EQ(CA_STATUS_OK, CAHandleRequestResponse());
-
     CADestroyDataSet(cadata);
     coap_delete_list(options);
     coap_delete_pdu(pdu);
@@ -503,14 +605,14 @@ TEST_F(CABlockTransferTests, CASetNextBlockOption1Test)
     free(responseData.payload);
 }
 
-TEST_F(CABlockTransferTests, CASetNextBlockOption2Test)
+TEST_F(CABlockTransferTests, CASetNextBlockOption2WithRequest)
 {
     CAEndpoint_t* tempRep = NULL;
     CACreateEndpoint(CA_DEFAULT_FLAGS, CA_ADAPTER_IP, "127.0.0.1", 5683, &tempRep);
 
     coap_pdu_t *pdu = NULL;
     coap_list_t *options = NULL;
-    coap_transport_type transport = coap_udp;
+    coap_transport_t transport = COAP_UDP;
 
     CAToken_t tempToken = NULL;
     CAGenerateToken(&tempToken, CA_MAX_TOKEN_LEN);
@@ -540,3 +642,111 @@ TEST_F(CABlockTransferTests, CASetNextBlockOption2Test)
     CADestroyEndpoint(tempRep);
     free(requestData.payload);
 }
+
+TEST_F(CABlockTransferTests, CASetNextBlockOption2WithResponse)
+{
+    CAEndpoint_t* tempRep = NULL;
+    CACreateEndpoint(CA_DEFAULT_FLAGS, CA_ADAPTER_IP, "127.0.0.1", 5683, &tempRep);
+
+    coap_pdu_t *pdu = NULL;
+    coap_list_t *options = NULL;
+    coap_transport_t transport = COAP_UDP;
+
+    CAToken_t tempToken = NULL;
+    CAGenerateToken(&tempToken, CA_MAX_TOKEN_LEN);
+
+    CAInfo_t responseData;
+    memset(&responseData, 0, sizeof(CAInfo_t));
+    responseData.token = tempToken;
+    responseData.tokenLength = CA_MAX_TOKEN_LEN;
+    responseData.type = CA_MSG_NONCONFIRM;
+    responseData.messageId = 1;
+
+    pdu = CAGeneratePDU(CA_CREATED, &responseData, tempRep, &options, &transport);
+
+    CAData_t *cadata = CACreateNewDataSet(pdu, tempRep);
+    EXPECT_TRUE(cadata != NULL);
+
+    CABlockData_t *currData = CACreateNewBlockData(cadata);
+    EXPECT_TRUE(currData != NULL);
+
+    coap_block_t block = {0, 0, 0};
+    EXPECT_EQ(CA_STATUS_OK, CASetNextBlockOption2(pdu, tempRep, cadata, block, pdu->length));
+
+    CADestroyDataSet(cadata);
+    coap_delete_list(options);
+    coap_delete_pdu(pdu);
+
+    CADestroyToken(tempToken);
+    CADestroyEndpoint(tempRep);
+    free(responseData.payload);
+}
+
+TEST_F(CABlockTransferTests, CAUpdatePayloadToCADataWithRequest)
+{
+    CAEndpoint_t* tempRep = NULL;
+    CACreateEndpoint(CA_DEFAULT_FLAGS, CA_ADAPTER_IP, "127.0.0.1", 5683, &tempRep);
+
+    CAToken_t tempToken = NULL;
+    CAGenerateToken(&tempToken, CA_MAX_TOKEN_LEN);
+
+    CAInfo_t requestData;
+    requestData.type = CA_MSG_NONCONFIRM;
+    requestData.token = tempToken;
+    requestData.tokenLength = CA_MAX_TOKEN_LEN;
+    requestData.options = NULL;
+    requestData.payload = NULL;
+    requestData.payloadSize = 0;
+
+    CARequestInfo_t requestInfo;
+    requestInfo.method = CA_GET;
+    requestInfo.info = requestData;
+    requestInfo.isMulticast = false;
+
+    CAData_t cadata;
+    cadata.type = SEND_TYPE_UNICAST;
+    cadata.remoteEndpoint = tempRep;
+    cadata.requestInfo = &requestInfo;
+    cadata.dataType = CA_REQUEST_DATA;
+
+    CAPayload_t payload = (CAPayload_t) "requestPayload";
+    size_t payloadLen = strlen((const char*) payload) + 1;
+
+    EXPECT_EQ(CA_STATUS_OK, CAUpdatePayloadToCAData(&cadata, payload, payloadLen));
+
+    EXPECT_STREQ((const char*) payload, (const char*) cadata.requestInfo->info.payload);
+}
+
+TEST_F(CABlockTransferTests, CAUpdatePayloadToCADataWithResponse)
+{
+    CAEndpoint_t* tempRep = NULL;
+    CACreateEndpoint(CA_DEFAULT_FLAGS, CA_ADAPTER_IP, "127.0.0.1", 5683, &tempRep);
+
+    CAToken_t tempToken = NULL;
+    CAGenerateToken(&tempToken, CA_MAX_TOKEN_LEN);
+
+    CAInfo_t responseData;
+    responseData.type = CA_MSG_NONCONFIRM;
+    responseData.token = tempToken;
+    responseData.tokenLength = CA_MAX_TOKEN_LEN;
+    responseData.options = NULL;
+    responseData.payload = NULL;
+    responseData.payloadSize = 0;
+
+    CAResponseInfo_t responseInfo;
+    responseInfo.result = CA_VALID;
+    responseInfo.info = responseData;
+
+    CAData_t cadata;
+    cadata.type = SEND_TYPE_UNICAST;
+    cadata.remoteEndpoint = tempRep;
+    cadata.responseInfo = &responseInfo;
+    cadata.dataType = CA_RESPONSE_DATA;
+
+    CAPayload_t payload = (CAPayload_t) "responsePayload";
+    size_t payloadLen = strlen((const char*) payload) + 1;
+
+    EXPECT_EQ(CA_STATUS_OK, CAUpdatePayloadToCAData(&cadata, payload, payloadLen));
+
+    EXPECT_STREQ((const char*) payload, (const char*) cadata.responseInfo->info.payload);
+}