public async Task CreatePackageWillReturn400IfPackageIsInvalid() { // Arrange var user = new User() { EmailAddress = "*****@*****.**" }; var packageRegistration = new PackageRegistration(); packageRegistration.Owners.Add(user); var controller = new TestableApiController(); controller.SetCurrentUser(user); controller.MockPackageFileService.Setup(p => p.SavePackageFileAsync(It.IsAny <Package>(), It.IsAny <Stream>())) .Returns(Task.CompletedTask).Verifiable(); controller.MockPackageService.Setup(p => p.FindPackageRegistrationById(It.IsAny <string>())) .Returns(packageRegistration); byte[] data = new byte[100]; controller.SetupPackageFromInputStream(new MemoryStream(data)); // Act ActionResult result = await controller.CreatePackagePut(); // Assert ResultAssert.IsStatusCode(result, HttpStatusCode.BadRequest); }
public void WillNotListThePackageIfApiKeyDoesNotBelongToAnOwner() { // Arrange var owner = new User { Key = 1 }; var package = new Package { PackageRegistration = new PackageRegistration { Owners = new[] { new User() } } }; var controller = new TestableApiController(); controller.MockPackageService.Setup(x => x.FindPackageByIdAndVersion("theId", "1.0.42", true)).Returns(package); controller.SetCurrentUser(owner); // Act var result = controller.PublishPackage("theId", "1.0.42"); // Assert ResultAssert.IsStatusCode( result, HttpStatusCode.Forbidden, String.Format(Strings.ApiKeyNotAuthorized, "publish")); controller.MockPackageService.Verify(x => x.MarkPackageListed(package, It.IsAny <bool>()), Times.Never()); }
public async Task WhenAccountMissingReturns404(bool isAdmin) { // Arrange var controller = GetController(); // Act var result = await InvokeRejectMember(controller, account : null, isAdmin : isAdmin); // Assert ResultAssert.IsStatusCode(result, HttpStatusCode.NotFound); GetMock <IUserService>().Verify(s => s.RejectMembershipRequestAsync(It.IsAny <Organization>(), It.IsAny <string>(), It.IsAny <string>()), Times.Never); GetMock <IMessageService>().Verify(s => s.SendOrganizationMembershipRequestRejectedNotice(It.IsAny <Organization>(), It.IsAny <User>()), Times.Never); }
public async Task WhenAccountMissingReturns404(bool isAdmin) { // Arrange var controller = GetController(); // Act var result = await InvokeConfirmMember(controller, account : null, isAdmin : isAdmin); // Assert ResultAssert.IsStatusCode(result, HttpStatusCode.NotFound); GetMock <IUserService>().Verify(s => s.AddMemberAsync(It.IsAny <Organization>(), Fakes.User.Username, defaultConfirmationToken), Times.Never); GetMock <IMessageService>().Verify(s => s.SendOrganizationMemberUpdatedNotice(It.IsAny <Organization>(), It.IsAny <Membership>()), Times.Never); }
public void WillThrowIfAPackageWithTheIdAndSemanticVersionDoesNotExist() { // Arrange var controller = new TestableApiController(); controller.MockPackageService.Setup(x => x.FindPackageByIdAndVersion("theId", "1.0.42", true)).Returns((Package)null); controller.SetCurrentUser(new User()); // Act var result = controller.PublishPackage("theId", "1.0.42"); // Assert ResultAssert.IsStatusCode( result, HttpStatusCode.NotFound, String.Format(Strings.PackageWithIdAndVersionNotFound, "theId", "1.0.42")); controller.MockPackageService.Verify(x => x.MarkPackageListed(It.IsAny <Package>(), It.IsAny <bool>()), Times.Never()); }
public void VerifyPackageKeyReturns403IfUserIsNotAnOwner() { // Arrange var controller = new TestableApiController(); var nonOwner = new User(); controller.SetCurrentUser(nonOwner); controller.MockPackageService.Setup(s => s.FindPackageByIdAndVersion("foo", "1.0.0", true)).Returns( new Package { PackageRegistration = new PackageRegistration() }); // Act var result = controller.VerifyPackageKey("foo", "1.0.0"); // Assert ResultAssert.IsStatusCode( result, HttpStatusCode.Forbidden, Strings.ApiKeyNotAuthorized); }
public async Task GetPackageReturns503IfNoVersionIsProvidedAndDatabaseUnavailable() { // Arrange const string PackageId = "Baz"; var package = new Package(); var actionResult = new EmptyResult(); var controller = new TestableApiController(MockBehavior.Strict); controller.MockPackageService.Setup(x => x.FindPackageByIdAndVersion("Baz", "", false)).Throws(new DataException("Oh noes, database broked!")); controller.MockPackageFileService.Setup(s => s.CreateDownloadPackageActionResultAsync(HttpRequestUrl, PackageId, package.NormalizedVersion)) .Returns(Task.FromResult <ActionResult>(actionResult)) .Verifiable(); NameValueCollection headers = new NameValueCollection(); headers.Add("NuGet-Operation", "Install"); var httpRequest = new Mock <HttpRequestBase>(MockBehavior.Strict); httpRequest.SetupGet(r => r.UserHostAddress).Returns("Foo"); httpRequest.SetupGet(r => r.UserAgent).Returns("Qux"); httpRequest.SetupGet(r => r.Headers).Returns(headers); httpRequest.SetupGet(r => r.Url).Returns(HttpRequestUrl); var httpContext = new Mock <HttpContextBase>(MockBehavior.Strict); httpContext.SetupGet(c => c.Request).Returns(httpRequest.Object); var controllerContext = new ControllerContext(new RequestContext(httpContext.Object, new RouteData()), controller); controller.ControllerContext = controllerContext; // Act var result = await controller.GetPackage("Baz", ""); // Assert ResultAssert.IsStatusCode(result, HttpStatusCode.ServiceUnavailable, Strings.DatabaseUnavailable_TrySpecificVersion); // controller.MockPackageFileService.Verify(); controller.MockPackageService.Verify(); // controller.MockUserService.Verify(); }
public async Task WillReturnConflictIfAPackageWithTheIdAndSameNormalizedVersionAlreadyExists() { var version = new SemanticVersion("1.0.042"); var nuGetPackage = new Mock <INupkg>(); nuGetPackage.Setup(x => x.Metadata.Id).Returns("theId"); nuGetPackage.Setup(x => x.Metadata.Version).Returns(version); var user = new User() { EmailAddress = "*****@*****.**" }; var packageRegistration = new PackageRegistration { Packages = new List <Package> { new Package { Version = "01.00.42", NormalizedVersion = "1.0.42" } }, Owners = new List <User> { user } }; var controller = new TestableApiController(); controller.SetCurrentUser(new User()); controller.MockPackageService.Setup(x => x.FindPackageRegistrationById("theId")).Returns(packageRegistration); controller.SetupPackageFromInputStream(nuGetPackage); // Act var result = await controller.CreatePackagePut(); // Assert ResultAssert.IsStatusCode( result, HttpStatusCode.Conflict, String.Format(Strings.PackageExistsAndCannotBeModified, "theId", "1.0.42")); }
public void VerifyPackageKeyReturns404IfPackageDoesNotExist() { // Arrange var user = new User { EmailAddress = "*****@*****.**" }; GetMock <IPackageService>() .Setup(s => s.FindPackageByIdAndVersion("foo", "1.0.0", true)) .ReturnsNull(); var controller = GetController <ApiController>(); controller.SetCurrentUser(user); // Act var result = controller.VerifyPackageKey("foo", "1.0.0"); // Assert ResultAssert.IsStatusCode( result, HttpStatusCode.NotFound, "A package with id 'foo' and version '1.0.0' does not exist."); }
public async Task WillReturnConflictIfAPackageWithTheIdExistsBelongingToAnotherUser() { // Arrange var user = new User { EmailAddress = "*****@*****.**" }; var packageId = "theId"; var packageRegistration = new PackageRegistration(); packageRegistration.Id = packageId; var package = new Package(); package.PackageRegistration = packageRegistration; package.Version = "1.0.42"; packageRegistration.Packages.Add(package); var controller = new TestableApiController(); controller.SetCurrentUser(user); controller.MockPackageService.Setup(p => p.FindPackageRegistrationById(It.IsAny <string>())) .Returns(packageRegistration); var nuGetPackage = TestPackage.CreateTestPackageStream(packageId, "1.0.42"); controller.SetCurrentUser(new User()); controller.SetupPackageFromInputStream(nuGetPackage); // Act var result = await controller.CreatePackagePut(); // Assert ResultAssert.IsStatusCode( result, HttpStatusCode.Conflict, String.Format(Strings.PackageIdNotAvailable, packageId)); }