public void Constructor_WhenPackageHasOneOwnerAndItIsTheCurrentUser_WhenRequiredSignerIsNull()
        {
            var package = new Package()
            {
                PackageRegistration = new PackageRegistration()
                {
                    Owners = new List <User>()
                    {
                        _currentUser
                    }
                },
                Version = "1.0.0"
            };

            _securityPolicyService.Setup(x => x.IsSubscribed(
                                             It.Is <User>(user => user == _currentUser),
                                             It.Is <string>(policyName => policyName == ControlRequiredSignerPolicy.PolicyName)))
            .Returns(false);

            var viewModel = new ListPackageItemRequiredSignerViewModel(
                package,
                _currentUser,
                _securityPolicyService.Object,
                wasMultiFactorAuthenticated: true);

            Assert.Equal(_currentUser.Username, viewModel.RequiredSigner.Username);
            Assert.Equal($"{_currentUser.Username} (0 certificates)", viewModel.RequiredSigner.DisplayText);
            Assert.Null(viewModel.RequiredSignerMessage);
            Assert.Empty(viewModel.AllSigners);
            Assert.True(viewModel.ShowRequiredSigner);
            Assert.True(viewModel.ShowTextBox);
            Assert.False(viewModel.CanEditRequiredSigner);

            _securityPolicyService.VerifyAll();
        }
        public void Constructor_WhenPackageHasThreeOwnersAndTheCurrentUserIsAnOwner_WhenTwoOtherOwnersHaveRequiredSignerControl()
        {
            var otherUser2 = new User()
            {
                Key      = 3,
                Username = "******"
            };

            var package = new Package()
            {
                PackageRegistration = new PackageRegistration()
                {
                    Owners = new List <User>()
                    {
                        _currentUser, _otherUser, otherUser2
                    },
                    RequiredSigners = new HashSet <User>()
                    {
                        _currentUser
                    }
                },
                Version = "1.0.0"
            };

            _securityPolicyService.Setup(
                x => x.IsSubscribed(
                    It.Is <User>(u => u == _currentUser),
                    It.Is <string>(s => s == ControlRequiredSignerPolicy.PolicyName)))
            .Returns(false);
            _securityPolicyService.Setup(
                x => x.IsSubscribed(
                    It.Is <User>(u => u == _otherUser),
                    It.Is <string>(s => s == ControlRequiredSignerPolicy.PolicyName)))
            .Returns(true);
            _securityPolicyService.Setup(
                x => x.IsSubscribed(
                    It.Is <User>(u => u == otherUser2),
                    It.Is <string>(s => s == ControlRequiredSignerPolicy.PolicyName)))
            .Returns(true);

            var viewModel = new ListPackageItemRequiredSignerViewModel(
                package,
                _currentUser,
                _securityPolicyService.Object,
                wasMultiFactorAuthenticated: true);

            Assert.Equal(_currentUser.Username, viewModel.RequiredSigner.Username);
            Assert.Equal($"{_currentUser.Username} (0 certificates)", viewModel.RequiredSigner.DisplayText);
            Assert.Equal($"The signing owner is managed by the '{_otherUser.Username}' and '{otherUser2.Username}' accounts.", viewModel.RequiredSignerMessage);
            VerifySigners(new[] { _currentUser }, viewModel.AllSigners, expectAnySigner: false);
            Assert.True(viewModel.ShowRequiredSigner);
            Assert.False(viewModel.ShowTextBox);
            Assert.False(viewModel.CanEditRequiredSigner);

            _securityPolicyService.VerifyAll();
        }
        public void Constructor_WhenPackageHasOneOwnerAndTheCurrentUserIsACollaborator_WhenRequiredSignerIsNull()
        {
            var organization = new Organization()
            {
                Key      = 7,
                Username = "******"
            };

            organization.Members.Add(new Membership()
            {
                OrganizationKey = organization.Key,
                Organization    = organization,
                MemberKey       = _currentUser.Key,
                Member          = _currentUser,
                IsAdmin         = false
            });

            var package = new Package()
            {
                PackageRegistration = new PackageRegistration()
                {
                    Owners = new List <User>()
                    {
                        organization
                    }
                },
                Version = "1.0.0"
            };

            _securityPolicyService.Setup(
                x => x.IsSubscribed(
                    It.IsNotNull <User>(),
                    It.Is <string>(s => s == ControlRequiredSignerPolicy.PolicyName)))
            .Returns(false);

            var viewModel = new ListPackageItemRequiredSignerViewModel(
                package,
                _currentUser,
                _securityPolicyService.Object,
                wasMultiFactorAuthenticated: true);

            Assert.Equal("c", viewModel.RequiredSigner.Username);
            Assert.Equal($"{organization.Username} (0 certificates)", viewModel.RequiredSigner.DisplayText);
            Assert.Null(viewModel.RequiredSignerMessage);
            VerifySigners(package.PackageRegistration.Owners, viewModel.AllSigners, expectAnySigner: false);
            Assert.True(viewModel.ShowRequiredSigner);
            Assert.False(viewModel.ShowTextBox);
            Assert.False(viewModel.CanEditRequiredSigner);

            _securityPolicyService.VerifyAll();
        }
        public void Constructor_WhenPackageHasTwoOwnersAndTheCurrentUserIsAnOwner_WhenCurrentUserHasRequiredSignerControl()
        {
            var package = new Package()
            {
                PackageRegistration = new PackageRegistration()
                {
                    Owners = new List <User>()
                    {
                        _currentUser, _otherUser
                    },
                    RequiredSigners = new HashSet <User>()
                    {
                        _currentUser
                    }
                },
                Version = "1.0.0"
            };

            _securityPolicyService.Setup(
                x => x.IsSubscribed(
                    It.Is <User>(u => u == _currentUser),
                    It.Is <string>(s => s == ControlRequiredSignerPolicy.PolicyName)))
            .Returns(true);

            var viewModel = new ListPackageItemRequiredSignerViewModel(
                package,
                _currentUser,
                _securityPolicyService.Object,
                wasMultiFactorAuthenticated: true);

            Assert.Equal(_currentUser.Username, viewModel.RequiredSigner.Username);
            Assert.Equal($"{_currentUser.Username} (0 certificates)", viewModel.RequiredSigner.DisplayText);
            Assert.Null(viewModel.RequiredSignerMessage);
            VerifySigners(package.PackageRegistration.Owners, viewModel.AllSigners, expectAnySigner: true);
            Assert.True(viewModel.ShowRequiredSigner);
            Assert.False(viewModel.ShowTextBox);
            Assert.True(viewModel.CanEditRequiredSigner);

            _securityPolicyService.VerifyAll();
        }
예제 #5
0
        public void Constructor_WhenPackageHasTwoOwnersAndTheCurrentUserIsAnOwnerAndNotMultiFactorAuthenticated_WhenRequiredSignerIsNull()
        {
            var package = new Package()
            {
                PackageRegistration = new PackageRegistration()
                {
                    Owners = new List <User>()
                    {
                        _currentUser, _otherUser
                    }
                },
                Version = "1.0.0"
            };

            _securityPolicyService.Setup(
                x => x.IsSubscribed(
                    It.IsNotNull <User>(),
                    It.Is <string>(s => s == ControlRequiredSignerPolicy.PolicyName)))
            .Returns(false);

            var viewModel = new ListPackageItemRequiredSignerViewModel(
                package,
                _currentUser,
                _securityPolicyService.Object,
                wasAADLoginOrMultiFactorAuthenticated: false);

            Assert.Equal(string.Empty, viewModel.RequiredSigner.Username);
            Assert.Equal("Any", viewModel.RequiredSigner.DisplayText);
            Assert.Null(viewModel.RequiredSignerMessage);
            VerifySigners(package.PackageRegistration.Owners, viewModel.AllSigners, expectAnySigner: true);
            Assert.True(viewModel.ShowRequiredSigner);
            Assert.False(viewModel.ShowTextBox);
            Assert.False(viewModel.CanEditRequiredSigner);

            _securityPolicyService.VerifyAll();
        }
        public void Constructor_WhenPackageHasMultipleOwners_WhenOwnersHaveVaryingCertificateCounts()
        {
            User currentUser = new User()
            {
                Key              = 1,
                Username         = "******",
                UserCertificates = new List <UserCertificate>()
                {
                    new UserCertificate()
                    {
                        Key = 1
                    }
                }
            };

            User otherUser1 = new User()
            {
                Key      = 2,
                Username = "******"
            };

            User otherUser2 = new User()
            {
                Key              = 3,
                Username         = "******",
                UserCertificates = new List <UserCertificate>()
                {
                    new UserCertificate()
                    {
                        Key = 2
                    },
                    new UserCertificate()
                    {
                        Key = 3
                    }
                }
            };

            var package = new Package()
            {
                PackageRegistration = new PackageRegistration()
                {
                    Owners = new List <User>()
                    {
                        otherUser1, currentUser, otherUser2
                    },
                    RequiredSigners = new HashSet <User>()
                    {
                        currentUser
                    }
                },
                Version = "1.0.0"
            };

            _securityPolicyService.Setup(
                x => x.IsSubscribed(
                    It.IsNotNull <User>(),
                    It.Is <string>(s => s == ControlRequiredSignerPolicy.PolicyName)))
            .Returns(false);

            var viewModel = new ListPackageItemRequiredSignerViewModel(
                package,
                currentUser,
                _securityPolicyService.Object,
                wasMultiFactorAuthenticated: true);

            Assert.Equal(currentUser.Username, viewModel.RequiredSigner.Username);
            Assert.Equal($"{currentUser.Username} (1 certificate)", viewModel.RequiredSigner.DisplayText);
            Assert.Null(viewModel.RequiredSignerMessage);
            VerifySigners(package.PackageRegistration.Owners, viewModel.AllSigners, expectAnySigner: true);
            Assert.True(viewModel.ShowRequiredSigner);
            Assert.False(viewModel.ShowTextBox);
            Assert.True(viewModel.CanEditRequiredSigner);

            _securityPolicyService.Verify();
        }