public void CanConvertJsonPayloadToFlavor()
        {
            var flavorName      = "m1.tiny";
            var flavorId        = "1";
            var flavorPublicUri = "http://www.server.com/v2/flavors/1";
            var flavorPermUri   = "http://www.server.com/flavors/1";
            var flavorRam       = "512";
            var flavorDisk      = "10";
            var flavorVcpus     = "2";

            var computeFlavorJsonResponseFixture = CreateFlavorJsonFixtrue(flavorName, flavorId, flavorRam, flavorDisk,
                                                                           flavorVcpus, flavorPermUri, flavorPublicUri);

            var converter = new ComputeFlavorPayloadConverter();
            var flavor    = converter.ConvertFlavor(computeFlavorJsonResponseFixture);

            Assert.IsNotNull(flavor);
            Assert.AreEqual(flavorName, flavor.Name);
            Assert.AreEqual(flavorId, flavor.Id);
            Assert.AreEqual(flavorRam, flavor.Ram);
            Assert.AreEqual(flavorVcpus, flavor.Vcpus);
            Assert.AreEqual(flavorDisk, flavor.Disk);
            Assert.AreEqual(new Uri(flavorPermUri), flavor.PermanentUri);
            Assert.AreEqual(new Uri(flavorPublicUri), flavor.PublicUri);
        }
        public void CannotConvertJsonPayloadMissingNameToFlavor()
        {
            var missingTokenFixture = @"{
                                    ""flavor"": {
                                        ""name"" : ""m1.tiny"",
                                        ""links"": [
                                            {
                                                ""href"": ""http://someuri.com/v2/flavors/1"",
                                                ""rel"": ""self""
                                            },
                                            {
                                                ""href"": ""http://someuri.com/flavors/1"",
                                                ""rel"": ""bookmark""
                                            }
                                        ],
                                        ""ram"": 512,
                                        ""vcpus"": 2,
                                        ""disk"": 10
                                    }
                                }";

            var converter = new ComputeFlavorPayloadConverter();

            converter.ConvertFlavor(missingTokenFixture);
        }
        public void CanConvertJsonPayloadMissingDiskToFlavor()
        {
            var missingFixture = @"{
                                    ""flavor"": {
                                        ""name"": ""m1.tiny"",
                                        ""id"": ""1"",
                                        ""links"": [
                                            {
                                                ""href"": ""http://someuri.com/v2/flavors/1"",
                                                ""rel"": ""self""
                                            },
                                            {
                                                ""href"": ""http://someuri.com/flavors/1"",
                                                ""rel"": ""bookmark""
                                            }
                                        ],
                                        ""ram"": 512,
                                        ""vcpus"": 2
                                    }
                                }";

            var converter = new ComputeFlavorPayloadConverter();
            var flavor    = converter.ConvertFlavor(missingFixture);

            Assert.IsNotNull(flavor);
            Assert.AreEqual("m1.tiny", flavor.Name);
            Assert.AreEqual("1", flavor.Id);
            Assert.AreEqual("512", flavor.Ram);
            Assert.AreEqual("2", flavor.Vcpus);
            Assert.AreEqual(new Uri("http://someuri.com/flavors/1"), flavor.PermanentUri);
            Assert.AreEqual(new Uri("http://someuri.com/v2/flavors/1"), flavor.PublicUri);
        }
        public void CannotConvertNonObjectJsonToFlavor()
        {
            var nonObjectJson = @"[]";

            var converter = new ComputeFlavorPayloadConverter();

            converter.ConvertFlavor(nonObjectJson);
        }
        public void CannotConvertInvalidJsonToFlavor()
        {
            var badJsonFixture = @"{ NOT JSON";

            var converter = new ComputeFlavorPayloadConverter();

            converter.ConvertFlavor(badJsonFixture);
        }
        public void CannotConvertJsonPayloadEmptyObjectToFlavor()
        {
            var emptyObjectFixture = @"{ }";

            var converter = new ComputeFlavorPayloadConverter();

            converter.ConvertFlavor(emptyObjectFixture);
        }
        public void CanConvertJsonPayloadToFlavor()
        {
            var flavorName = "m1.tiny";
            var flavorId = "1";
            var flavorPublicUri = "http://www.server.com/v2/flavors/1";
            var flavorPermUri = "http://www.server.com/flavors/1";
            var flavorRam = "512";
            var flavorDisk = "10";
            var flavorVcpus = "2";

            var computeFlavorJsonResponseFixture = CreateFlavorJsonFixtrue(flavorName, flavorId, flavorRam, flavorDisk,
                flavorVcpus, flavorPermUri, flavorPublicUri);

            var converter = new ComputeFlavorPayloadConverter();
            var flavor = converter.ConvertFlavor(computeFlavorJsonResponseFixture);
            Assert.IsNotNull(flavor);
            Assert.AreEqual(flavorName, flavor.Name);
            Assert.AreEqual(flavorId, flavor.Id);
            Assert.AreEqual(flavorRam, flavor.Ram);
            Assert.AreEqual(flavorVcpus, flavor.Vcpus);
            Assert.AreEqual(flavorDisk, flavor.Disk);
            Assert.AreEqual(new Uri(flavorPermUri), flavor.PermanentUri);
            Assert.AreEqual(new Uri(flavorPublicUri), flavor.PublicUri);
        }
        public void CannotConvertNonObjectJsonToFlavor()
        {
            var nonObjectJson = @"[]";

            var converter = new ComputeFlavorPayloadConverter();
            converter.ConvertFlavor(nonObjectJson);
        }
        public void CannotConvertInvalidJsonToFlavor()
        {
            var badJsonFixture = @"{ NOT JSON";

            var converter = new ComputeFlavorPayloadConverter();
            converter.ConvertFlavor(badJsonFixture);
        }
        public void CannotConvertJsonPayloadEmptyObjectToFlavor()
        {
            var emptyObjectFixture = @"{ }";

            var converter = new ComputeFlavorPayloadConverter();
            converter.ConvertFlavor(emptyObjectFixture);
        }
        public void CannotConvertJsonPayloadMissingNameToFlavor()
        {
            var missingTokenFixture = @"{
                                    ""flavor"": {
                                        ""name"" : ""m1.tiny"",
                                        ""links"": [
                                            {
                                                ""href"": ""http://someuri.com/v2/flavors/1"",
                                                ""rel"": ""self""
                                            },
                                            {
                                                ""href"": ""http://someuri.com/flavors/1"",
                                                ""rel"": ""bookmark""
                                            }
                                        ],
                                        ""ram"": 512,
                                        ""vcpus"": 2,
                                        ""disk"": 10
                                    }
                                }";

            var converter = new ComputeFlavorPayloadConverter();
            converter.ConvertFlavor(missingTokenFixture);
        }
        public void CanConvertJsonPayloadMissingDiskToFlavor()
        {
            var missingFixture = @"{
                                    ""flavor"": {
                                        ""name"": ""m1.tiny"",
                                        ""id"": ""1"",
                                        ""links"": [
                                            {
                                                ""href"": ""http://someuri.com/v2/flavors/1"",
                                                ""rel"": ""self""
                                            },
                                            {
                                                ""href"": ""http://someuri.com/flavors/1"",
                                                ""rel"": ""bookmark""
                                            }
                                        ],
                                        ""ram"": 512,
                                        ""vcpus"": 2
                                    }
                                }";

            var converter = new ComputeFlavorPayloadConverter();
            var flavor = converter.ConvertFlavor(missingFixture);
            Assert.IsNotNull(flavor);
            Assert.AreEqual("m1.tiny", flavor.Name);
            Assert.AreEqual("1", flavor.Id);
            Assert.AreEqual("512", flavor.Ram);
            Assert.AreEqual("2", flavor.Vcpus);
            Assert.AreEqual(new Uri("http://someuri.com/flavors/1"), flavor.PermanentUri);
            Assert.AreEqual(new Uri("http://someuri.com/v2/flavors/1"), flavor.PublicUri);
        }