Exemple #1
0
        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"));
        }