void testValidationSetV1_KeyId_KeyLocator_KeyId_KeyName(TestData *data, bool (*set)(CCNxTlvDictionary *message, const PARCBuffer *keyid, const CCNxKeyLocator *keyLocator), bool (*test)(const CCNxTlvDictionary *message)) { CCNxName *name = ccnxName_CreateFromURI("lci:/parc/validation/test"); CCNxTlvDictionary *packetV1 = ccnxContentObject_CreateWithImplAndPayload(&CCNxContentObjectFacadeV1_Implementation, name, CCNxPayloadType_DATA, NULL); bool success = set(packetV1, data->keyid, data->locatorByName); assertTrue(success, "Failed to set on V1"); bool testResult = test(packetV1); assertTrue(testResult, "Test function failed on V1 packet"); PARCBuffer *testKeyId = ccnxValidationFacadeV1_GetKeyId(packetV1); assertTrue(parcBuffer_Equals(testKeyId, data->keyid), "keyid not equal"); // XXX: TODO: GetKeyName() returns a Link, so it should be GetLink(). // It also creates a new object (the CCNxLink), so... needs thinking about. // See BugzId: 3322 CCNxLink *testLink = ccnxValidationFacadeV1_GetKeyName(packetV1); assertTrue(ccnxName_Equals(ccnxLink_GetName(testLink), data->keyname), "Keynames not equal"); ccnxLink_Release(&testLink); ccnxName_Release(&name); ccnxTlvDictionary_Release(&packetV1); }
void testValidationSetV1_KeyId_KeyLocator_KeyId_Key(TestData *data, bool (*set)(CCNxTlvDictionary *message, const PARCBuffer *keyid, const CCNxKeyLocator *keyLocator), bool (*test)(const CCNxTlvDictionary *message)) { CCNxName *name = ccnxName_CreateFromURI("lci:/parc/validation/test"); CCNxTlvDictionary *packetV1 = ccnxContentObject_CreateWithImplAndPayload(&CCNxContentObjectFacadeV1_Implementation, name, CCNxPayloadType_DATA, NULL); bool success = set(packetV1, data->keyid, data->locatorByKey); assertTrue(success, "Failed to set on V1"); bool testResult = test(packetV1); assertTrue(testResult, "Test function failed on V1 packet"); PARCBuffer *testKeyId = ccnxValidationFacadeV1_GetKeyId(packetV1); assertTrue(parcBuffer_Equals(testKeyId, data->keyid), "keyid not equal"); PARCBuffer *testKey = ccnxValidationFacadeV1_GetPublicKey(packetV1); assertTrue(parcBuffer_Equals(testKey, data->key), "keys not equal"); ccnxName_Release(&name); ccnxTlvDictionary_Release(&packetV1); }
CCNxContentObject * ccnxContentObject_CreateWithPayload(const PARCBuffer *payload) { return ccnxContentObject_CreateWithImplAndPayload(_defaultImplementation, NULL, CCNxPayloadType_DATA, payload); }
LONGBOW_TEST_CASE(Global, ccnxValidationHmacSha256_DictionaryCryptoSuiteValue) { TestData *data = longBowTestCase_GetClipBoardData(testCase); CCNxTlvDictionary *dictionary = ccnxContentObject_CreateWithImplAndPayload(&CCNxContentObjectFacadeV1_Implementation, data->keyname, CCNxPayloadType_DATA, NULL); ccnxValidationHmacSha256_Set(dictionary, data->keyid); uint64_t cryptosuite = ccnxTlvDictionary_GetInteger(dictionary, CCNxCodecSchemaV1TlvDictionary_ValidationFastArray_CRYPTO_SUITE); assertTrue(cryptosuite == PARCCryptoSuite_HMAC_SHA256, "Unexpected PARCCryptoSuite value in dictionary"); ccnxTlvDictionary_Release(&dictionary); }
static TestData * _commonSetup(void) { TestData *data = parcMemory_AllocateAndClear(sizeof(TestData)); CCNxName *name = ccnxName_CreateFromCString("lci:/default/testData/content"); PARCBuffer *payload = parcBuffer_WrapCString("hello"); data->impl = CCNxContentObjectFacadeV1_Implementation; data->name = name; data->contentObject = ccnxContentObject_CreateWithImplAndPayload(&data->impl, name, CCNxPayloadType_DATA, payload); parcBuffer_Release(&payload); return data; }
LONGBOW_TEST_CASE(Global, ccnxContentObject_HasExpiryTime) { CCNxName *name = ccnxName_CreateFromCString("lci:/hello/dolly"); PARCBuffer *payload = parcBuffer_WrapCString("hello"); // Use a V1 ContentObject, as V0 doesn't support ExpiryTime CCNxContentObject *contentObject = ccnxContentObject_CreateWithImplAndPayload(&CCNxContentObjectFacadeV1_Implementation, name, CCNxPayloadType_DATA, payload); assertFalse(ccnxContentObject_HasExpiryTime(contentObject), "Expected no expiration time by default"); parcBuffer_Release(&payload); ccnxName_Release(&name); ccnxContentObject_Release(&contentObject); }
void testValidationSetV1_KeyId_Null(TestData *data, bool (*set)(CCNxTlvDictionary *message, const PARCBuffer *keyid), bool (*test)(const CCNxTlvDictionary *message)) { CCNxName *name = ccnxName_CreateFromURI("lci:/parc/validation/test"); CCNxTlvDictionary *packetV1 = ccnxContentObject_CreateWithImplAndPayload(&CCNxContentObjectFacadeV1_Implementation, name, CCNxPayloadType_DATA, NULL); bool success = set(packetV1, NULL); assertTrue(success, "Failed to set on V1"); bool testResult = test(packetV1); assertTrue(testResult, "Test function failed on V1 packet"); ccnxName_Release(&name); ccnxTlvDictionary_Release(&packetV1); }
LONGBOW_TEST_CASE(Global, ccnxContentObjectInterface_GetInterface) { CCNxName *name = ccnxName_CreateFromCString("lci:/boose/roo/pie"); CCNxContentObject *contentObjectV1 = ccnxContentObject_CreateWithImplAndPayload(&CCNxContentObjectFacadeV1_Implementation, name, CCNxPayloadType_DATA, NULL); assertTrue(ccnxContentObjectInterface_GetInterface(contentObjectV1) == &CCNxContentObjectFacadeV1_Implementation, "Expected V1 Implementation"); // Now unset the pointer and see if it gets derived properly. ccnxTlvDictionary_SetMessageInterface(contentObjectV1, NULL); assertTrue(ccnxContentObjectInterface_GetInterface(contentObjectV1) == &CCNxContentObjectFacadeV1_Implementation, "Expected V1 Implementation"); ccnxName_Release(&name); ccnxContentObject_Release(&contentObjectV1); }
LONGBOW_TEST_CASE(Global, ccnxContentObject_SetGetExpiryTime) { CCNxName *name = ccnxName_CreateFromURI("lci:/hello/dolly"); PARCBuffer *payload = parcBuffer_WrapCString("hello"); // Use a V1 ContentObject, as V0 doesn't support ExpiryTime CCNxContentObject *contentObject = ccnxContentObject_CreateWithImplAndPayload(&CCNxContentObjectFacadeV1_Implementation, name, CCNxPayloadType_DATA, payload); assertFalse(ccnxContentObject_HasExpiryTime(contentObject), "Expected no expiration time by default"); uint64_t expiryTime = 1010101ULL; ccnxContentObject_SetExpiryTime(contentObject, expiryTime); assertTrue(ccnxContentObject_HasExpiryTime(contentObject), "Expected the expiryTime to be set"); uint64_t retrievedTime = ccnxContentObject_GetExpiryTime(contentObject); assertTrue(expiryTime == retrievedTime, "Did not retrieve expected expiryTime from ContentObject"); parcBuffer_Release(&payload); ccnxName_Release(&name); ccnxContentObject_Release(&contentObject); }
uint64_t retrievedTime = ccnxContentObject_GetExpiryTime(contentObject); assertTrue(expiryTime == retrievedTime, "Did not retrieve expected expiryTime from ContentObject"); parcBuffer_Release(&payload); ccnxName_Release(&name); ccnxContentObject_Release(&contentObject); } LONGBOW_TEST_CASE_EXPECTS(Global, ccnxContentObject_GetExpiryTimeWithNoExpiryTime, .event = &LongBowTrapUnexpectedStateEvent) { CCNxName *name = ccnxName_CreateFromCString("lci:/hello/dolly"); PARCBuffer *payload = parcBuffer_WrapCString("hello"); // Use a V1 ContentObject, as V0 doesn't support ExpiryTime CCNxContentObject *contentObject = ccnxContentObject_CreateWithImplAndPayload(&CCNxContentObjectFacadeV1_Implementation, name, CCNxPayloadType_DATA, payload); // This should throw. uint64_t retrievedTime = ccnxContentObject_GetExpiryTime(contentObject); trapUnexpectedState("Expected to have thrown an exception when calling GetExpiryTime(), which returned %" PRIu64, retrievedTime); parcBuffer_Release(&payload); ccnxName_Release(&name); ccnxContentObject_Release(&contentObject); } LONGBOW_TEST_CASE(Global, ccnxContentObject_Display) { CCNxName *name = ccnxName_CreateFromCString("lci:/hello/dolly"); PARCBuffer *payload = parcBuffer_WrapCString("hello"); CCNxContentObject *contentObject = ccnxContentObject_CreateWithDataPayload(name, payload);