public void WillListThePackageIfUserIsAnOwner()
            {
                // Arrange
                var owner = new User {
                    Key = 1
                };
                var package = new Package
                {
                    PackageRegistration = new PackageRegistration {
                        Owners = new[] { new User(), owner }
                    }
                };

                var controller = new TestableApiController();

                controller.MockPackageService.Setup(x => x.FindPackageByIdAndVersion(It.IsAny <string>(), It.IsAny <string>(), true)).Returns(package);
                controller.SetCurrentUser(owner);

                // Act
                var result = controller.PublishPackage("theId", "1.0.42");

                // Assert
                ResultAssert.IsEmpty(result);
                controller.MockPackageService.Verify(x => x.MarkPackageListed(package, It.IsAny <bool>()));
                controller.MockIndexingService.Verify(i => i.UpdatePackage(package));
            }
            public void VerifyPackageKeyReturnsEmptyResultIfApiKeyExistsButIdAndVersionAreEmpty()
            {
                // Arrange
                var controller = new TestableApiController();

                controller.SetCurrentUser(new User());

                // Act
                var result = controller.VerifyPackageKey(null, null);

                // Assert
                ResultAssert.IsEmpty(result);
            }
            public void VerifyPackageKeyReturns200IfUserIsAnOwner()
            {
                // Arrange
                var user    = new User();
                var package = new Package {
                    PackageRegistration = new PackageRegistration()
                };

                package.PackageRegistration.Owners.Add(user);
                var controller = new TestableApiController();

                controller.SetCurrentUser(user);
                controller.MockPackageService.Setup(s => s.FindPackageByIdAndVersion("foo", "1.0.0", true)).Returns(package);

                // Act
                var result = controller.VerifyPackageKey("foo", "1.0.0");

                // Assert
                ResultAssert.IsEmpty(result);
            }
            public void WillUnlistThePackageIfApiKeyBelongsToAnOwner()
            {
                var owner = new User {
                    Key = 1
                };
                var package = new Package
                {
                    PackageRegistration = new PackageRegistration {
                        Owners = new[] { new User(), owner }
                    }
                };
                var controller = new TestableApiController();

                controller.MockPackageService.Setup(x => x.FindPackageByIdAndVersion(It.IsAny <string>(), It.IsAny <string>(), true)).Returns(package);
                controller.SetCurrentUser(owner);

                ResultAssert.IsEmpty(controller.DeletePackage("theId", "1.0.42"));

                controller.MockPackageService.Verify(x => x.MarkPackageUnlisted(package, true));
                controller.MockIndexingService.Verify(i => i.UpdatePackage(package));
            }