#include <memory>
#include <gtest/gtest.h>
#include <common/utility.hpp>
namespace {
std::string configuration_file { "/vsomeip/0_0/vsomeip_security.json" };
vsomeip_v3::uid_t valid_uid = 4002200;
vsomeip_v3::gid_t valid_gid = 4003014;
}
TEST(load_policies, any_policies_present)
{
std::unique_ptr<vsomeip_v3::policy_manager_impl> security(new vsomeip_v3::policy_manager_impl);
std::set<std::string> its_failed;
std::vector<vsomeip_v3::configuration_element> policy_elements;
std::set<std::string> input { utility::get_policies_path() + configuration_file };
utility::read_data(input, policy_elements, its_failed);
ASSERT_EQ(its_failed.size(), 0);
security->load(policy_elements.at(0));
ASSERT_TRUE(security->remove_security_policy(valid_uid,valid_gid))
<< "Trying to remove a policy that is supposed to exist, but doesn't";
policy_elements.at(0).tree_.get_child("security").erase("policies");
security->load(policy_elements.at(0));
ASSERT_FALSE(security->remove_security_policy(valid_uid,valid_gid))
<< "Trying to remove a policy should not exist, but it exists";
}
TEST(load_policies, check_credentials)
{
std::unique_ptr<vsomeip_v3::policy_manager_impl> security(new vsomeip_v3::policy_manager_impl);
std::set<std::string> its_failed;
std::vector<vsomeip_v3::configuration_element> policy_elements;
std::set<std::string> input { utility::get_policies_path() + configuration_file };
utility::read_data(input, policy_elements, its_failed);
ASSERT_EQ(its_failed.size(), 0);
security->load(policy_elements.at(0));
ASSERT_TRUE(security->is_audit())
<< "Check credentials value should be false when no value is loaded";
bool check_credentials_value {true};
policy_elements.at(0).tree_.add<bool>("security.check_credentials", check_credentials_value);
security->load(policy_elements.at(0));
ASSERT_FALSE(security->is_audit())
<< "Check credentials flag should be true when the check_credential value is loaded as"
"true";
check_credentials_value = false;
policy_elements.at(0).tree_.put<bool>("security.check_credentials", check_credentials_value);
security->load(policy_elements.at(0));
ASSERT_TRUE(security->is_audit())
<< "Check credentials flag should be false when the check_credential value is loaded as"
"false";
}