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());
            }
示例#3
0
            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);
            }
示例#4
0
            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.");
            }
示例#10
0
            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));
            }