TEST(SRPProvisionACLTest, NullDeviceInfo) { pDev1.doxm = &defaultDoxm1; uint8_t deviceId1[] = {0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64}; memcpy(pDev1.doxm->deviceID.id, deviceId1, sizeof(deviceId1)); pDev2.doxm = &defaultDoxm2; uint8_t deviceId2[] = {0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x63}; memcpy(pDev2.doxm->deviceID.id, deviceId2, sizeof(deviceId2)); EXPECT_EQ(OC_STACK_INVALID_PARAM, SRPProvisionACL(NULL, NULL, &acl, &provisioningCB)); }
/** * Callback to handle ACL provisioning for device 1 */ static void AclProv1CB(void* ctx, int nOfRes, OCProvisionResult_t *arr, bool hasError) { if (NULL == ctx) { OIC_LOG(ERROR,TAG,"Context is Null in ACLProv1"); return; } (void)nOfRes; Linkdata_t *link = (Linkdata_t*)ctx; OCProvisionResultCB resultCallback = link->resultCallback; if (hasError) { OIC_LOG(ERROR,TAG,"Error occured while ACL provisioning device 1"); UpdateLinkResults(link, 1, arr[0].res); ((OCProvisionResultCB)(resultCallback))(link->ctx, link->currentCountResults, link->resArr, true); OICFree(link->resArr); OICFree(link); return; } UpdateLinkResults(link, 1, arr[0].res); if (NULL != link->pDev2Acl) { OCStackResult res = SRPProvisionACL(ctx, link->pDev2, link->pDev2Acl, &AclProv2CB); if (OC_STACK_OK!=res) { UpdateLinkResults(link, 2, res); ((OCProvisionResultCB)(resultCallback))(link->ctx, link->currentCountResults, link->resArr, true); } } else { ((OCProvisionResultCB)(resultCallback))(link->ctx, link->currentCountResults, link->resArr, false); OICFree(link->resArr); OICFree(link); } return; }
/** * Callback to handle credential provisioning. */ static void ProvisionCredsCB(void* ctx, int nOfRes, OCProvisionResult_t *arr, bool hasError) { if (NULL == ctx) { OIC_LOG(ERROR,TAG,"Error occured while credential provisioning"); return; } Linkdata_t *link = (Linkdata_t*)ctx; OCProvisionResultCB resultCallback = link->resultCallback; OIC_LOG_V(INFO, TAG, "has error returned %d",hasError); UpdateLinkResults(link, 1, arr[0].res); UpdateLinkResults(link, 2, arr[1].res); if (hasError) { OIC_LOG(ERROR,TAG,"Error occured while credential provisioning"); ((OCProvisionResultCB)(resultCallback))(link->ctx, nOfRes, link->resArr, true); OICFree(link->resArr); OICFree(link); return; } if (NULL != link->pDev1Acl) { OCStackResult res = SRPProvisionACL(ctx, link->pDev1, link->pDev1Acl, &AclProv1CB); if (OC_STACK_OK!=res) { OIC_LOG(ERROR, TAG, "Error while provisioning ACL for device 1"); UpdateLinkResults(link, 1, res); ((OCProvisionResultCB)(resultCallback))(link->ctx, link->currentCountResults, link->resArr, true); OICFree(link->resArr); OICFree(link); } } else if (NULL!=link->pDev2Acl) { OIC_LOG(ERROR, TAG, "ACL for device 1 is NULL"); OCStackResult res = SRPProvisionACL(ctx, link->pDev2, link->pDev2Acl, &AclProv2CB); if (OC_STACK_OK!=res) { OIC_LOG(ERROR, TAG, "Error while provisioning ACL for device 2"); UpdateLinkResults(link, 2, res); ((OCProvisionResultCB)(resultCallback))(link->ctx, link->currentCountResults, link->resArr, true); OICFree(link->resArr); OICFree(link); } } else { OIC_LOG(INFO, TAG, "ACLs of both devices are NULL"); ((OCProvisionResultCB)(resultCallback))(link->ctx, link->currentCountResults, link->resArr, false); OICFree(link->resArr); OICFree(link); } return; }
/** * this function sends ACL information to resource. * * @param[in] ctx Application context would be returned in result callback. * @param[in] selectedDeviceInfo Selected target device. * @param[in] acl ACL to provision. * @param[in] resultCallback callback provided by API user, callback will be called when provisioning request recieves a response from resource server. * @return OC_STACK_OK in case of success and other value otherwise. */ OCStackResult OCProvisionACL(void* ctx, const OCProvisionDev_t *selectedDeviceInfo, OicSecAcl_t *acl, OCProvisionResultCB resultCallback) { return SRPProvisionACL(ctx, selectedDeviceInfo, acl, resultCallback); }
TEST(SRPProvisionACLTest, NullACL) { EXPECT_EQ(OC_STACK_INVALID_PARAM, SRPProvisionACL(NULL, &pDev1, NULL, &provisioningCB)); }
TEST(SRPProvisionACLTest, NullCallback) { EXPECT_EQ(OC_STACK_INVALID_CALLBACK, SRPProvisionACL(NULL, &pDev1, &acl, NULL)); }
TEST(SRPProvisionACLTest, NullDeviceInfo) { EXPECT_EQ(OC_STACK_INVALID_PARAM, SRPProvisionACL(NULL, NULL, &acl, &provisioningCB)); }