Exemplo n.º 1
0
        public IModel Load(PropertyBag modelData)
        {
            try
            {
                var model = new Model(
                    modelData["name"] as string,
                    SemVer.Parse(modelData["version"] as string),
                    new ModelFactories(_valueTypeFactory, _validatorFactory, _entityFactory))
                {
                    PropertyBag = modelData
                };
                model.EntitiesBySingleName = (modelData["entities"] as PropertyBag[])
                                             .Safe()
                                             .ToImmutableDictionary(x => x["singlename"] as string, x => MapEntityDefinition(model, x),
                                                                    StringComparer.OrdinalIgnoreCase);
                model.EntitiesByPluralName = model.EntitiesBySingleName.Values.ToImmutableDictionary(x => x.PluralName);

                model.ModelLoaded();

                return(model);
            }
            catch (Exception ex) when(!(ex is ModelLoadingException))
            {
                throw new ModelLoadingException($"There has been an error while loading the model {modelData["name"]}", ex);
            }
        }
        public static void ParseMajorMinorPatchOnly()
        {
            var info     = new SemVer("1.0.0");
            var expected = new SemVer(1, 0, 0);

            Assert.AreEqual(info, expected);
        }
Exemplo n.º 3
0
        public async Task <KvpConfig> GetLatestConfigSetting(string name)
        {
            var kvpDictionary = await this.StateManager.GetOrAddAsync <IReliableDictionary <ConfigKey, KvpConfig> >(KvpDictionaryName);

            KvpConfig config = null;

            using (var tx = this.StateManager.CreateTransaction())
            {
                var asyncEnumerable = await kvpDictionary.CreateEnumerableAsync(tx);

                var    kvps            = asyncEnumerable.GetAsyncEnumerator();
                SemVer greatestRelease = null;
                while (await kvps.MoveNextAsync(new CancellationToken()))
                {
                    var kvp = kvps.Current;
                    if (kvp.Key.Name != name)
                    {
                        continue;
                    }
                    if (greatestRelease == null)
                    {
                        greatestRelease = new SemVer(kvp.Key.Version);
                    }
                    var version = new SemVer(kvp.Key.Version);
                    if (greatestRelease < version)
                    {
                        greatestRelease = version;
                        config          = (KvpConfig)kvp.Value;
                    }
                }
            }
            return(config);
        }
Exemplo n.º 4
0
        public void BailsOnInvalidSemVers(string version)
        {
            var ex = Assert.Throws <ArgumentException>(() => SemVer.FromString(version));

            Assert.Equal("versionString", ex.ParamName);
            Assert.Contains($"Malformed version part: {version}", ex.Message);
        }
Exemplo n.º 5
0
 public void BuildTest(SemVer semVer)
 {
     foreach (var identifier in semVer.Build.Split('.'))
     {
         Assert.That(identifier, Is.Empty.Or.Match("[0-9A-Za-z-]"));
     }
 }
        static void ParseBuildType(string input, SemVer expected)
        {
            SemVer info;

            Assert.IsTrue(SemVer.TryGetVersionInfo(input, out info));
            Assert.AreEqual(expected, info, "input: " + input);
        }
        private string GetLatestVersionInCache(bool ignorePrerelease)
        {
            FileSystemProxy.CreateDirectory(PaketCacheDir);
            var zero = new SemVer();

            return(FileSystemProxy.GetDirectories(PaketCacheDir)
                   .Select(Path.GetFileName)
                   .OrderByDescending(x =>
            {
                try
                {
                    var version = SemVer.Create(x);

                    if (ignorePrerelease && version.PreRelease != null)
                    {
                        return zero;
                    }
                    else
                    {
                        return version;
                    }
                }
                catch (Exception)
                {
                    return zero;
                }
            })
                   .FirstOrDefault() ?? "0");
        }
Exemplo n.º 8
0
        public void TryParse_ToString_BestGuess(string str, string guess)
        {
            var success = SemVer.TryParse(str, out var version);

            Assert.False(success);
            Assert.Equal(guess, version.ToString());
        }
Exemplo n.º 9
0
        /// <summary>
        /// Selects a common protocol version that both server and client support.
        /// </summary>
        /// <param name="ClientVersions">List of versions that the client supports. The list is ordered by client's preference.</param>
        /// <param name="SelectedCommonVersion">If the function succeeds, this is set to the selected version that both client and server support.</param>
        /// <returns>true if the function succeeds, false otherwise.</returns>
        public bool GetCommonSupportedVersion(IEnumerable <ByteString> ClientVersions, out SemVer SelectedCommonVersion)
        {
            log.Trace("()");
            SelectedCommonVersion = SemVer.Invalid;

            SemVer selectedVersion = SemVer.Invalid;
            bool   res             = false;

            foreach (ByteString clVersion in ClientVersions)
            {
                SemVer version = new SemVer(clVersion);
                if (version.Equals(SemVer.V100))
                {
                    SelectedCommonVersion = version;
                    selectedVersion       = version;
                    res = true;
                    break;
                }
            }

            if (res)
            {
                log.Trace("(-):{0},SelectedCommonVersion='{1}'", res, selectedVersion);
            }
            else
            {
                log.Trace("(-):{0}", res);
            }
            return(res);
        }
Exemplo n.º 10
0
        /// <summary>
        /// Creates a new identity client.
        /// </summary>
        /// <param name="Name">Identity name.</param>
        /// <param name="Type">Identity type.</param>
        /// <param name="Location">Initial GPS location.</param>
        /// <param name="ImageMask">File name mask in the images folder that define which images can be randomly selected for profile image.</param>
        /// <param name="ImageChance">An integer between 0 and 100 that specifies the chance of each instance to have a profile image set.</param>
        public IdentityClient(string Name, string Type, GpsLocation Location, string ImageMask, int ImageChance)
        {
            log = new Logger("NetworkSimulator.IdentityClient", "[" + Name + "] ");
            log.Trace("(Name:'{0}',Type:'{1}',Location:{2},ImageMask:'{3}',ImageChance:{4})", Name, Type, Location, ImageMask, ImageChance);

            name      = Name;
            type      = Type;
            location  = Location;
            extraData = null;

            bool hasImage = Helpers.Rng.NextDouble() < (double)ImageChance / 100;

            if (hasImage)
            {
                imageFileName = GetImageFileByMask(ImageMask);
                profileImage  = imageFileName != null?File.ReadAllBytes(imageFileName) : null;
            }

            version        = SemVer.V100;
            keys           = Ed25519.GenerateKeys();
            identityId     = Crypto.Sha256(keys.PublicKey);
            messageBuilder = new PsMessageBuilder(0, new List <SemVer>()
            {
                SemVer.V100
            }, keys);

            profileInitialized = false;
            hostingActive      = false;

            log.Trace("(-)");
        }
Exemplo n.º 11
0
        /// <summary>
        /// Starts conversation with the server the client is connected to and checks whether the server response contains expected values.
        /// </summary>
        /// <returns>true if the function succeeds, false otherwise.</returns>
        public async Task <bool> StartConversationAsync()
        {
            log.Trace("()");

            PsProtocolMessage requestMessage = CreateStartConversationRequest();

            await SendMessageAsync(requestMessage);

            PsProtocolMessage responseMessage = await ReceiveMessageAsync();

            bool idOk              = responseMessage.Id == requestMessage.Id;
            bool statusOk          = responseMessage.Response.Status == Status.Ok;
            bool challengeVerifyOk = VerifyProfileServerChallengeSignature(responseMessage);

            SemVer receivedVersion = new SemVer(responseMessage.Response.ConversationResponse.Start.Version);
            bool   versionOk       = receivedVersion.Equals(new SemVer(messageBuilder.Version));

            bool pubKeyLenOk = responseMessage.Response.ConversationResponse.Start.PublicKey.Length == 32;
            bool challengeOk = responseMessage.Response.ConversationResponse.Start.Challenge.Length == 32;

            profileServerKey = responseMessage.Response.ConversationResponse.Start.PublicKey.ToByteArray();
            challenge        = responseMessage.Response.ConversationResponse.Start.Challenge.ToByteArray();

            bool res = idOk && statusOk && challengeVerifyOk && versionOk && pubKeyLenOk && challengeOk;

            log.Trace("(-):{0}", res);
            return(res);
        }
Exemplo n.º 12
0
        public void IsEqualTo()
        {
            var ver = new SemVer("3.3.0");

            Assert.IsFalse(ver == "3.2.1");
            Assert.IsTrue(ver == "3.3.0");
        }
Exemplo n.º 13
0
        public void CanParseValidSemVers(
            string version,
            int expectedMajor,
            int expectedMinor,
            int expectedPatch,
            string expectedPreReleaseBuildInfo,
            string expectedBuildMeta,
            bool isValid
            )
        {
            if (!isValid)
            {
                var ex = Record.Exception(() => SemVer.FromString(version));
                Assert.IsAssignableFrom <ArgumentException>(ex);

                return;
            }

            var semver = SemVer.FromString(version);

            Assert.Equal(expectedMajor, semver.Major);
            Assert.Equal(expectedMinor, semver.Minor);
            Assert.Equal(expectedPatch, semver.Patch);
            Assert.Equal(expectedPreReleaseBuildInfo, semver.PreRelease);
            Assert.Equal(expectedBuildMeta, semver.BuildMeta);

            if (!string.IsNullOrWhiteSpace(semver.PreRelease))
            {
                Assert.True(semver.IsPreRelease);
            }
        }
Exemplo n.º 14
0
        public void IsLessThan()
        {
            var ver = new SemVer("3.2.1");

            Assert.IsFalse(ver < "3.0.0");
            Assert.IsTrue(ver < "3.3.0");
        }
Exemplo n.º 15
0
        public void IsGreaterThan()
        {
            var ver = new SemVer("3.3.0");

            Assert.IsTrue(ver > "3.2.1");
            Assert.IsFalse(ver > "3.3.0");
        }
Exemplo n.º 16
0
        public void BailsOnInvalidSemVers(string version)
        {
            var ex = Assert.Throws <ArgumentException>(() => SemVer.FromString(version));

            Assert.Equal(ex.ParamName, "versionString");
            Assert.Equal(ex.Message, $"Malformed version part: {version}{Environment.NewLine}Parameter name: versionString");
        }
Exemplo n.º 17
0
        private string GetLatestVersionInCache(bool ignorePrerelease)
        {
            DirectoryProxy.CreateDirectory(_paketCacheDir);
            var zero = new SemVer();

            return DirectoryProxy.GetDirectories(_paketCacheDir)
                .Select(Path.GetFileName)
                .OrderByDescending(x =>
                {
                    try
                    {
                        var version = SemVer.Create(x);

                        if (ignorePrerelease && version.PreRelease != null)
                            return zero;
                        else
                            return version;
                    }
                    catch (Exception)
                    {
                        return zero;
                    }
                })
                .FirstOrDefault() ?? "0";
        }
Exemplo n.º 18
0
        public void Compare_And_CompareTo()
        {
            for (var i = 0; i < Versions.Length - 1; i++)
            {
                var a = Versions[i];

                Assert.Equal(a, a);
                if (a != null)
                {
                    Assert.Equal(a, SemVer.Parse(a.ToString()));
                }

                Assert.False(a < null);
                Assert.False(a > null);
                Assert.False(a <= null);
                Assert.False(a >= null);

                for (var j = i + 1; j < Versions.Length; j++)
                {
                    var b = Versions[j];

                    Assert.NotEqual(a, b);

                    Assert.True(SemVer.Compare(a, b) < 0, $"{ a } is not smaller than { b }");
                    if (a != null)
                    {
                        Assert.True(a.CompareTo(b) < 0);
                    }
                }
            }

            Assert.Equal(Versions, Versions.OrderBy(x => x, Comparer <SemVer> .Default));
        }
Exemplo n.º 19
0
        public void IsLessThanOrEqualTo()
        {
            var ver = new SemVer("3.3.0");

            Assert.IsFalse(ver <= "3.2.1");
            Assert.IsTrue(ver <= "3.3.0");
            Assert.IsTrue(ver <= "3.4.0");
        }
Exemplo n.º 20
0
        public void CompareTo(int majorA, int minorA, int patchA, ReleaseFlag releaseFlagA, int majorB, int minorB, int patchB, ReleaseFlag releaseFlagB, int expected)
        {
            SemVer semVerA = new SemVer(majorA, minorA, patchA, releaseFlagA);

            SemVer semVerB = new SemVer(majorB, minorB, patchB, releaseFlagB);

            Assert.AreEqual(expected, semVerA.CompareTo(semVerB));
        }
Exemplo n.º 21
0
        public void Should_Return_Matching_String(int major, int minor, int patch, string label, string version)
        {
            var semver = new SemVer {
                Major = major, Minor = minor, Patch = patch, Label = label
            };

            Assert.Equal(version, semver.ToString());
        }
Exemplo n.º 22
0
        public void CanBumpAndSerializeStringVersion(string version, VersionBump bump, string expectedVersion)
        {
            var semver = SemVer.FromString(version);

            semver.Bump(bump);

            Assert.Equal(semver.ToVersionString(), expectedVersion);
        }
Exemplo n.º 23
0
 public ModelMock(IEnumerable <IEntityDefinition> entityDefinitions = null, IModelFactories factories = null)
 {
     Name    = "TestModel";
     Version = new SemVer(1, 0, 0);
     EntitiesBySingleName = entityDefinitions.Safe().ToImmutableDictionary(x => x.SingleName);
     EntitiesByPluralName = entityDefinitions.Safe().ToImmutableDictionary(x => x.PluralName);
     Factories            = factories ?? new ModelFactoriesMock();
 }
Exemplo n.º 24
0
        [InlineData("4.1.3.6.7.8.9", 4, 1, 3)] // too many version numbers
        public void CanParseValidSemVers(string version, int expectedMajor, int expectedMinor, int expectedPatch)
        {
            var semver = SemVer.FromString(version);

            Assert.Equal(expectedMajor, semver.Major);
            Assert.Equal(expectedMinor, semver.Minor);
            Assert.Equal(expectedPatch, semver.Patch);
        }
Exemplo n.º 25
0
        public void GetSuitVersionTest21HighestNoVersion()
        {
            var semVer = new SemVer()
            {
                ExistVersion = setVersion.ToList(), AllowedVersion = "2.2.0-alpha"
            };

            Assert.Throws <InvalidOperationException>(() => semVer.GetSuitVersion(true, VersionSelectMethod.Highest));
        }
Exemplo n.º 26
0
        public void CanParseSemverString(string input, int major, int minor, int patch, string suffix)
        {
            var result = SemVer.Parse(input);

            Assert.Equal(result.Major, major);
            Assert.Equal(result.Minor, minor);
            Assert.Equal(result.Patch, patch);
            Assert.Equal(result.Suffix, suffix);
        }
Exemplo n.º 27
0
        public void GetSuitVersionTest33LowestNoVersion()
        {
            var semVer = new SemVer()
            {
                ExistVersion = setVersion.ToList(), AllowedVersion = "[,1.0.0)"
            };

            Assert.Throws <InvalidOperationException>(() => semVer.GetSuitVersion(true, VersionSelectMethod.Lowest));
        }
Exemplo n.º 28
0
        public void GetSuitVersionTest31LowestLessPreRelease()
        {
            var semVer = new SemVer()
            {
                ExistVersion = setVersion.ToList(), AllowedVersion = "[,2.2.0-alpha)"
            };

            Assert.That(semVer.GetSuitVersion(false, VersionSelectMethod.Lowest), Is.EqualTo("1.0.0-alpha"));
        }
Exemplo n.º 29
0
        public void GetSuitVersionTest29LowestLessEqual()
        {
            var semVer = new SemVer()
            {
                ExistVersion = setVersion.ToList(), AllowedVersion = "[,2.2.0-alpha]"
            };

            Assert.That(semVer.GetSuitVersion(true, VersionSelectMethod.Lowest), Is.EqualTo("1.0.0"));
        }
Exemplo n.º 30
0
        public void GetSuitVersionTest28LowestGraterPreRelease()
        {
            var semVer = new SemVer()
            {
                ExistVersion = setVersion.ToList(), AllowedVersion = "(1.0.0-beta,]"
            };

            Assert.That(semVer.GetSuitVersion(false, VersionSelectMethod.Lowest), Is.EqualTo("1.0.0-beta.2"));
        }
Exemplo n.º 31
0
        public void GetSuitVersionTest24LowestGraterEqual()
        {
            var semVer = new SemVer()
            {
                ExistVersion = setVersion.ToList(), AllowedVersion = "2.0.0"
            };

            Assert.That(semVer.GetSuitVersion(true, VersionSelectMethod.Lowest), Is.EqualTo("2.0.0"));
        }
Exemplo n.º 32
0
 public bool IsOlderThan(SemVer semVer)
 {
     if (semVer.Major > Major)
         return true;
     if (semVer.Major == Major && semVer.Minor > Minor)
         return true;
     if (semVer.Major == Major && semVer.Minor == Minor && semVer.Patch > Patch)
         return true;
     return false;
 }