예제 #1
0
        public void VersionSatisfies_NullInput()
        {
            // Arrange
            var target = GetToolsService();
            VersionSatisfiesInput input = null;

            // Act
            var output = target.VersionSatisfies(input);

            // Assert
            Assert.Same(input, output.Input);
            Assert.Equal(InputStatus.Missing, output.InputStatus);
            Assert.False(output.IsVersionRangeValid);
            Assert.False(output.IsVersionValid);
            Assert.Null(output.VersionRange);
            Assert.Null(output.Version);
            Assert.False(output.Satisfies);
        }
예제 #2
0
        public void VersionSatisfies_Satisfies()
        {
            // Arrange
            var target = GetToolsService();
            var input  = new VersionSatisfiesInput
            {
                VersionRange = "(, 1.0.0]",
                Version      = "1.0.0"
            };

            // Act
            var output = target.VersionSatisfies(input);

            // Assert
            Assert.Same(input, output.Input);
            Assert.Equal(InputStatus.Valid, output.InputStatus);
            Assert.True(output.IsVersionRangeValid);
            Assert.True(output.IsVersionValid);
            Assert.Equal(GetVersionRangeNormalizedString(input.VersionRange), output.VersionRange.NormalizedString);
            Assert.Equal(GetVersionNormalizedString(input.Version), output.Version.NormalizedString);
            Assert.True(output.Satisfies);
        }
예제 #3
0
        public void VersionSatisfies_MissingVersionRange()
        {
            // Arrange
            var target = GetToolsService();
            var input  = new VersionSatisfiesInput
            {
                VersionRange = null,
                Version      = "2.0"
            };

            // Act
            var output = target.VersionSatisfies(input);

            // Assert
            Assert.Same(input, output.Input);
            Assert.Equal(InputStatus.Missing, output.InputStatus);
            Assert.False(output.IsVersionRangeValid);
            Assert.True(output.IsVersionValid);
            Assert.Null(output.VersionRange);
            Assert.Equal(GetVersionNormalizedString(input.Version), output.Version.NormalizedString);
            Assert.False(output.Satisfies);
        }
예제 #4
0
        public void VersionSatisfies_InvalidVersionRangeAndVersion()
        {
            // Arrange
            var target = GetToolsService();
            var input  = new VersionSatisfiesInput
            {
                VersionRange = "a",
                Version      = "b"
            };

            // Act
            var output = target.VersionSatisfies(input);

            // Assert
            Assert.Same(input, output.Input);
            Assert.Equal(InputStatus.Invalid, output.InputStatus);
            Assert.False(output.IsVersionRangeValid);
            Assert.False(output.IsVersionValid);
            Assert.Null(output.VersionRange);
            Assert.Null(output.Version);
            Assert.False(output.Satisfies);
        }
예제 #5
0
        public async Task <IActionResult> VersionSatisfies([FromRoute] string nuGetVersion, [FromQuery] VersionSatisfiesInput input, CancellationToken token)
        {
            var redirect = GetVersionRedirect();

            if (redirect != null)
            {
                return(redirect);
            }

            var toolsService = await _toolsFactory.GetServiceAsync(nuGetVersion, token);

            if (toolsService == null)
            {
                return(NotFound());
            }

            var output          = toolsService.VersionSatisfies(input);
            var versionedOutput = await GetSelectedVersionOutputAsync(toolsService, output, token);

            return(View(versionedOutput));
        }
예제 #6
0
        public VersionSatisfiesOutput VersionSatisfies(VersionSatisfiesInput input)
        {
            var output = new VersionSatisfiesOutput
            {
                InputStatus = InputStatus.Missing,
                Input       = input,
            };

            if (input == null)
            {
                return(output);
            }

            var versionRangeMissing = string.IsNullOrWhiteSpace(input.VersionRange);
            var versionMissing      = string.IsNullOrWhiteSpace(input.Version);

            var versionRange = default(TVersionRange);

            if (!versionRangeMissing)
            {
                try
                {
                    versionRange               = _versionRangeLogic.Parse(input.VersionRange);
                    output.VersionRange        = versionRange;
                    output.IsVersionRangeValid = true;
                }
                catch
                {
                    output.IsVersionRangeValid = false;
                }
            }

            var version = default(TVersion);

            if (!versionMissing)
            {
                try
                {
                    version               = _versionLogic.Parse(input.Version);
                    output.Version        = version;
                    output.IsVersionValid = true;
                }
                catch
                {
                    output.IsVersionValid = false;
                }
            }

            if (!versionRangeMissing && !versionMissing)
            {
                if (output.IsVersionRangeValid && output.IsVersionValid)
                {
                    output.InputStatus = InputStatus.Valid;
                    output.Satisfies   = _versionRangeLogic.Satisfies(versionRange, version);
                }
                else
                {
                    output.InputStatus = InputStatus.Invalid;
                }
            }

            return(output);
        }