public void Expand()
        {
            var graphService = new Mock <IGraphService>();

            var applicationGroup = new ApplicationGroup {
                Name = "[{teamProject.Name}]\\Project Administrators"
            };
            var pattern = new SecurityPattern(graphService.Object)
            {
                Name = "Test"
            };

            pattern.ApplicationGroups.Add(applicationGroup);

            var teamProject = new TeamProject {
                Name = "Test", Key = "1"
            };

            teamProject.Patterns.Add(new SecurityPattern(graphService.Object)
            {
                Name = "Test"
            });

            var target = new Organization();

            target.Mappings.Add("1", Guid.NewGuid());
            target.Patterns.Add(pattern);
            target.TeamProjects.Add(teamProject);

            target.Expand();

            ((SecurityPattern)teamProject.Patterns[0]).ApplicationGroups[0].Name.Should().Be("[Test]\\Project Administrators");
        }
示例#2
0
        public async Task CollectDeviations()
        {
            // Arrange
            var applicationGroup = new ApplicationGroup {
                Name = "ApplicationGroup"
            };
            var graphService = new Mock <IGraphService>();
            var teamProject  = new TeamProject();

            graphService.Setup(s => s.GetApplicationGroups(teamProject)).ReturnsAsync(new List <ApplicationGroup>());

            var target = new SecurityPattern(graphService.Object);

            target.ApplicationGroups.Add(applicationGroup);

            // Act
            var actual = await target.CollectDeviations(teamProject).ConfigureAwait(false);

            // Assert
            actual
            .Should()
            .SatisfyRespectively(
                first =>
            {
                first.Should().BeOfType <ApplicationGroupDeviation>();
                ((ApplicationGroupDeviation)first).ApplicationGroup.Should().Be(applicationGroup);
            });

            await Task.CompletedTask;
        }
示例#3
0
        public async Task CollectDeviations_MissingMembers()
        {
            // Arrange
            var applicationGroup = new ApplicationGroup {
                Name = "ApplicationGroup", Members = new[] { "Member 1" }
            };
            var current = new List <ApplicationGroup> {
                new ApplicationGroup {
                    Name = "ApplicationGroup"
                }
            };
            var graphService = new Mock <IGraphService>();
            var teamProject  = new TeamProject();

            graphService.Setup(s => s.GetApplicationGroups(teamProject)).ReturnsAsync(current);
            graphService.Setup(s => s.GetMembers(teamProject, applicationGroup)).ReturnsAsync(new List <string> {
                "Member 2"
            });

            var target = new SecurityPattern(graphService.Object);

            target.ApplicationGroups.Add(applicationGroup);

            // Act
            var actual = await target.CollectDeviations(teamProject).ConfigureAwait(false);

            // Assert
            actual
            .Should()
            .SatisfyRespectively(
                first =>
            {
                first.Should().BeOfType <ApplicationGroupMemberDeviation>();
                ((ApplicationGroupMemberDeviation)first).ApplicationGroup.Should().Be(applicationGroup);
                ((ApplicationGroupMemberDeviation)first).Member.Should().Be("Member 1");
                ((ApplicationGroupMemberDeviation)first).Type.Should().Be(DeviationType.Missing);
            },
                second =>
            {
                second.Should().BeOfType <ApplicationGroupMemberDeviation>();
                ((ApplicationGroupMemberDeviation)second).ApplicationGroup.Should().Be(applicationGroup);
                ((ApplicationGroupMemberDeviation)second).Member.Should().Be("Member 2");
                ((ApplicationGroupMemberDeviation)second).Type.Should().Be(DeviationType.Obsolete);
            });

            await Task.CompletedTask.ConfigureAwait(false);
        }