public void CannotConvertSummaryJsonPayloadMissingPermUriToServer()
        {
            var serverId        = "1";
            var serverPublicUri = "http://www.server.com/v2/servers/1";
            var serverAdminPass = "******";

            var computeServerSummaryJsonResponseFixture = @"{{
                ""server"": {{
                    ""security_groups"": [
                        {{
                            ""name"": ""default""
                        }},
                        {{
                            ""name"": ""MyGroup""
                        }}
                    ],
                    ""OS-DCF:diskConfig"": ""MANUAL"",
                    ""id"": ""{0}"",
                    ""links"": [
                        {{
                            ""href"": ""{1}"",
                            ""rel"": ""self""
                        }}
                    ],
                    ""adminPass"": ""{2}""
                }}
            }}";

            var missingFixture = string.Format(computeServerSummaryJsonResponseFixture, serverId, serverPublicUri, serverAdminPass);

            var converter = new ComputeServerPayloadConverter();

            converter.ConvertSummary(missingFixture);
        }
        public void CanParseValidServersJsonPayloadWithMultipleFlavors()
        {
            var validMultipleServersJsonFixture = @"{{ ""servers"": [ {0} ] }}";
            var firstServer = CreateServersSummaryJsonFixtrue("srv1", "1", "http://server.com/servers/1",
                                                              "http://server.com/v2/servers/1");
            var secondServer = CreateServersSummaryJsonFixtrue("srv2", "2", "http://server.com/servers/2",
                                                               "http://server.com/v2/servers/2");

            var validMultipleServersJson = string.Format(validMultipleServersJsonFixture,
                                                         string.Join(",", new List <string>()
            {
                firstServer, secondServer
            }));

            var converter = new ComputeServerPayloadConverter();
            var servers   = converter.ConvertServers(validMultipleServersJson).ToList();

            Assert.AreEqual(2, servers.Count());
            var srv1 =
                servers.First(o => string.Equals(o.Name, "srv1", StringComparison.InvariantCultureIgnoreCase));
            var srv2 =
                servers.First(o => string.Equals(o.Name, "srv2", StringComparison.InvariantCultureIgnoreCase));

            Assert.IsNotNull(srv1);
            Assert.IsNotNull(srv2);

            Assert.AreEqual("1", srv1.Id);
            Assert.AreEqual(new Uri("http://server.com/servers/1"), srv1.PermanentUri);
            Assert.AreEqual(new Uri("http://server.com/v2/servers/1"), srv1.PublicUri);

            Assert.AreEqual("2", srv2.Id);
            Assert.AreEqual(new Uri("http://server.com/servers/2"), srv2.PermanentUri);
            Assert.AreEqual(new Uri("http://server.com/v2/servers/2"), srv2.PublicUri);
        }
        public void CannotConvertJsonPayloadMissingNameToServer()
        {
            var serverPublicUri = "http://www.server.com/v2/servers/1";
            var serverPermUri   = "http://www.server.com/servers/1";
            var serverId        = "12345";
            var serverProgress  = 0;
            var serverState     = "ACTIVE";

            var payloadFixture = @"{{
                ""server"": {{
                    ""status"": ""{1}"",
                    ""updated"": ""2014-06-11T18:04:46Z"",
                    ""links"": [
                        {{
                            ""href"": ""{3}"",
                            ""rel"": ""self""
                        }},
                        {{
                            ""href"": ""{4}"",
                            ""rel"": ""bookmark""
                        }}
                    ],
                    ""id"": ""{0}"",
                    ""created"": ""2014-06-11T18:04:25Z"",
                    ""progress"": {2}
                }}
            }}";

            var missingFixture = string.Format(payloadFixture, serverId, serverState, serverProgress, serverPublicUri, serverPermUri);

            var converter = new ComputeServerPayloadConverter();

            converter.Convert(missingFixture);
        }
        public void CannotConvertNonObjectJsonToServer()
        {
            var nonObjectJson = @"[]";

            var converter = new ComputeServerPayloadConverter();

            converter.ConvertSummary(nonObjectJson);
        }
        public void CannotConvertJsonPayloadEmptyObjectToServer()
        {
            var emptyObjectFixture = @"{ }";

            var converter = new ComputeServerPayloadConverter();

            converter.ConvertSummary(emptyObjectFixture);
        }
        public void CannotConvertInvalidJsonToServer()
        {
            var badJsonFixture = @"{ NOT JSON";

            var converter = new ComputeServerPayloadConverter();

            converter.ConvertSummary(badJsonFixture);
        }
        public void CanParseValidServersPayloadWithEmptyJsonArray()
        {
            var emptyJsonArray = @"{ ""servers"": [ ] }";

            var converter  = new ComputeServerPayloadConverter();
            var containers = converter.ConvertServers(emptyJsonArray).ToList();

            Assert.AreEqual(0, containers.Count());
        }
        public void CanParseAnEmptyServersPayload()
        {
            var payload = string.Empty;

            var converter  = new ComputeServerPayloadConverter();
            var containers = converter.ConvertServers(payload).ToList();

            Assert.AreEqual(0, containers.Count());
        }
        public void CanConvertSummaryJsonPayloadToServer()
        {
            var serverId        = "1";
            var serverPublicUri = "http://www.server.com/v2/servers/1";
            var serverPermUri   = "http://www.server.com/servers/1";
            var serverAdminPass = "******";

            var computeServerFixture = CreateServerRequstSummaryJsonFixtrue(serverId, serverPermUri, serverPublicUri, serverAdminPass);

            var converter = new ComputeServerPayloadConverter();
            var server    = converter.ConvertSummary(computeServerFixture);

            Assert.IsNotNull(server);
            Assert.AreEqual(serverId, server.Id);
            Assert.AreEqual(serverAdminPass, server.AdminPassword);
            Assert.AreEqual(new Uri(serverPermUri), server.PermanentUri);
            Assert.AreEqual(new Uri(serverPublicUri), server.PublicUri);
        }
        public void CanConvertValidServersJsonPayloadWithSingleFlavor()
        {
            var validFlavorsJsonFixture = @"{{ ""servers"": [ {0} ] }}";
            var firstServer             = CreateServersSummaryJsonFixtrue("myserver", "1", "http://server.com/servers/1",
                                                                          "http://server.com/v2/servers/1");
            var validSingleServerPayload = string.Format(validFlavorsJsonFixture, firstServer);

            var converter = new ComputeServerPayloadConverter();
            var servers   = converter.ConvertServers(validSingleServerPayload).ToList();

            Assert.AreEqual(1, servers.Count());
            var srv1 =
                servers.First(o => string.Equals(o.Name, "myserver", StringComparison.InvariantCultureIgnoreCase));

            Assert.IsNotNull(srv1);

            Assert.AreEqual("1", srv1.Id);
            Assert.AreEqual(new Uri("http://server.com/servers/1"), srv1.PermanentUri);
            Assert.AreEqual(new Uri("http://server.com/v2/servers/1"), srv1.PublicUri);
        }
        public void CanConvertJsonPayloadMissingProgressToServer()
        {
            var serverPublicUri = "http://www.server.com/v2/servers/1";
            var serverPermUri   = "http://www.server.com/servers/1";
            var serverId        = "12345";
            var serverName      = "testServer";
            var serverState     = "ACTIVE";

            var payloadFixture = @"{{
                ""server"": {{
                    ""status"": ""{2}"",
                    ""updated"": ""2014-06-11T18:04:46Z"",
                    ""links"": [
                        {{
                            ""href"": ""{3}"",
                            ""rel"": ""self""
                        }},
                        {{
                            ""href"": ""{4}"",
                            ""rel"": ""bookmark""
                        }}
                    ],
                    ""id"": ""{0}"",
                    ""name"": ""{1}"",
                    ""created"": ""2014-06-11T18:04:25Z""
                }}
            }}";

            var missingFixture = string.Format(payloadFixture, serverId, serverName, serverState, serverPublicUri, serverPermUri);

            var converter = new ComputeServerPayloadConverter();
            var server    = converter.Convert(missingFixture);

            Assert.IsNotNull(server);
            Assert.AreEqual(serverId, server.Id);
            Assert.AreEqual(serverName, server.Name);
            Assert.AreEqual(serverState.ToLower(), server.Status.ToString().ToLower());
            Assert.AreEqual(0, server.Progress);
            Assert.AreEqual(new Uri(serverPermUri), server.PermanentUri);
            Assert.AreEqual(new Uri(serverPublicUri), server.PublicUri);
        }
        public void CanConvertJsonPayloadToServer()
        {
            var serverPublicUri = "http://www.server.com/v2/servers/1";
            var serverPermUri   = "http://www.server.com/servers/1";
            var serverId        = "12345";
            var serverName      = "testServer";
            var serverProgress  = 0;
            var serverState     = "ACTIVE";

            var computeServerFixture = CreateServerJsonFixtrue(serverName, serverId, serverState, serverProgress, serverPublicUri, serverPermUri);

            var converter = new ComputeServerPayloadConverter();
            var server    = converter.Convert(computeServerFixture);

            Assert.IsNotNull(server);
            Assert.AreEqual(serverId, server.Id);
            Assert.AreEqual(serverName, server.Name);
            Assert.AreEqual(serverState.ToLower(), server.Status.ToString().ToLower());
            Assert.AreEqual(serverProgress, server.Progress);
            Assert.AreEqual(new Uri(serverPermUri), server.PermanentUri);
            Assert.AreEqual(new Uri(serverPublicUri), server.PublicUri);
        }
        public void CannotParseInvalidServersPayload()
        {
            var converter = new ComputeServerPayloadConverter();

            converter.ConvertServers("NOT JSON");
        }
        public void CannotParseInvalidServersJsonPayload()
        {
            var converter = new ComputeServerPayloadConverter();

            converter.ConvertServers("[ { \"SomeAtrib\" }]");
        }
        public void CannotConvertNullJsonToServer()
        {
            var converter = new ComputeServerPayloadConverter();

            converter.Convert(null);
        }
        public void CannotParseANullServersPayload()
        {
            var converter = new ComputeServerPayloadConverter();

            converter.ConvertServers(null);
        }
        public void CannotConvertEmptyStringJsonToServer()
        {
            var converter = new ComputeServerPayloadConverter();

            converter.Convert(string.Empty);
        }