public void VerifyLocalUsersParsing() { var events = _genertorUnderTest.GetEvents().ToList(); events.ValidateSchema(); events.ForEach(ev => ev.ValidateSchema()); Assert.AreEqual(1, events.Count); var payloads = events.Cast <LocalUsers>().SelectMany(ev => ev.Payload).ToList(); Assert.AreEqual(5, payloads.Count); Assert.AreEqual(1, payloads.Count(p => p.UserId == "0" && p.UserName == "root" && p.GroupIds == "0" && p.GroupNames == "root")); Assert.AreEqual(1, payloads.Count(p => p.UserId == "1" && p.UserName == "daemon" && p.GroupIds == "1" && p.GroupNames == "daemon")); Assert.AreEqual(1, payloads.Count(p => p.UserId == "2" && p.UserName == "bin" && p.GroupIds == "2" && p.GroupNames == "bin")); Assert.AreEqual(1, payloads.Count(p => p.UserId == "3" && p.UserName == "sys" && p.GroupIds == "35" && p.GroupNames == "sys")); Assert.AreEqual(1, payloads.Count(p => p.UserId == "1000" && p.UserName == "t-amenoc" && p.GroupIds.Split(";").All(x => x == "1005" || x == "4") && p.GroupNames.Split(";").All(x => x == "t-amenoc" || x == "adm"))); }
public void TestVerifyLocalUsersParsingWithMultipleGroupNamesSharingSameGid() { Mock <IProcessUtil> mockedShell = new Mock <IProcessUtil>(); mockedShell.Setup(m => m.ExecuteProcess( It.IsAny <string>(), It.Is <string>(x => x.Contains("passwd")), It.IsAny <ErrorHandler>(), It.IsAny <IEnumerable <int> >())) .Returns(@"user1:x:1002:1005::/home/user1:/bin/sh user2:x:1003:1006::/home/user2:/bin/sh"); mockedShell.Setup(m => m.ExecuteProcess( It.IsAny <string>(), It.Is <string>(x => x.Contains("group")), It.IsAny <ErrorHandler>(), It.IsAny <IEnumerable <int> >())) .Returns(@"group1:x:1003:user1 group2:x:1004:user1 user1:x:1005: group3:x:1003: user2:x:1006:"); LocalUsersSnapshotGenerator genertorUnderTest = new LocalUsersSnapshotGenerator(mockedShell.Object); var events = genertorUnderTest.GetEvents().ToList(); events.ValidateSchema(); events.ForEach(ev => ev.ValidateSchema()); Assert.AreEqual(1, events.Count); var payloads = events.Cast <LocalUsers>().SelectMany(ev => ev.Payload).ToList(); Assert.AreEqual(2, payloads.Count); Assert.AreEqual(1, payloads.Count(p => p.UserId == "1002" && p.UserName == "user1" && p.GroupIds == "1005;1003;1004" && p.GroupNames == "user1;group1;group3;group2")); Assert.AreEqual(1, payloads.Count(p => p.UserId == "1003" && p.UserName == "user2" && p.GroupIds == "1006" && p.GroupNames == "user2")); }