KineticStatus KineticAdminClient_InstantErase(KineticSession * const session, ByteArray pin) { KINETIC_ASSERT(session != NULL); KineticStatus status; status = KineticAuth_EnsureSslEnabled(&session->config); if (status != KINETIC_STATUS_SUCCESS) {return status;} // Ensure PIN array has data if non-empty if (pin.len > 0 && pin.data == NULL) { return KINETIC_STATUS_MISSING_PIN; } KineticOperation* operation = KineticAllocator_NewOperation(session); if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} KineticBuilder_BuildErase(operation, false, &pin); return KineticController_ExecuteOperation(operation, NULL); }
void test_KineticBuilder_BuildErase_should_build_an_INSTANT_ERASE_operation_with_PIN_auth(void) { char pinData[] = "abc123"; ByteArray pin = ByteArray_Create(pinData, strlen(pinData)); KineticOperation_ValidateOperation_Expect(&Operation); KineticBuilder_BuildErase(&Operation, false, &pin); TEST_ASSERT_NOT_NULL(Operation.pin); TEST_ASSERT_EQUAL_PTR(&pinData, Operation.pin->data); TEST_ASSERT_EQUAL_PTR(strlen(pinData), Operation.pin->len); TEST_ASSERT_TRUE(Request.message.command.header->has_messagetype); TEST_ASSERT_EQUAL(COM__SEAGATE__KINETIC__PROTO__COMMAND__MESSAGE_TYPE__PINOP, Request.message.command.header->messagetype); TEST_ASSERT_EQUAL_PTR(&Request.message.body, Request.command->body); TEST_ASSERT_EQUAL_PTR(&Request.message.pinOp, Request.command->body->pinop); TEST_ASSERT_TRUE(&Request.message.pinOp.has_pinoptype); TEST_ASSERT_EQUAL(COM__SEAGATE__KINETIC__PROTO__COMMAND__PIN_OPERATION__PIN_OP_TYPE__ERASE_PINOP, Request.command->body->pinop->pinoptype); TEST_ASSERT_EQUAL_PTR(&KineticCallbacks_Basic, Operation.opCallback); TEST_ASSERT_NULL(Operation.response); TEST_ASSERT_EQUAL(KineticOperation_TimeoutErase, Operation.timeoutSeconds); }