Commit 1a89fa2d authored by Greg Williams's avatar Greg Williams
Browse files

Filling in NOOP operation

parent d453407a
Loading
Loading
Loading
Loading
+11 −5
Original line number Diff line number Diff line
@@ -20,10 +20,16 @@

#include "kinetic_operation.h"

void KineticOperation_BuildNoop(
    KineticMessage* const message,
    KineticExchange* const exchange,
    KineticHMAC* const hmac)
void KineticOperation_Init(
    KineticOperation* operation,
    KineticExchange* exchange,
    KineticMessage* message)
{
    // assert(false); // Need to complete!!!
    KINETIC_OPERATION_INIT(operation, exchange, message);
}

void KineticOperation_BuildNoop(KineticOperation* operation)
{
    KineticMessage_Init(operation->message);
    KineticExchange_ConfigureHeader(operation->exchange, &operation->message->header);
}
+8 −11
Original line number Diff line number Diff line
@@ -24,24 +24,21 @@
#include "kinetic_types.h"
#include "kinetic_exchange.h"
#include "kinetic_message.h"
#include "kinetic_hmac.h"

typedef struct _KineticOperation
{
    KineticExchange* exchange;
    KineticMessage* message;
    KineticHMAC* hmac;
} KineticOperation;

#define KINETIC_OPERATION_INIT(op, exchange, msg, hmac) { \
    op.exchange = exchange; \
    op.message = msg; \
    op.hmac = hmac; \
}
#define KINETIC_OPERATION_INIT(op, xchng, msg) { \
    (op)->exchange = (xchng); \
    (op)->message = (msg); }

void KineticOperation_BuildNoop(
    KineticMessage* const message,
    KineticExchange* const exchange,
    KineticHMAC* const hmac);
void KineticOperation_Init(KineticOperation* operation,
    KineticExchange* exchange,
    KineticMessage* message);

void KineticOperation_BuildNoop(KineticOperation* operation);

#endif // _KINETIC_OPERATION_H
+20 −11
Original line number Diff line number Diff line
@@ -25,9 +25,7 @@
#include "kinetic_proto.h"
#include "mock_kinetic_exchange.h"
#include "mock_kinetic_connection.h"
#include "mock_kinetic_pdu.h"
#include "mock_kinetic_message.h"
#include "mock_kinetic_hmac.h"

void setUp(void)
{
@@ -41,23 +39,34 @@ void test_KINETIC_OPERATION_INIT_should_initialize_a_KineticOperation(void)
{
    KineticOperation op;

    KINETIC_OPERATION_INIT(op, (KineticExchange*)0x1234, (KineticMessage*)0x2345, (KineticHMAC*)0x3456);
    KINETIC_OPERATION_INIT(&op, (KineticExchange*)0x1234, (KineticMessage*)0x2345);

    TEST_ASSERT_EQUAL_PTR(0x1234, op.exchange);
    TEST_ASSERT_EQUAL_PTR(0x2345, op.message);
    TEST_ASSERT_EQUAL_PTR(0x3456, op.hmac);
}

void test_KineticMessage_BuildNoop_should_build_a_NOOP_message(void)
void test_KineticOperation_Init_should_initialize_a_KineticOperation(void)
{
    KineticMessage message;
    KineticHMAC hmac;
    KineticOperation op;

    KineticOperation_Init(&op, (KineticExchange*)0x1234, (KineticMessage*)0x2345);

    KINETIC_MESSAGE_INIT(&message); // Init here with macro, since mock won't initialize the struct
    TEST_ASSERT_EQUAL_PTR(0x1234, op.exchange);
    TEST_ASSERT_EQUAL_PTR(0x2345, op.message);
}

void test_KineticOperation_BuildNoop_should_build_and_execute_a_NOOP_operation(void)
{
    KineticMessage message;
    KineticOperation op;
    KineticExchange exchange;
    KINETIC_MESSAGE_INIT(&message);
    KINETIC_OPERATION_INIT(&op, &exchange, &message);

    KineticMessage_Init_Expect(&message);
    KineticHMAC_Init_Expect(&hmac, KINETIC_PROTO_SECURITY_ACL_HMACALGORITHM_HmacSHA1);
    KineticHMAC_Populate_Expect(&hmac, &message, key, keyLen);
    KineticExchange_ConfigureHeader_Expect(&exchange, &message.header);

    KineticOperation_BuildNoop(&op);

    KineticMessage_BuildNoop(&message);
    TEST_IGNORE_MESSAGE("Need to populate with NOOP fields/content!");
}