blob: acecdbc2a42b8655286fa1180247fdf6d7aee481 [file] [log] [blame]
/*
* Copyright (c) 2022 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "mocks/keys_help_utils.h"
#include "mocks/settings.h"
#include "mocks/settings_expects.h"
#include "mocks/settings_store.h"
#include "mocks/settings_store_expects.h"
#include "mocks/util.h"
#include "mocks/util_expects.h"
#include "testing_common_defs.h"
#include <zephyr/bluetooth/addr.h>
#include <zephyr/fff.h>
#include <zephyr/kernel.h>
#include <host/keys.h>
DEFINE_FFF_GLOBALS;
static void tc_setup(void *f)
{
/* Clear keys pool */
clear_key_pool();
/* Register resets */
UTIL_FFF_FAKES_LIST(RESET_FAKE);
SETTINGS_FFF_FAKES_LIST(RESET_FAKE);
SETTINGS_STORE_FFF_FAKES_LIST(RESET_FAKE);
}
ZTEST_SUITE(bt_keys_store_key_bt_settings_enabled, NULL, NULL, tc_setup, NULL, NULL);
/*
* Store an existing key (ID = 0) and verify the result.
* settings_save_one() returns 0 which represents success.
*
* Constraints:
* - Key reference points to a valid item
* - Item ID is set to 0
* - Return value from settings_save_one() is 0
*
* Expected behaviour:
* - bt_keys_store() returns 0 which represent success
*/
ZTEST(bt_keys_store_key_bt_settings_enabled, test_id_equal_0_with_no_error)
{
int returned_code;
struct bt_keys *returned_key;
uint8_t id = BT_ADDR_ID_0;
bt_addr_le_t *addr = BT_ADDR_LE_1;
/* Add custom item to the keys pool */
returned_key = bt_keys_get_addr(id, addr);
zassert_true(returned_key != NULL, "bt_keys_get_addr() returned a non-valid reference");
settings_save_one_fake.return_val = 0;
/* Store the key */
returned_code = bt_keys_store(returned_key);
zassert_true(returned_code == 0, "bt_keys_store() returned a non-zero code");
expect_not_called_u8_to_dec();
expect_single_call_bt_settings_encode_key_with_null_key(&returned_key->addr);
expect_single_call_settings_save_one(returned_key->storage_start);
}
/*
* Store an existing key (ID = 0) and verify the result.
* settings_save_one() returns a negative value of -1 which represents failure.
*
* Constraints:
* - Key reference points to a valid item
* - Item ID is set to 0
* - Return value from settings_save_one() is -1
*
* Expected behaviour:
* - bt_keys_store() returns a negative error code of -1
*/
ZTEST(bt_keys_store_key_bt_settings_enabled, test_id_equal_0_with_error)
{
int returned_code;
struct bt_keys *returned_key;
uint8_t id = BT_ADDR_ID_0;
bt_addr_le_t *addr = BT_ADDR_LE_1;
/* Add custom item to the keys pool */
returned_key = bt_keys_get_addr(id, addr);
zassert_true(returned_key != NULL, "bt_keys_get_addr() returned a non-valid reference");
settings_save_one_fake.return_val = -1;
/* Store the key */
returned_code = bt_keys_store(returned_key);
zassert_true(returned_code == -1, "bt_keys_store() returned a non-zero code");
expect_not_called_u8_to_dec();
expect_single_call_bt_settings_encode_key_with_null_key(&returned_key->addr);
expect_single_call_settings_save_one(returned_key->storage_start);
}
/*
* Store an existing key (ID != 0) and verify the result.
* settings_save_one() returns 0 which represents success.
*
* Constraints:
* - Key reference points to a valid item
* - Item ID isn't set to 0
* - Return value from settings_save_one() is 0
*
* Expected behaviour:
* - bt_keys_store() returns 0 which represent success
*/
ZTEST(bt_keys_store_key_bt_settings_enabled, test_id_not_equal_0_with_no_error)
{
int returned_code;
struct bt_keys *returned_key;
uint8_t id = BT_ADDR_ID_1;
bt_addr_le_t *addr = BT_ADDR_LE_1;
/* Add custom item to the keys pool */
returned_key = bt_keys_get_addr(id, addr);
zassert_true(returned_key != NULL, "bt_keys_get_addr() returned a non-valid reference");
settings_save_one_fake.return_val = 0;
/* Store the key */
returned_code = bt_keys_store(returned_key);
zassert_true(returned_code == 0, "bt_keys_store() returned a non-zero code");
expect_single_call_u8_to_dec(id);
expect_single_call_bt_settings_encode_key_with_not_null_key(&returned_key->addr);
expect_single_call_settings_save_one(returned_key->storage_start);
}
/*
* Store an existing key (ID != 0) and verify the result
* settings_save_one() returns a negative value of -1 which represents failure.
*
* Constraints:
* - Key reference points to a valid item
* - Item ID isn't set to 0
* - Return value from settings_save_one() is -1
*
* Expected behaviour:
* - bt_keys_store() returns a negative error code of -1
*/
ZTEST(bt_keys_store_key_bt_settings_enabled, test_id_not_equal_0_with_error)
{
int returned_code;
struct bt_keys *returned_key;
uint8_t id = BT_ADDR_ID_1;
bt_addr_le_t *addr = BT_ADDR_LE_1;
/* Add custom item to the keys pool */
returned_key = bt_keys_get_addr(id, addr);
zassert_true(returned_key != NULL, "bt_keys_get_addr() returned a non-valid reference");
settings_save_one_fake.return_val = -1;
/* Store the key */
returned_code = bt_keys_store(returned_key);
zassert_true(returned_code == -1, "bt_keys_store() returned a non-zero code");
expect_single_call_u8_to_dec(id);
expect_single_call_bt_settings_encode_key_with_not_null_key(&returned_key->addr);
expect_single_call_settings_save_one(returned_key->storage_start);
}