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()); } }