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

Updated KineticController_ExecuteOperation to use accessor to query...

Updated KineticController_ExecuteOperation to use accessor to query termination status from session to allow mocking instead of querying session structure directly.
Fixed test_system_p2pop to work properly on HW by adding SetLockPin prior to issuing SecureErase only when on HW, since HW requires a non empty PIN which is the default case.
parent d6cbdc2a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -55,7 +55,7 @@ KineticStatus KineticController_ExecuteOperation(KineticOperation* operation, Ki
    KINETIC_ASSERT(operation->session != NULL);
    KineticStatus status = KINETIC_STATUS_INVALID;
 
    if (operation->session->terminationStatus != KINETIC_STATUS_SUCCESS) {
    if (KineticSession_GetTerminationStatus(operation->session) != KINETIC_STATUS_SUCCESS) {
        return KINTEIC_STATUS_SESSION_TERMINATED;
    }

+2 −1
Original line number Diff line number Diff line
@@ -22,10 +22,11 @@

KineticClient * client;
KineticSession * session;
const char hmacKey[] = "bad_key"; // Purposely bad hmac key to cause HMAC validation faliure on device end

void setUp(void)
{
    SystemTestSetup(3);
    SystemTestSetupWithIdentity(3, 1, (const uint8_t*)hmacKey, strlen(hmacKey));
}

void tearDown(void)
+17 −7
Original line number Diff line number Diff line
@@ -60,19 +60,15 @@ static KineticSession * peerSession;
static KineticSession * peerAdminSession;

static const char HmacKeyString[] = "asdfasdf";
static ByteArray Pin;


void setUp(void)
{
    KineticClientConfig clientConfig = {
        .logFile = "stdout",
        .logLevel = 1,
        .logLevel = 3,
    };
    client = KineticClient_Init(&clientConfig);

    Pin = ByteArray_CreateWithCString(SESSION_PIN);

    // Create sessions with primary device
    KineticSessionConfig sessionConfig = {
        .clusterVersion = 0,
@@ -190,8 +186,15 @@ void test_P2P_should_copy_keys_from_one_device_to_another(void)
    TEST_ASSERT_EQUAL(KINETIC_ALGORITHM_SHA1, getEntry2.algorithm);
    TEST_ASSERT_EQUAL_ByteBuffer(Value2Buffer, getEntry2.value);

    ByteArray oldPin = ByteArray_CreateWithCString("");
    ByteArray newPin = ByteArray_CreateWithCString("1234");

    // Erase the peer drive we are copying to
    status = KineticAdminClient_SecureErase(peerAdminSession, Pin);
    if (!SystemTestIsUnderSimulator()) {
        status = KineticAdminClient_SetErasePin(peerAdminSession, oldPin, newPin);
        TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_SUCCESS, status);
    }
    status = KineticAdminClient_SecureErase(peerAdminSession, newPin);
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_SUCCESS, status);

    // Execute a P2P operation to copy the entries
@@ -253,8 +256,15 @@ void disabled_test_P2P_should_support_nesting_of_p2p_operations(void)
    status = KineticClient_Get(session, &getEntry2, NULL);
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_SUCCESS, status);

    ByteArray oldPin = ByteArray_CreateWithCString("");
    ByteArray newPin = ByteArray_CreateWithCString("1234");

    // Erase the peer drive we are copying to
    status = KineticAdminClient_SecureErase(peerAdminSession, Pin);
    if (!SystemTestIsUnderSimulator()) {
        status = KineticAdminClient_SetErasePin(peerAdminSession, oldPin, newPin);
        TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_SUCCESS, status);
    }
    status = KineticAdminClient_SecureErase(peerAdminSession, newPin);
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_SUCCESS, status);

    // Copy the entries back to primary device
+8 −16
Original line number Diff line number Diff line
@@ -49,10 +49,7 @@ void test_KineticController_needs_tests(void)

void test_KineticController_ExecuteOperation_should_carry_out_an_operation_with_closure_specified_as_asynchronous(void)
{
    KineticSession session = {
        .connected = false,
        .terminationStatus = KINETIC_STATUS_SUCCESS,
    };
    KineticSession session = {.connected = true};
    KineticRequest request;
    KineticOperation operation = {
        .session = &session,
@@ -60,6 +57,7 @@ void test_KineticController_ExecuteOperation_should_carry_out_an_operation_with_
    };
    KineticCompletionClosure closure;

    KineticSession_GetTerminationStatus_ExpectAndReturn(&session, KINETIC_STATUS_SUCCESS);
    KineticOperation_SendRequest_ExpectAndReturn(&operation, KINETIC_STATUS_SUCCESS);

    KineticStatus status = KineticController_ExecuteOperation(&operation, &closure);
@@ -69,10 +67,7 @@ void test_KineticController_ExecuteOperation_should_carry_out_an_operation_with_

void test_KineticController_ExecuteOperation_should_carry_out_an_operation_with_no_closure_specified_as_synchronous(void)
{
    KineticSession session = {
        .connected = false,
        .terminationStatus = KINETIC_STATUS_SUCCESS,
    };
    KineticSession session = {.connected = true};
    KineticRequest request;
    KineticOperation operation = {
        .session = &session,
@@ -80,6 +75,7 @@ void test_KineticController_ExecuteOperation_should_carry_out_an_operation_with_
    };
    KineticCompletionClosure closure;

    KineticSession_GetTerminationStatus_ExpectAndReturn(&session, KINETIC_STATUS_SUCCESS);
    KineticOperation_SendRequest_ExpectAndReturn(&operation, KINETIC_STATUS_SUCCESS);

    KineticStatus status = KineticController_ExecuteOperation(&operation, &closure);
@@ -89,10 +85,7 @@ void test_KineticController_ExecuteOperation_should_carry_out_an_operation_with_

void test_KineticController_ExecuteOperation_should_report_session_terminated_if_detected(void)
{
    KineticSession session = {
        .connected = false,
        .terminationStatus = KINETIC_STATUS_HMAC_FAILURE,
    };
    KineticSession session = {.connected = true};
    KineticRequest request;
    KineticOperation operation = {
        .session = &session,
@@ -100,6 +93,7 @@ void test_KineticController_ExecuteOperation_should_report_session_terminated_if
    };
    KineticCompletionClosure closure;

    KineticSession_GetTerminationStatus_ExpectAndReturn(&session, KINETIC_STATUS_HMAC_FAILURE);
    KineticStatus status = KineticController_ExecuteOperation(&operation, &closure);

    TEST_ASSERT_EQUAL_KineticStatus(KINTEIC_STATUS_SESSION_TERMINATED, status);
@@ -107,10 +101,7 @@ void test_KineticController_ExecuteOperation_should_report_session_terminated_if

void test_KineticController_ExecuteOperation_should_carry_out_an_operation_with_closure_supplied_and_report_failure_to_send(void)
{
    KineticSession session = {
        .connected = false,
        .terminationStatus = KINETIC_STATUS_SUCCESS,
    };
    KineticSession session = {.connected = true};
    KineticRequest request;
    KineticOperation operation = {
        .session = &session,
@@ -118,6 +109,7 @@ void test_KineticController_ExecuteOperation_should_carry_out_an_operation_with_
    };
    KineticCompletionClosure closure;

    KineticSession_GetTerminationStatus_ExpectAndReturn(&session, KINETIC_STATUS_SUCCESS);
    KineticOperation_SendRequest_ExpectAndReturn(&operation, KINETIC_STATUS_OPERATION_INVALID);

    KineticStatus status = KineticController_ExecuteOperation(&operation, &closure);