public async Task GetNextMembersPageTest() { var mockLogs = new MockLoggingRepository(); var telemetryClient = new TelemetryClient(TelemetryConfiguration.CreateDefault()); var mockGraphGroup = new Mock <IGraphGroupRepository>(); var mockMail = new MockMailRepository(); var mailSenders = new EmailSenderRecipient("*****@*****.**", "fake_pass", "*****@*****.**", "*****@*****.**", "*****@*****.**"); var mockSynJobs = new MockSyncJobRepository(); var dryRun = new DryRunValue(false); var samplePageResponse = GetPageSampleResponse(100, true); var userCount = 100; mockGraphGroup.Setup(x => x.GetNextUsersPageAsync(It.IsAny <string>(), It.IsAny <IGroupTransitiveMembersCollectionWithReferencesPage>())) .ReturnsAsync(samplePageResponse); var graphUpdaterService = new GraphUpdaterService(mockLogs, telemetryClient, mockGraphGroup.Object, mockMail, mailSenders, mockSynJobs, dryRun); var groupId = Guid.NewGuid(); var runId = Guid.NewGuid(); var nextPageUrl = samplePageResponse.nextPageUrl; var response = await graphUpdaterService.GetNextMembersPageAsync(nextPageUrl, samplePageResponse.usersFromGroup, runId); Assert.IsNotNull(response.NextPageUrl); Assert.AreEqual(userCount, response.Members.Count); }
public async Task RemoveUsersToGroupInDryRunMode() { var mockLogs = new MockLoggingRepository(); var telemetryClient = new TelemetryClient(TelemetryConfiguration.CreateDefault()); var mockGraphGroup = new MockGraphGroupRepository(); var mockMail = new MockMailRepository(); var mailSenders = new EmailSenderRecipient("*****@*****.**", "fake_pass", "*****@*****.**", "*****@*****.**", "*****@*****.**"); var mockSynJobs = new MockSyncJobRepository(); var dryRun = new DryRunValue(true); var graphUpdaterService = new GraphUpdaterService(mockLogs, telemetryClient, mockGraphGroup, mockMail, mailSenders, mockSynJobs, dryRun); var runId = Guid.NewGuid(); var groupId = Guid.NewGuid(); bool isInitialSync = false; var newUsers = new List <AzureADUser>(); var userCount = 10; for (int i = 0; i < userCount; i++) { newUsers.Add(new AzureADUser { ObjectId = Guid.NewGuid() }); } mockGraphGroup.GroupsToUsers.Add(groupId, newUsers); var status = await graphUpdaterService.RemoveUsersFromGroupAsync(newUsers.Take(5).ToList(), groupId, runId, isInitialSync); Assert.AreEqual(GraphUpdaterStatus.Ok, status.Status); Assert.AreEqual(newUsers.Count, mockGraphGroup.GroupsToUsers[groupId].Count); }
public async Task UpdateSyncJobStatusDryRunModeTest() { var mockLogs = new MockLoggingRepository(); var telemetryClient = new TelemetryClient(TelemetryConfiguration.CreateDefault()); var mockGraphGroup = new MockGraphGroupRepository(); var mockMail = new MockMailRepository(); var mailSenders = new EmailSenderRecipient("*****@*****.**", "fake_pass", "*****@*****.**", "*****@*****.**", "*****@*****.**"); var mockSynJobs = new MockSyncJobRepository(); var dryRun = new DryRunValue(false); var graphUpdaterService = new GraphUpdaterService(mockLogs, telemetryClient, mockGraphGroup, mockMail, mailSenders, mockSynJobs, dryRun); var runId = Guid.NewGuid(); var lastRunTime = DateTime.UtcNow.AddDays(-1); var job = new SyncJob { PartitionKey = "00-00-00", RowKey = Guid.NewGuid().ToString(), Status = SyncStatus.InProgress.ToString(), Enabled = true, DryRunTimeStamp = lastRunTime }; mockSynJobs.ExistingSyncJobs.Add((job.PartitionKey, job.RowKey), job); await graphUpdaterService.UpdateSyncJobStatusAsync(job, SyncStatus.Idle, true, runId); Assert.AreEqual(SyncStatus.Idle.ToString(), job.Status); Assert.IsTrue(job.DryRunTimeStamp > lastRunTime); Assert.IsTrue(job.LastRunTime < lastRunTime); Assert.IsNotNull(job.RunId); }
public async Task GroupExistsSocketExceptionTest() { var mockLogs = new MockLoggingRepository(); var telemetryClient = new TelemetryClient(TelemetryConfiguration.CreateDefault()); var mockGraphGroup = new Mock <IGraphGroupRepository>(); var mockMail = new MockMailRepository(); var mailSenders = new EmailSenderRecipient("*****@*****.**", "fake_pass", "*****@*****.**", "*****@*****.**", "*****@*****.**"); var mockSynJobs = new MockSyncJobRepository(); var dryRun = new DryRunValue(false); var attemptNumber = 1; mockGraphGroup.Setup(x => x.GroupExists(It.IsAny <Guid>())).Callback(() => { if (attemptNumber == 1) { attemptNumber++; throw new SocketException(); } }).ReturnsAsync(true); var graphUpdaterService = new GraphUpdaterService(mockLogs, telemetryClient, mockGraphGroup.Object, mockMail, mailSenders, mockSynJobs, dryRun); var groupId = Guid.NewGuid(); var runId = Guid.NewGuid(); var response = await graphUpdaterService.GroupExistsAsync(groupId, runId); Assert.IsTrue(response.Result); Assert.IsTrue(mockLogs.MessagesLogged.Any(x => x.Message.Contains("Got a transient SocketException"))); }
public async Task GetGroupNameTest() { var mockLogs = new MockLoggingRepository(); var telemetryClient = new TelemetryClient(TelemetryConfiguration.CreateDefault()); var mockGraphGroup = new Mock <IGraphGroupRepository>(); var mockMail = new MockMailRepository(); var mailSenders = new EmailSenderRecipient("*****@*****.**", "fake_pass", "*****@*****.**", "*****@*****.**", "*****@*****.**"); var mockSynJobs = new MockSyncJobRepository(); var dryRun = new DryRunValue(false); var graphUpdaterService = new GraphUpdaterService(mockLogs, telemetryClient, mockGraphGroup.Object, mockMail, mailSenders, mockSynJobs, dryRun); var groupName = "MyTestGroup"; mockGraphGroup.Setup(x => x.GetGroupNameAsync(It.IsAny <Guid>())).ReturnsAsync(groupName); var response = await graphUpdaterService.GetGroupNameAsync(Guid.NewGuid()); Assert.AreEqual(groupName, response); }
public async Task SendEmailTest() { var mockLogs = new MockLoggingRepository(); var telemetryClient = new TelemetryClient(TelemetryConfiguration.CreateDefault()); var mockGraphGroup = new MockGraphGroupRepository(); var mockMail = new MockMailRepository(); var mailSenders = new EmailSenderRecipient("*****@*****.**", "fake_pass", "*****@*****.**", "*****@*****.**", "*****@*****.**"); var mockSynJobs = new MockSyncJobRepository(); var dryRun = new DryRunValue(false); var graphUpdaterService = new GraphUpdaterService(mockLogs, telemetryClient, mockGraphGroup, mockMail, mailSenders, mockSynJobs, dryRun); var toEmail = "user@domain"; var template = "SampleTemplate"; var runId = Guid.NewGuid(); await graphUpdaterService.SendEmailAsync(toEmail, template, new string[0] { }, runId); Assert.AreEqual(1, mockMail.SentEmails.Count); }
public async Task GroupExistsTest() { var mockLogs = new MockLoggingRepository(); var telemetryClient = new TelemetryClient(TelemetryConfiguration.CreateDefault()); var mockGraphGroup = new MockGraphGroupRepository(); var mockMail = new MockMailRepository(); var mailSenders = new EmailSenderRecipient("*****@*****.**", "fake_pass", "*****@*****.**", "*****@*****.**", "*****@*****.**"); var mockSynJobs = new MockSyncJobRepository(); var dryRun = new DryRunValue(false); var graphUpdaterService = new GraphUpdaterService(mockLogs, telemetryClient, mockGraphGroup, mockMail, mailSenders, mockSynJobs, dryRun); var groupId = Guid.NewGuid(); var runId = Guid.NewGuid(); mockGraphGroup.GroupsToUsers.Add(groupId, new List <AzureADUser>()); var response = await graphUpdaterService.GroupExistsAsync(groupId, runId); Assert.IsTrue(response.Result); }