public override void Init() { base.Init(); Twin.ChangeEventPriority(nameof(LocalUsersSnapshotGenerator), EventPriority.High); _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(Passwd); _mockedShell.Setup(m => m.ExecuteProcess( It.IsAny <string>(), It.Is <string>(x => x.Contains("group")), It.IsAny <ErrorHandler>(), It.IsAny <IEnumerable <int> >())) .Returns(Group); _genertorUnderTest = new LocalUsersSnapshotGenerator(_mockedShell.Object); }
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")); }