public async Task CanDownloadPackage()
        {
            string filename  = "Acme.Core.1.0.0.0-bugfix.zip";
            string packageId = $"{bucketName}/Acme.Core";
            var    version   = VersionFactory.CreateVersion("1.0.0.0-bugfix", VersionFormat.Semver);

            File.Copy(GetFixtureResource("Samples", filename), Path.Combine(rootDir, filename));

            await Validate(async client => await client.PutObjectAsync(new PutObjectRequest
            {
                BucketName  = bucketName,
                Key         = filename,
                InputStream = File.OpenRead(Path.Combine(rootDir, filename))
            },
                                                                       CancellationToken.None));

            var downloader = GetDownloader();
            var package    = downloader.DownloadPackage(packageId,
                                                        version,
                                                        "s3-feed",
                                                        new Uri("http://please-ignore.com"),
                                                        ExternalVariables.Get(ExternalVariable.AwsAcessKey),
                                                        ExternalVariables.Get(ExternalVariable.AwsSecretKey),
                                                        true,
                                                        3,
                                                        TimeSpan.FromSeconds(3));

            package.PackageId.Should().Be(packageId);
            package.Size.Should().Be(new FileInfo(Path.Combine(rootDir, filename)).Length);
        }
        public void CreateVersion_can_create_an_empty_version_from_a_null_string(VersionFactory sut)
        {
            // Act
            var result = sut.CreateVersion(null);

            // Assert
            Assert.That(result, Is.EqualTo(EmptyBrowserVersion.Singleton));
        }
예제 #3
0
        public void CreateVersion_ForInvalidVersion_ReturnNone()
        {
            var versionString = "invalid";

            var version = VersionFactory.CreateVersion(versionString);

            version.IsNone.ShouldBeTrue();
        }
예제 #4
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            var jsonObject    = JObject.Load(reader);
            var versionString = jsonObject["Version"].Value <string>();
            var versionFormat = (VersionFormat)Enum.Parse(typeof(VersionFormat), jsonObject["Format"].Value <string>());

            var version = VersionFactory.CreateVersion(versionString, versionFormat);

            return(version);
        }
        public void CreateVersion_does_not_create_presumed_version_when_input_version_is_not_null_or_empty(VersionFactory sut,
                                                                                                           string versionstring,
                                                                                                           string presumedVersion)
        {
            // Act
            var result = sut.CreateVersion(versionstring, requestedVersionString: presumedVersion);

            // Assert
            Assert.That(result.IsPresumedVersion, Is.False);
        }
        public void CreateVersion_marks_a_presumed_version_from_a_null_input_version_accordingly(VersionFactory sut)
        {
            // Arrange
            var presumedVersion = "v1.2.3";

            // Act
            var result = sut.CreateVersion(null, requestedVersionString: presumedVersion);

            // Assert
            Assert.That(result.IsPresumedVersion, Is.True);
        }
        public void CreateVersion_can_create_a_presumed_version_from_an_empty_input_version(VersionFactory sut)
        {
            // Arrange
            var presumedVersion = "v1.2.3";

            // Act
            var result = sut.CreateVersion(String.Empty, requestedVersionString: presumedVersion);

            // Assert
            Assert.That(result, Is.EqualTo(SemanticVersion.Parse(presumedVersion)));
        }
        public void CreateVersion_can_create_an_unrecognised_version(VersionFactory sut)
        {
            // Arrange
            var versionString = "version 55.20";

            // Act
            var result = sut.CreateVersion(versionString);

            // Assert
            Assert.That(result, Is.EqualTo(new UnrecognisedVersion(versionString)));
        }
        public void CreateVersion_can_create_a_semantic_version(VersionFactory sut)
        {
            // Arrange
            var versionString = "v1.2.3";

            // Act
            var result = sut.CreateVersion(versionString);

            // Assert
            Assert.That(result, Is.EqualTo(SemanticVersion.Parse(versionString)));
        }
예제 #10
0
        public void CreateVersion_ForValidVersionWithLabel_ReturnVersionWithLabel()
        {
            var versionString = "1.2.3-pre12";

            var version = VersionFactory.CreateVersion(versionString).ValueUnsafe();

            version.Major.ShouldBe(1);
            version.Minor.ShouldBe(2);
            version.Patch.ShouldBe(3);
            version.Label.ShouldBe("-pre12");
        }
예제 #11
0
        public void CreateVersion_can_create_versions_for_all_supported_browsers(string browserName, string browserVersion)
        {
            // Arrange
            var sut = new VersionFactory();

            // Act
            var result = sut.CreateVersion(browserVersion, browserName);

            // Assert
            Assert.That(result,
                        Is.Not.InstanceOf <UnrecognisedVersion>(),
                        $"{nameof(VersionFactory)} created an unrecognised version for {browserName}: '{browserVersion}'.");
        }
예제 #12
0
        public FoundPackage(string packageId, string version, string?versionFormat, string?remotePath, string?hash, string?fileExtension)
        {
            PackageId = packageId;

            if (!Enum.TryParse(versionFormat, out VersionFormat realVersionFormat))
            {
                realVersionFormat = VersionFormat.Semver;
            }
            ;

            Version = VersionFactory.CreateVersion(version, realVersionFormat);

            RemotePath    = remotePath;
            Hash          = hash;
            FileExtension = fileExtension;
        }
예제 #13
0
 private void CreateVersionData()
 {
     CurrentContext.GetInstance().VersionData = VersionFactory.CreateVersion();
 }
예제 #14
0
        public void ShouldFindTheCorrectPackageWhenSimilarPackageExist()
        {
            using (var acmeWeb = new TemporaryFile(PackageBuilder.BuildSamplePackage(packageId, packageVersion)))
                using (var acmeWebTest = new TemporaryFile(PackageBuilder.BuildSamplePackage(packageId + ".Tests", packageVersion)))
                {
                    var destinationFilePath = Path.Combine(downloadPath, PackageName.ToCachedFileName(packageId, VersionFactory.CreateVersion(packageVersion, VersionFormat.Semver), ".nupkg"));
                    File.Copy(acmeWeb.FilePath, destinationFilePath);

                    var destinationFilePathTest = Path.Combine(downloadPath, PackageName.ToCachedFileName(packageId + ".Tests", VersionFactory.CreateVersion(packageVersion, VersionFormat.Semver), ".nupkg"));
                    File.Copy(acmeWebTest.FilePath, destinationFilePathTest);

                    using (var newAcmeWeb =
                               new TemporaryFile(PackageBuilder.BuildSamplePackage(packageId, newpackageVersion)))
                    {
                        var result = FindPackages(packageId, newpackageVersion, newAcmeWeb.Hash);

                        result.AssertSuccess();
                        result.AssertOutput("Package {0} version {1} hash {2} has not been uploaded.", packageId,
                                            newpackageVersion,
                                            newAcmeWeb.Hash);
                        result.AssertOutput("Finding earlier packages that have been uploaded to this Tentacle");
                        result.AssertOutput("Found 1 earlier version of {0} on this Tentacle", packageId);
                        result.AssertOutput("  - {0}: {1}", packageVersion, destinationFilePath);

                        result.AssertServiceMessage(ServiceMessageNames.FoundPackage.Name, Is.True);
                        var foundPackage = result.CapturedOutput.FoundPackage;
                        Assert.AreEqual(VersionFactory.CreateSemanticVersion(packageVersion), foundPackage.Version);
                        Assert.AreEqual(acmeWeb.Hash, foundPackage.Hash);
                        Assert.AreEqual(destinationFilePath, foundPackage.RemotePath);
                        Assert.AreEqual(".nupkg", foundPackage.FileExtension);
                        Assert.AreEqual(packageId, foundPackage.PackageId);
                    }
                }
        }