Example #1
0
        public void SplitsAndJoinsEmpty()
        {
            var initial = new GroupMembership()
            {
                Sources     = MockGroupMembershipHelper.CreateMockGroups(),
                Destination = new AzureADGroup {
                    ObjectId = Guid.NewGuid()
                },
                SyncJobPartitionKey = Guid.NewGuid().ToString(),
                SyncJobRowKey       = Guid.NewGuid().ToString(),
            };

            var split = initial.Split();

            Assert.AreEqual(1, split.Length);
            Assert.AreEqual(0, split.Single().SourceMembers.Count);
            Assert.AreEqual(initial.Sources, split.Single().Sources);
            Assert.AreEqual(initial.Destination, split.Single().Destination);
            Assert.AreEqual(initial.SyncJobRowKey, split.Single().SyncJobRowKey);
            Assert.AreEqual(initial.SyncJobPartitionKey, split.Single().SyncJobPartitionKey);
            Assert.IsTrue(split.Single().IsLastMessage);
            Assert.IsFalse(split.Single().Errored);

            var rejoined = GroupMembership.Merge(split);

            Assert.AreEqual(0, rejoined.SourceMembers.Count);
            Assert.AreEqual(initial.Sources, rejoined.Sources);
            Assert.AreEqual(initial.Destination, rejoined.Destination);
            Assert.AreEqual(initial.SyncJobRowKey, rejoined.SyncJobRowKey);
            Assert.AreEqual(initial.SyncJobPartitionKey, rejoined.SyncJobPartitionKey);
            CollectionAssert.AreEqual(initial.SourceMembers, rejoined.SourceMembers);
            Assert.IsFalse(rejoined.Errored);
        }
        public void SetupData()
        {
            _rundId        = Guid.NewGuid();
            _targetGroupId = Guid.NewGuid();
            _partitionKey  = "2021-1-1";
            _rowKey        = Guid.NewGuid().ToString();
            _sources       = MockGroupMembershipHelper.CreateMockGroups().Take(1).ToArray();
            _users         = MakeUsers(10, 0);

            _membership = new GroupMembership
            {
                Destination = new AzureADGroup {
                    ObjectId = _targetGroupId
                },
                IsLastMessage       = true,
                RunId               = _rundId,
                SourceMembers       = _users,
                SyncJobPartitionKey = _partitionKey,
                SyncJobRowKey       = _rowKey
            };

            _job = new SyncJob
            {
                PartitionKey                    = _partitionKey,
                RowKey                          = _rowKey,
                Status                          = SyncStatus.Idle.ToString(),
                LastRunTime                     = DateTime.FromFileTimeUtc(0),
                Enabled                         = true,
                Query                           = _sources[0].ObjectId.ToString(),
                TargetOfficeGroupId             = _targetGroupId,
                ThresholdPercentageForAdditions = 50,
                ThresholdPercentageForRemovals  = 50,
                Period                          = 6,
                Requestor                       = "[email protected],[email protected]",
                RunId                           = _rundId,
                StartDate                       = DateTime.UtcNow.Date.AddDays(-10),
                Type = "SecurityGroup"
            };
        }