LONGBOW_TEST_CASE(Local, vegasSession_GetFinalBlockIdFromContentObject_None) { CCNxTlvDictionary *contentObjectDictionary = createSignedContentObject(); bool success = vegasSession_GetFinalBlockIdFromContentObject(contentObjectDictionary, NULL); assertFalse(success, "Should have failed getting FBID from content object"); ccnxTlvDictionary_Release(&contentObjectDictionary); }
LONGBOW_TEST_CASE(Dictionary, component_Codec_Tlv_Upcall_Read_Control) { TestData *data = longBowTestCase_GetClipBoardData(testCase); PARCBuffer *wireFormat = parcBuffer_Wrap(v1_cpi_add_route_crc32c, sizeof(v1_cpi_add_route_crc32c), 0, sizeof(v1_cpi_add_route_crc32c)); CCNxTlvDictionary *dictionary = ccnxWireFormatMessage_FromControlPacketType(CCNxTlvDictionary_SchemaVersion_V1, wireFormat); parcBuffer_Release(&wireFormat); // We have not set the message type or schema TransportMessage *tm = transportMessage_CreateFromDictionary(dictionary); transportMessage_SetInfo(tm, data->mock->connection, NULL); ccnxTlvDictionary_Release(&dictionary); // ------ // Now do the actual test of sending the transport message up the stack TransportMessage *test_tm = sendUp(data, tm); // It should now be parsed into an control message CCNxTlvDictionary *testdict = transportMessage_GetDictionary(test_tm); assertNotNull(testdict, "Failed to get dictionary from the transport message"); assertTrue(ccnxTlvDictionary_IsControl(testdict), "Dictionary says it is not a Control"); assertTrue(ccnxTlvDictionary_GetSchemaVersion(testdict) == CCNxTlvDictionary_SchemaVersion_V1, "Wrong schema, got %d expected %d", ccnxTlvDictionary_GetSchemaVersion(testdict), CCNxTlvDictionary_SchemaVersion_V1); transportMessage_Destroy(&tm); }
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); }
LONGBOW_TEST_CASE(Global, ccnxInterestReturnFacadeV1_Create) { TestData *data = longBowTestCase_GetClipBoardData(testCase); CCNxTlvDictionary *interestReturn = _ccnxInterestReturnFacadeV1_Create(data->interest, CCNxInterestReturn_ReturnCode_NoRoute); assertNotNull(interestReturn, "Expect non-NULL interestReturn"); _ccnxInterestReturnFacadeV1_AssertValid(interestReturn); CCNxInterestReturn_ReturnCode code = _ccnxInterestReturnFacadeV1_GetReturnCode(interestReturn); assertTrue((CCNxInterestReturn_ReturnCode_NoRoute == code), "InterestReturn wrong Return Code"); ccnxTlvDictionary_Release(&interestReturn); }
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); }
LONGBOW_TEST_CASE(Global, ccnxWireFormatMessage_PutWireFormatBuffer) { PARCBuffer *buffer = parcBuffer_Allocate(1); CCNxTlvDictionary *packet = ccnxTlvDictionary_Create(20, 20); ccnxTlvDictionary_SetMessageType_Interest(packet, CCNxTlvDictionary_SchemaVersion_V1); bool success = ccnxWireFormatMessage_PutWireFormatBuffer(packet, buffer); assertTrue(success, "Failed to put buffer in to dictionary"); PARCBuffer *test = ccnxWireFormatMessage_GetWireFormatBuffer(packet); assertTrue(test == buffer, "Retrieved unexpected buffer: got %p expected %p", (void *) test, (void *) buffer); ccnxTlvDictionary_Release(&packet); parcBuffer_Release(&buffer); }
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, ccnxWireFormatMessage_PutGetIoVec) { uint8_t *data = parcMemory_Allocate(64); memset(data, 0, 64); PARCBuffer *buffer = parcBuffer_Allocate(1); CCNxCodecNetworkBuffer *netbuff = ccnxCodecNetworkBuffer_CreateFromArray(&ParcMemoryMemoryBlock, NULL, 64, data); CCNxCodecNetworkBufferIoVec *iovec = ccnxCodecNetworkBuffer_CreateIoVec(netbuff); CCNxTlvDictionary *packet = ccnxCodecSchemaV1TlvDictionary_CreateInterest(); ccnxWireFormatMessage_PutIoVec((CCNxWireFormatMessage *) packet, iovec); CCNxCodecNetworkBufferIoVec *test = ccnxWireFormatMessage_GetIoVec((CCNxWireFormatMessage *) packet); assertTrue(test == iovec, "Failed to get iovec from dictionary, expected %p got %p", (void *) iovec, (void *) test); ccnxTlvDictionary_Release(&packet); parcBuffer_Release(&buffer); ccnxCodecNetworkBufferIoVec_Release(&iovec); ccnxCodecNetworkBuffer_Release(&netbuff); }
LONGBOW_TEST_CASE(Global, ccnxCodecSchemaV1ManifestDecoder_Decode) { uint8_t rawManifest[40] = { 0x00, 0x07, 0x00, 0x24, 0x00, 0x02, 0x00, 0x20, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46 }; PARCBuffer *wireFormat = parcBuffer_Flip(parcBuffer_CreateFromArray(rawManifest, 40)); CCNxCodecTlvDecoder *decoder = ccnxCodecTlvDecoder_Create(wireFormat); CCNxTlvDictionary *dict = ccnxCodecSchemaV1TlvDictionary_CreateManifest(); bool result = ccnxCodecSchemaV1ManifestDecoder_Decode(decoder, dict); assertTrue(result, "Expected the manifest to be decoded correctly"); ccnxTlvDictionary_Release(&dict); ccnxCodecTlvDecoder_Destroy(&decoder); parcBuffer_Release(&wireFormat); }
void ccnxContentObject_Release(CCNxContentObject **contentObjectP) { ccnxTlvDictionary_Release(contentObjectP); }
void ccnxControl_Release(CCNxControl **controlP) { ccnxTlvDictionary_Release(controlP); }