public async Task ReturnsSuccessful( User currentUser, User owner, bool isVulnerable, bool isLegacy, bool isOther, PackageDeprecationStatus expectedStatus, ReturnsSuccessful_AlternatePackage_State alternatePackageState, bool hasAdditionalData) { // Arrange var id = "id"; var featureFlagService = GetMock <IFeatureFlagService>(); featureFlagService .Setup(x => x.IsManageDeprecationEnabled(currentUser)) .Returns(true) .Verifiable(); var registration = new PackageRegistration { Id = id }; registration.Owners.Add(owner); var package = new Package { NormalizedVersion = "2.3.4", PackageRegistration = registration }; var package2 = new Package { NormalizedVersion = "1.0.0", PackageRegistration = registration }; var unselectedPackage = new Package { NormalizedVersion = "1.3.2", PackageRegistration = registration }; var packageService = GetMock <IPackageService>(); packageService .Setup(x => x.FindPackagesById(id, PackageDeprecationFieldsToInclude.DeprecationAndRelationships)) .Returns(new[] { package, package2, unselectedPackage }) .Verifiable(); var alternatePackageId = alternatePackageState != ReturnsSuccessful_AlternatePackage_State.None ? "altId" : null; var alternatePackageVersion = alternatePackageState == ReturnsSuccessful_AlternatePackage_State.Package ? "1.2.3-alt" : null; var alternatePackageRegistration = new PackageRegistration { Id = alternatePackageId }; var alternatePackage = new Package { NormalizedVersion = alternatePackageVersion, PackageRegistration = alternatePackageRegistration }; if (alternatePackageState == ReturnsSuccessful_AlternatePackage_State.Registration) { packageService .Setup(x => x.FindPackageRegistrationById(alternatePackageId)) .Returns(alternatePackageRegistration) .Verifiable(); } else if (alternatePackageState == ReturnsSuccessful_AlternatePackage_State.Package) { packageService .Setup(x => x.FindPackageByIdAndVersionStrict(alternatePackageId, alternatePackageVersion)) .Returns(alternatePackage) .Verifiable(); } var deprecationService = GetMock <IPackageDeprecationService>(); var cveIds = hasAdditionalData ? new[] { "CVE-2019-1111", "CVE-2019-22222", "CVE-2019-333333" } : null; var cves = cveIds?.Select(i => new Cve { CveId = i }).ToArray() ?? new Cve[0]; deprecationService .Setup(x => x.GetOrCreateCvesByIdAsync(cveIds ?? Enumerable.Empty <string>(), false)) .CompletesWith(cves) .Verifiable(); var cvss = hasAdditionalData ? (decimal?)5.5 : null; var cweIds = hasAdditionalData ? new[] { "CWE-1", "CWE-2", "CWE-3" } : null; var cwes = cweIds?.Select(i => new Cwe { CweId = i }).ToArray() ?? new Cwe[0]; deprecationService .Setup(x => x.GetCwesById(cweIds ?? Enumerable.Empty <string>())) .Returns(cwes) .Verifiable(); var customMessage = hasAdditionalData ? "message" : null; deprecationService .Setup(x => x.UpdateDeprecation( new[] { package, package2 }, expectedStatus, cves, cvss, cwes, alternatePackageState == ReturnsSuccessful_AlternatePackage_State.Registration ? alternatePackageRegistration : null, alternatePackageState == ReturnsSuccessful_AlternatePackage_State.Package ? alternatePackage : null, customMessage)) .Completes() .Verifiable(); var controller = GetController <ManageDeprecationJsonApiController>(); controller.SetCurrentUser(currentUser); // Act var result = await controller.Deprecate( id, new[] { package.NormalizedVersion, package2.NormalizedVersion }, isVulnerable, isLegacy, isOther, cveIds, cvss, cweIds, alternatePackageId, alternatePackageVersion, customMessage); // Assert AssertSuccessResponse(controller); featureFlagService.Verify(); packageService.Verify(); deprecationService.Verify(); }
private async Task AssertSuccessful( User currentUser, User owner, bool isLegacy, bool hasCriticalBugs, bool isOther, PackageDeprecationStatus expectedStatus, ReturnsSuccessful_AlternatePackage_State alternatePackageState, bool hasCustomMessage) { // Arrange var id = "id"; var registration = new PackageRegistration { Id = id }; var featureFlagService = GetMock <IFeatureFlagService>(); featureFlagService .Setup(x => x.IsManageDeprecationEnabled(currentUser, registration)) .Returns(true) .Verifiable(); registration.Owners.Add(owner); var package = new Package { NormalizedVersion = "2.3.4", PackageRegistration = registration }; var package2 = new Package { NormalizedVersion = "1.0.0", PackageRegistration = registration }; var unselectedPackage = new Package { NormalizedVersion = "1.3.2", PackageRegistration = registration }; var packageService = GetMock <IPackageService>(); packageService .Setup(x => x.FindPackagesById(id, PackageDeprecationFieldsToInclude.DeprecationAndRelationships)) .Returns(new[] { package, package2, unselectedPackage }) .Verifiable(); var alternatePackageId = alternatePackageState != ReturnsSuccessful_AlternatePackage_State.None ? "altId" : null; var alternatePackageVersion = alternatePackageState == ReturnsSuccessful_AlternatePackage_State.Package ? "1.2.3-alt" : null; var alternatePackageRegistration = new PackageRegistration { Id = alternatePackageId }; var alternatePackage = new Package { NormalizedVersion = alternatePackageVersion, PackageRegistration = alternatePackageRegistration }; if (alternatePackageState == ReturnsSuccessful_AlternatePackage_State.Registration) { packageService .Setup(x => x.FindPackageRegistrationById(alternatePackageId)) .Returns(alternatePackageRegistration) .Verifiable(); } else if (alternatePackageState == ReturnsSuccessful_AlternatePackage_State.Package) { packageService .Setup(x => x.FindPackageByIdAndVersionStrict(alternatePackageId, alternatePackageVersion)) .Returns(alternatePackage) .Verifiable(); } var deprecationService = GetMock <IPackageDeprecationService>(); var customMessage = hasCustomMessage ? "<message>" : null; deprecationService .Setup(x => x.UpdateDeprecation( new[] { package, package2 }, expectedStatus, alternatePackageState == ReturnsSuccessful_AlternatePackage_State.Registration ? alternatePackageRegistration : null, alternatePackageState == ReturnsSuccessful_AlternatePackage_State.Package ? alternatePackage : null, customMessage, currentUser)) .Completes() .Verifiable(); var controller = GetController <ManageDeprecationJsonApiController>(); controller.SetCurrentUser(currentUser); var packageNormalizedVersions = new[] { package.NormalizedVersion, package2.NormalizedVersion }; // Act var result = await controller.Deprecate( CreateDeprecatePackageRequest( id, packageNormalizedVersions, isLegacy, hasCriticalBugs, isOther, alternatePackageId, alternatePackageVersion, customMessage)); // Assert AssertSuccessResponse(controller); featureFlagService.Verify(); packageService.Verify(); deprecationService.Verify(); }