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)); }
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); }
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); }
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); }
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); }
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); }
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()); }
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)); }
public async Task NullPackageRegistrationThrowsException() { var service = CreateService(); var testUsers = ReservedNamespaceServiceTestData.GetTestUsers(); await Assert.ThrowsAsync <ArgumentNullException>(async() => await service.AddPackageOwnerAsync(packageRegistration: null, user: testUsers.First())); }