Example #1
0
        private string SimplifyJson(string responseText)
        {
            switch (_options.Type)
            {
            case AvmObjectType.BuildVariables:
            case AvmObjectType.VariableGroupVariables:
                return(JsonConvert.SerializeObject(JsonConvert.DeserializeObject <dynamic>(responseText).variables));

            case AvmObjectType.ReleaseVariables:
                var release = JsonConvert.DeserializeObject <dynamic>(responseText);

                var output = new ReleaseVariables
                {
                    Variables = JsonConvert.DeserializeObject <Dictionary <string, Variable> >(
                        JsonConvert.SerializeObject(release.variables)),
                    Environments =
                        JsonConvert.DeserializeObject <List <PipelineEnvironment> >(
                            JsonConvert.SerializeObject(release.environments))
                };

                return(JsonConvert.SerializeObject(
                           output
                           ));
            }

            return(responseText);
        }
Example #2
0
        public void UpdateRelease_SetsVariableValue()
        {
            // Arrange
            string variableName = "variable1";
            var    existing     = CreatePartiallyValidRelease();

            existing["variables"][variableName] = new JObject();
            var newRelease = new ReleaseVariables
            {
                Variables = new Dictionary <string, Variable>
                {
                    { variableName, new Variable
                      {
                          Value = "New value"
                      } }
                }
            };

            // Act
            var output = JsonConvert.DeserializeObject <JObject>(new ReleaseTransformer().UpdateRelease(JsonConvert.SerializeObject(existing),
                                                                                                        JsonConvert.SerializeObject(newRelease)));

            // Assert
            Assert.Equal("New value", output["variables"][variableName]["value"]);
        }
Example #3
0
 private static void SetReleaseEnvironmentSpecificVariables(ReleaseVariables newReleaseVariables,
                                                            JToken existingRelease)
 {
     foreach (var env in newReleaseVariables.Environments)
     {
         GetEnvironment(existingRelease, env).SetVariables(env.Variables);
     }
 }
Example #4
0
        public async Task ExecuteAsync_UploadsCorrectlyModifiedRelease()
        {
            // Arrange
            var release = TestUtilities.CreateValidRelease();
            var env     = TestUtilities.CreateValidReleaseEnvironment();

            ((JArray)release["environments"]).Add(env);

            var expectedRelease = TestUtilities.CreateValidRelease();

            expectedRelease["variables"]["Variable"] = TestUtilities.CreateValidVariableJObject();
            env = TestUtilities.CreateValidReleaseEnvironment();
            ((JArray)expectedRelease["environments"]).Add(env);
            env["variables"]["Variable"] = TestUtilities.CreateValidVariableJObject();

            var variablesFileContent = new ReleaseVariables
            {
                Environments = new List <PipelineEnvironment>
                {
                    new PipelineEnvironment
                    {
                        Id        = 1,
                        Name      = "Release 1",
                        Variables = new Dictionary <string, Variable>
                        {
                            { "Variable", TestUtilities.CreateValidVariable() }
                        }
                    }
                },
                Variables = new Dictionary <string, Variable>
                {
                    { "Variable", TestUtilities.CreateValidVariable() }
                }
            };

            var options = CreateValidSetOptions(AvmObjectType.ReleaseVariables);

            File.WriteAllText(options.SourceFilePath, JsonConvert.SerializeObject(variablesFileContent));
            var azureClient = CreateValidAzureClient();

            azureClient.GetAsync(Arg.Any <string>()).Returns(JsonConvert.SerializeObject(release));
            var output     = CreateValidOutput();
            var urlStore   = CreateValidUrlStore();
            var setCommand = new SetCommand(options, new ReleaseTransformer(), new VariableContainerTransformer(), urlStore, azureClient, output);

            // Act
            await setCommand.ExecuteAsync();

            File.Delete(options.SourceFilePath);

            // Assert
            await azureClient.Received().PutAsync(Arg.Any <string>(),
                                                  Arg.Is <string>(res => JToken.DeepEquals(JsonConvert.DeserializeObject <JToken>(res), expectedRelease)));
        }
Example #5
0
        public void UpdateRelease_UpdatesCorrectEnvironment()
        {
            // Arrange
            var release  = CreatePartiallyValidRelease();
            var envArray = new JArray();
            var env1     = new JObject();

            env1["id"]        = 1;
            env1["variables"] = new JObject();
            var env2 = new JObject();

            env2["id"]        = 2;
            env2["variables"] = new JObject();
            envArray.Add(env1);
            envArray.Add(env2);
            release["environments"] = envArray;
            var releaseVariables = new ReleaseVariables
            {
                Variables    = new Dictionary <string, Variable>(),
                Environments = new List <PipelineEnvironment>
                {
                    new PipelineEnvironment
                    {
                        Id        = 2,
                        Variables = new Dictionary <string, Variable>
                        {
                            { "Variable1", new Variable
                              {
                                  Value = "Value"
                              } }
                        }
                    }
                }
            };
            var releaseTransformer = new ReleaseTransformer();

            // Act
            var output = releaseTransformer.UpdateRelease(JsonConvert.SerializeObject(release),
                                                          JsonConvert.SerializeObject(releaseVariables));

            // Assert
            Assert.Equal("Value", JsonConvert.DeserializeObject <JObject>(output)
                         .SelectToken($"$.environments[?(@.id == 2)].variables")["Variable1"]
                         .ToObject <Variable>()
                         .Value);
        }
Example #6
0
        public void UpdateRelease_SetsVariableValueToNull_IfNewValueIsNull()
        {
            // Arrange
            string variableName = "variable1";
            var    existing     = CreatePartiallyValidRelease();

            existing["variables"][variableName]          = new JObject();
            existing["variables"][variableName]["value"] = "value";
            var newRelease = new ReleaseVariables
            {
                Variables = new Dictionary <string, Variable>
                {
                    { variableName, null }
                }
            };

            // Act
            var output = JsonConvert.DeserializeObject <JObject>(new ReleaseTransformer().UpdateRelease(JsonConvert.SerializeObject(existing),
                                                                                                        JsonConvert.SerializeObject(newRelease)));

            // Assert
            Assert.Null(output["variables"][variableName].ToObject(typeof(object)));
        }
Example #7
0
        public void UpdateRelease_ThrowsArgumentException_WhenEnvironmentDoesntExist()
        {
            // Arrange
            var release          = CreatePartiallyValidRelease();
            var releaseVariables = new ReleaseVariables
            {
                Variables    = new Dictionary <string, Variable>(),
                Environments = new List <PipelineEnvironment>
                {
                    new PipelineEnvironment
                    {
                        Id = 1
                    }
                }
            };
            var releaseTransformer = new ReleaseTransformer();

            // Act
            Assert.Throws <ArgumentException>(() => releaseTransformer.UpdateRelease(JsonConvert.SerializeObject(release),
                                                                                     JsonConvert.SerializeObject(releaseVariables)));

            // Assert
        }
Example #8
0
 private static void SetReleaseGlobalVariables(JToken existingRelease, ReleaseVariables newReleaseVariables)
 {
     existingRelease.SetVariables(newReleaseVariables.Variables);
 }