test for proposal substructure written

This commit is contained in:
Jan Hutter 2005-11-14 17:23:24 +00:00
parent 67978e0b4f
commit 800b308c2a
2 changed files with 144 additions and 0 deletions

View file

@ -33,6 +33,7 @@
#include "../payloads/ike_header.h"
#include "../payloads/transform_attribute.h"
#include "../payloads/transform_substructure.h"
#include "../payloads/proposal_substructure.h"
/*
* Described in Header
@ -308,3 +309,138 @@ void test_generator_with_transform_substructure(tester_t *tester)
global_logger_manager->destroy_logger(global_logger_manager,logger);
}
/*
* Described in header
*/
void test_generator_with_proposal_substructure(tester_t *tester)
{
generator_t *generator;
transform_attribute_t *attribute1, *attribute2, *attribute3;
transform_substructure_t *transform1, *transform2;
proposal_substructure_t *proposal;
chunk_t data;
status_t status;
chunk_t generated_data;
logger_t *logger;
logger = global_logger_manager->create_logger(global_logger_manager,TESTER,"transform substr.");
/* create generator */
generator = generator_create();
tester->assert_true(tester,(generator != NULL), "generator create check");
/* create attribute 1 */
attribute1 = transform_attribute_create();
char *stringval = "abcd";
data.ptr = (void *) stringval;
data.len = 4;
status = attribute1->set_value(attribute1,data);
tester->assert_true(tester,(status == SUCCESS),"set_value call check");
status = attribute1->set_attribute_type(attribute1,0);
tester->assert_true(tester,(status == SUCCESS),"set_attribute_type call check");
logger->log(logger,CONTROL,"attribute1 created");
/* create attribute 2 */
attribute2 = transform_attribute_create();
stringval = "efgh";
data.ptr = (void *) stringval;
data.len = 4;
status = attribute2->set_value(attribute2,data);
tester->assert_true(tester,(status == SUCCESS),"set_value call check");
status = attribute2->set_attribute_type(attribute2,0);
tester->assert_true(tester,(status == SUCCESS),"set_attribute_type call check");
logger->log(logger,CONTROL,"attribute2 created");
/* create attribute 3 */
attribute3 = transform_attribute_create();
stringval = "ijkl";
data.ptr = (void *) stringval;
data.len = 4;
status = attribute3->set_value(attribute3,data);
tester->assert_true(tester,(status == SUCCESS),"set_value call check");
status = attribute3->set_attribute_type(attribute3,0);
tester->assert_true(tester,(status == SUCCESS),"set_attribute_type call check");
logger->log(logger,CONTROL,"attribute3 created");
/* create transform 1*/
transform1 = transform_substructure_create();
tester->assert_true(tester,(transform1 != NULL), "transform create check");
status = transform1->add_transform_attribute(transform1,attribute1);
tester->assert_true(tester,(status == SUCCESS),"add_transform_attribute call check");
status = transform1->add_transform_attribute(transform1,attribute2);
tester->assert_true(tester,(status == SUCCESS),"add_transform_attribute call check");
status = transform1->set_transform_type(transform1,5); /* hex 5 */
tester->assert_true(tester,(status == SUCCESS),"set_transform_type call check");
status = transform1->set_transform_id(transform1,65000); /* hex FDE8 */
tester->assert_true(tester,(status == SUCCESS),"set_transform_id call check");
/* create transform 2*/
transform2 = transform_substructure_create();
tester->assert_true(tester,(transform2 != NULL), "transform create check");
status = transform2->add_transform_attribute(transform2,attribute3);
tester->assert_true(tester,(status == SUCCESS),"add_transform_attribute call check");
status = transform2->set_transform_type(transform2,3); /* hex 3 */
tester->assert_true(tester,(status == SUCCESS),"set_transform_type call check");
status = transform2->set_transform_id(transform2,4); /* hex 4 */
tester->assert_true(tester,(status == SUCCESS),"set_transform_id call check");
logger->log(logger,CONTROL,"transforms created");
proposal = proposal_substructure_create();
tester->assert_true(tester,(proposal != NULL), "proposal create check");
stringval = "ABCDEFGH";
data.ptr = (void *) stringval;
data.len = 8;
status = proposal->add_transform_substructure(proposal,transform1);
tester->assert_true(tester,(status == SUCCESS),"add_transform_substructure call check");
status = proposal->add_transform_substructure(proposal,transform2);
tester->assert_true(tester,(status == SUCCESS),"add_transform_substructure call check");
status = proposal->set_spi(proposal,data);
tester->assert_true(tester,(status == SUCCESS),"set_spi call check");
status = proposal->set_proposal_number(proposal,7);
tester->assert_true(tester,(status == SUCCESS),"set_proposal_number call check");
status = proposal->set_protocol_id(proposal,4);
tester->assert_true(tester,(status == SUCCESS),"set_protocol_id call check");
status = generator->generate_payload(generator,(payload_t *)proposal);
tester->assert_true(tester,(status == SUCCESS),"generate_payload call check");
tester->assert_true(tester,(generator->write_to_chunk(generator,&generated_data) == SUCCESS),"write_to_chunk call check");
logger->log_chunk(logger,RAW,"generated transform",&generated_data);
u_int8_t expected_generation[] = {
/* proposal header */
0x00,0x00,0x00,0x38,
0x07,0x04,0x08,0x02,
/* SPI */
0x41,0x42,0x43,0x44,
0x45,0x46,0x47,0x48,
/* first transform */
0x03,0x00,0x00,0x18,
0x05,0x00,0xFD,0xE8,
/* first transform attributes */
0x00,0x00,0x00,0x04,
0x61,0x62,0x63,0x64,
0x00,0x00,0x00,0x04,
0x65,0x66,0x67,0x68,
/* second transform */
0x00,0x00,0x00,0x10,
0x03,0x00,0x00,0x04,
/* second transform attributes */
0x00,0x00,0x00,0x04,
0x69,0x6A,0x6B,0x6C
};
tester->assert_true(tester,(memcmp(expected_generation,generated_data.ptr,sizeof(expected_generation)) == 0), "compare generated data");
allocator_free_chunk(generated_data);
tester->assert_true(tester,(proposal->destroy(proposal) == SUCCESS), "proposal destroy call check");
tester->assert_true(tester,(generator->destroy(generator) == SUCCESS), "generator destroy call check");
global_logger_manager->destroy_logger(global_logger_manager,logger);
}

View file

@ -50,5 +50,13 @@ void test_generator_with_transform_attribute(tester_t *tester);
*/
void test_generator_with_transform_substructure(tester_t *tester);
/**
* @brief Test function used to test the generator with proposal substructure payload
*
*
* @param tester associated tester object
*/
void test_generator_with_proposal_substructure(tester_t *tester);
#endif /*GENERATOR_TEST_H_*/