Esempio n. 1
0
RepoRole RepoBSONFactory::makeRepoRole(
	const std::string &roleName,
	const std::string &database,
	const std::vector<RepoPermission> &permissions,
	const RepoRole &oldRole
	)
{
	RepoRole updatedOldRole = oldRole.cloneAndUpdatePermissions(permissions);
	return _makeRepoRole(roleName,
		database,
		updatedOldRole.getPrivileges(),
		updatedOldRole.getInheritedRoles());
}
TEST(RepoBSONTest, MakeRepoRoleTest2)
{
	std::string roleName = "repoRole";
	std::string databaseName = "admin";
	std::vector<RepoPrivilege> privileges;
	std::vector <std::pair<std::string, std::string>> inheritedRoles;

	privileges.push_back({ "db1", "col1", {DBActions::FIND} });
	privileges.push_back({ "db2", "col2", { DBActions::INSERT, DBActions::CREATE_USER } });
	privileges.push_back({ "db1", "col2", { DBActions::FIND, DBActions::DROP_ROLE } });

	inheritedRoles.push_back(std::pair < std::string, std::string > {"orange", "superUser"});

	RepoRole role = RepoBSONFactory::_makeRepoRole(roleName, databaseName, privileges, inheritedRoles);


	EXPECT_EQ(databaseName, role.getDatabase());
	EXPECT_EQ(roleName, role.getName());
	
	auto inheritedRolesOut = role.getInheritedRoles();

	ASSERT_EQ(inheritedRoles.size(), inheritedRolesOut.size());

	for (int i = 0; i < inheritedRolesOut.size(); ++i)
	{
		EXPECT_EQ(inheritedRolesOut[i].first, inheritedRoles[i].first);
		EXPECT_EQ(inheritedRolesOut[i].second, inheritedRoles[i].second);
	}


	auto privOut = role.getPrivileges();

	ASSERT_EQ(privOut.size(), privileges.size());
	for (int i = 0; i < privOut.size(); ++i)
	{
		EXPECT_EQ(privOut[i].database, privileges[i].database);
		EXPECT_EQ(privOut[i].collection, privileges[i].collection);
		EXPECT_EQ(privOut[i].actions.size(), privileges[i].actions.size());
	}
}