コード例 #1
0
            public async Task AddingExistingOwnerToTheNamespaceThrowsException()
            {
                var testNamespaces    = ReservedNamespaceServiceTestData.GetTestNamespaces();
                var prefix            = "microsoft.";
                var existingNamespace = testNamespaces.FirstOrDefault(rn => rn.Value.Equals(prefix, StringComparison.OrdinalIgnoreCase));
                var testUsers         = ReservedNamespaceServiceTestData.GetTestUsers();
                var owner             = testUsers.First();

                existingNamespace.Owners.Add(owner);
                var service = new TestableReservedNamespaceService(reservedNamespaces: testNamespaces, users: testUsers);

                await Assert.ThrowsAsync <InvalidOperationException>(async() => await service.AddOwnerToReservedNamespaceAsync(existingNamespace.Value, owner.Username));
            }
コード例 #2
0
            public async Task DeletingNonOwnerFromNamespaceThrowsException()
            {
                var testNamespaces    = ReservedNamespaceServiceTestData.GetTestNamespaces();
                var prefix            = "microsoft.";
                var existingNamespace = testNamespaces.FirstOrDefault(rn => rn.Value.Equals(prefix, StringComparison.OrdinalIgnoreCase));
                var testUsers         = ReservedNamespaceServiceTestData.GetTestUsers();
                var user1             = testUsers.First(u => u.Username == "test1");
                var user2             = testUsers.First(u => u.Username == "test2");

                existingNamespace.Owners.Add(user1);
                var service = new TestableReservedNamespaceService(reservedNamespaces: testNamespaces, users: testUsers);

                await Assert.ThrowsAsync <InvalidOperationException>(async() => await service.DeleteOwnerFromReservedNamespaceAsync(prefix, user2.Username));
            }
        public async void AddOwnerSuccessfullyAddsOwnerToReservedNamespace(string value, string username)
        {
            // Arrange.
            var namespaces               = ReservedNamespaceServiceTestData.GetTestNamespaces();
            var allUsers                 = ReservedNamespaceServiceTestData.GetTestUsers();
            var existingNamespace        = namespaces.Where(rn => rn.Value.Equals(value, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();
            var reservedNamespaceService = new TestableReservedNamespaceService(reservedNamespaces: namespaces, users: allUsers);
            var controller               = new ReservedNamespaceController(reservedNamespaceService);

            // Act & Assert.
            JsonResult result = await controller.AddOwner(existingNamespace, username);

            dynamic data = result.Data;

            Assert.True(data.success);
        }
コード例 #4
0
            public void OwnedNamespacesAllowsPush(string id)
            {
                var testNamespaces    = ReservedNamespaceServiceTestData.GetTestNamespaces();
                var prefix            = "microsoft.";
                var existingNamespace = testNamespaces.FirstOrDefault(rn => rn.Value.Equals(prefix, StringComparison.OrdinalIgnoreCase));
                var testUsers         = ReservedNamespaceServiceTestData.GetTestUsers();
                var firstUser         = testUsers.First();

                existingNamespace.Owners.Add(firstUser);
                var service = new TestableReservedNamespaceService(reservedNamespaces: testNamespaces, users: testUsers);

                var isPushAllowed = service.IsPushAllowed(id, firstUser, out IReadOnlyCollection <ReservedNamespace> matchingNamespaces);

                Assert.True(isPushAllowed);
                Assert.NotEmpty(matchingNamespaces);
                Assert.True(matchingNamespaces.Count() == 1);
            }
コード例 #5
0
            public async Task DeletingOwnerFromNamespaceMarksRegistrationsUnverified()
            {
                var testNamespaces    = ReservedNamespaceServiceTestData.GetTestNamespaces();
                var prefix            = "microsoft.";
                var existingNamespace = testNamespaces.FirstOrDefault(rn => rn.Value.Equals(prefix, StringComparison.OrdinalIgnoreCase));
                var testUsers         = ReservedNamespaceServiceTestData.GetTestUsers();
                var owner1            = testUsers.First(u => u.Username == "test1");
                var owner2            = testUsers.First(u => u.Username == "test2");
                var registrations     = ReservedNamespaceServiceTestData.GetRegistrations();
                var pr1 = registrations.ToList().FirstOrDefault(pr => (pr.Id == "Microsoft.Package1"));
                var pr2 = registrations.ToList().FirstOrDefault(pr => (pr.Id == "Microsoft.Package2"));
                var pr3 = registrations.ToList().FirstOrDefault(pr => (pr.Id == "Microsoft.AspNet.Package2"));

                pr1.Owners.Add(owner1);
                pr2.Owners.Add(owner1);
                pr3.Owners.Add(owner2);
                pr1.IsVerified = true;
                pr2.IsVerified = true;
                pr3.IsVerified = true;
                existingNamespace.Owners.Add(owner1);
                existingNamespace.PackageRegistrations.Add(pr1);
                existingNamespace.PackageRegistrations.Add(pr2);

                var service = new TestableReservedNamespaceService(reservedNamespaces: testNamespaces, users: testUsers, packageRegistrations: registrations);

                Assert.True(existingNamespace.PackageRegistrations.Count == 2);

                await service.DeleteOwnerFromReservedNamespaceAsync(prefix, owner1.Username);

                service
                .MockReservedNamespaceRepository
                .Verify(x => x.CommitChangesAsync());

                service
                .MockPackageService
                .Verify(p => p.UpdatePackageVerifiedStatusAsync(
                            It.IsAny <IReadOnlyCollection <PackageRegistration> >(), It.IsAny <bool>()),
                        Times.Once);

                Assert.False(existingNamespace.Owners.Contains(owner1));
                Assert.True(existingNamespace.PackageRegistrations.Count == 0);
                Assert.False(pr1.IsVerified);
                Assert.False(pr2.IsVerified);
                Assert.True(pr3.IsVerified);
            }
        public async void RemoveOwnerDoesNotReturnSuccessForInvalidData(string value, string username)
        {
            // Arrange.
            var namespaces        = ReservedNamespaceServiceTestData.GetTestNamespaces();
            var allUsers          = ReservedNamespaceServiceTestData.GetTestUsers();
            var existingNamespace = namespaces.Where(rn => rn.Value.Equals(value, StringComparison.OrdinalIgnoreCase)).FirstOrDefault() ?? new ReservedNamespace();

            existingNamespace.Value = value;
            var reservedNamespaceService = new TestableReservedNamespaceService(reservedNamespaces: namespaces, users: allUsers);
            var controller = new ReservedNamespaceController(reservedNamespaceService);

            // Act & Assert.
            JsonResult result = await controller.RemoveOwner(existingNamespace, username);

            dynamic data = result.Data;

            Assert.False(data.success);
        }
コード例 #7
0
            public async Task WillMarkPackageRegistrationNotVerifiedIfIdMatchesNonOwnedSharedNamespace()
            {
                var id             = "Microsoft.Aspnet.Mvc";
                var testNamespaces = ReservedNamespaceServiceTestData.GetTestNamespaces();
                var prefixes       = new List <string> {
                    "microsoft.", "microsoft.aspnet."
                };
                var testUsers = ReservedNamespaceServiceTestData.GetTestUsers();
                var firstUser = testUsers.First();
                var lastUser  = testUsers.Last();

                prefixes.ForEach(p =>
                {
                    var existingNamespace = testNamespaces.FirstOrDefault(rn => rn.Value.Equals(p, StringComparison.OrdinalIgnoreCase));
                    existingNamespace.IsSharedNamespace = true;
                    existingNamespace.Owners.Add(firstUser);
                });

                var reservedNamespaceService = new Mock <IReservedNamespaceService>();
                IReadOnlyCollection <ReservedNamespace> userOwnedMatchingNamespaces = new List <ReservedNamespace>();

                reservedNamespaceService
                .Setup(s => s.ShouldMarkNewPackageIdVerified(It.IsAny <User>(), It.IsAny <string>(), out userOwnedMatchingNamespaces))
                .Returns(false);

                reservedNamespaceService
                .Setup(r => r.GetReservedNamespacesForId(It.IsAny <string>()))
                .Returns(testNamespaces.ToList().AsReadOnly());

                var vulnerabilityService = new Mock <IPackageVulnerabilityService>();

                var packageUploadService = CreateService(
                    reservedNamespaceService: reservedNamespaceService,
                    vulnerabilityService: vulnerabilityService);
                var nugetPackage = PackageServiceUtility.CreateNuGetPackage(id: id);

                var package = await packageUploadService.GeneratePackageAsync(id, nugetPackage.Object, new PackageStreamMetadata(), lastUser, lastUser);

                vulnerabilityService.Verify(
                    x => x.ApplyExistingVulnerabilitiesToPackage(package),
                    Times.Once);

                Assert.False(package.PackageRegistration.IsVerified);
            }
コード例 #8
0
            public void NonPrefixNamespaceDoesNotBlockPush(string id)
            {
                var testNamespaces    = ReservedNamespaceServiceTestData.GetTestNamespaces();
                var prefix            = "jQuery";
                var existingNamespace = testNamespaces.FirstOrDefault(rn => rn.Value.Equals(prefix, StringComparison.OrdinalIgnoreCase));

                existingNamespace.IsPrefix = false;
                var testUsers = ReservedNamespaceServiceTestData.GetTestUsers();
                var firstUser = testUsers.First();
                var lastUser  = testUsers.Last();

                existingNamespace.Owners.Add(firstUser);
                var service = new TestableReservedNamespaceService(reservedNamespaces: testNamespaces, users: testUsers);

                var isPushAllowed = service.IsPushAllowed(id, lastUser, out IReadOnlyCollection <ReservedNamespace> matchingNamespaces);

                Assert.Empty(matchingNamespaces);
                Assert.True(isPushAllowed);
            }
コード例 #9
0
            public void MultipleOwnedNamespacesAreReturnedCorrectly(string id)
            {
                var testNamespaces = ReservedNamespaceServiceTestData.GetTestNamespaces();
                var prefixes       = new List <string> {
                    "microsoft.", "microsoft.aspnet."
                };
                var testUsers = ReservedNamespaceServiceTestData.GetTestUsers();
                var firstUser = testUsers.First();

                prefixes.ForEach(p => {
                    var existingNamespace = testNamespaces.FirstOrDefault(rn => rn.Value.Equals(p, StringComparison.OrdinalIgnoreCase));
                    existingNamespace.Owners.Add(firstUser);
                });

                var service = new TestableReservedNamespaceService(reservedNamespaces: testNamespaces, users: testUsers);

                var isPushAllowed = service.IsPushAllowed(id, firstUser, out IReadOnlyCollection <ReservedNamespace> matchingNamespaces);

                Assert.True(isPushAllowed);
                Assert.NotEmpty(matchingNamespaces);
                Assert.True(matchingNamespaces.Count() == prefixes.Count());
            }
コード例 #10
0
            public async Task AddAnOwnerToNamespaceSuccessfully()
            {
                var testNamespaces    = ReservedNamespaceServiceTestData.GetTestNamespaces();
                var prefix            = "microsoft.";
                var existingNamespace = testNamespaces.FirstOrDefault(rn => rn.Value.Equals(prefix, StringComparison.OrdinalIgnoreCase));
                var testUsers         = ReservedNamespaceServiceTestData.GetTestUsers();
                var owner             = testUsers.First();
                var service           = new TestableReservedNamespaceService(reservedNamespaces: testNamespaces, users: testUsers);

                await service.AddOwnerToReservedNamespaceAsync(prefix, owner.Username);

                service
                .MockReservedNamespaceRepository
                .Verify(x => x.CommitChangesAsync());

                service
                .MockPackageService
                .Verify(p => p.UpdatePackageVerifiedStatusAsync(
                            It.IsAny <IReadOnlyCollection <PackageRegistration> >(), It.IsAny <bool>()),
                        Times.Never);

                Assert.True(existingNamespace.Owners.Contains(owner));
            }
コード例 #11
0
 public async Task NullPackageRegistrationThrowsException()
 {
     var service   = CreateService();
     var testUsers = ReservedNamespaceServiceTestData.GetTestUsers();
     await Assert.ThrowsAsync <ArgumentNullException>(async() => await service.AddPackageOwnerAsync(packageRegistration: null, user: testUsers.First()));
 }