Exemple #1
0
        public void VSOHandlerBasic()
        {
            // Arrange
            var payload     = GetVSOPayload();
            var httpRequest = new Mock <HttpRequestBase>();
            var handler     = new VSOHandler();

            // Act
            DeploymentInfo deploymentInfo;
            DeployAction   result = handler.TryParseDeploymentInfo(httpRequest.Object, payload: payload, targetBranch: "master", deploymentInfo: out deploymentInfo);

            // Assert
            Assert.Equal(DeployAction.ProcessDeployment, result);
            Assert.NotNull(deploymentInfo);
            Assert.Equal("this_is_latest_commit", deploymentInfo.CommitId);
            Assert.Equal("this_is_latest_commit", deploymentInfo.TargetChangeset.Id);
            Assert.Equal("John Smith", deploymentInfo.TargetChangeset.AuthorName);
            Assert.Equal("*****@*****.**", deploymentInfo.TargetChangeset.AuthorEmail);
            Assert.Equal("commit message", deploymentInfo.TargetChangeset.Message);
            Assert.Equal(DateTime.Parse("2015-05-08T00:20:59Z"), deploymentInfo.TargetChangeset.Timestamp);

            var repositoryUri = new Uri(deploymentInfo.RepositoryUrl);

            Assert.Equal("https", repositoryUri.Scheme);
            Assert.Equal("test01.vsoalm.tfsallin.net", repositoryUri.Host);
            Assert.Equal("/DefaultCollection/_git/testgit01", repositoryUri.AbsolutePath);
            Assert.Equal("this_is_vso_token:", repositoryUri.UserInfo);
        }
Exemple #2
0
        public void BitbucketHandlerAllowsPayloadsWithNullBranch()
        {
            // Arrange
            string payloadContent = @"{ ""canon_url"": ""https://bitbucket.org"", 
                    ""commits"": [ { ""author"": ""pranavkm"", ""branch"": null, ""raw_node"": ""0bbefd70c4c4213bba1e91998141f6e861cec24d"", ""message"": ""Some file changes"" }],
                    ""repository"": { ""absolute_url"": ""/kudutest/hellomercurial/"", ""is_private"": false, ""name"": ""HelloMercurial"", ""owner"": ""kudutest"", ""scm"": ""hg"" }, ""user"": ""kudutest"" }";

            var httpRequest = new Mock <HttpRequestBase>();

            httpRequest.SetupGet(r => r.UserAgent).Returns("Bitbucket.org");
            var bitbucketHandler = new BitbucketHandler();

            // Act
            DeploymentInfo deploymentInfo;
            DeployAction   result = bitbucketHandler.TryParseDeploymentInfo(httpRequest.Object, payload: JObject.Parse(payloadContent), targetBranch: "not-default", deploymentInfo: out deploymentInfo);

            // Assert
            Assert.Equal(DeployAction.ProcessDeployment, result);
            Assert.Equal("Bitbucket", deploymentInfo.Deployer);
            Assert.Equal(RepositoryType.Mercurial, deploymentInfo.RepositoryType);
            Assert.Equal("https://bitbucket.org/kudutest/hellomercurial/", deploymentInfo.RepositoryUrl);
            Assert.Equal("pranavkm", deploymentInfo.TargetChangeset.AuthorName);
            Assert.Equal("0bbefd70c4c4213bba1e91998141f6e861cec24d", deploymentInfo.TargetChangeset.Id);
            Assert.Equal("Some file changes", deploymentInfo.TargetChangeset.Message);
        }
Exemple #3
0
        public void KilnHgHandlerParsesKilnPayloadsForRepositoriesWithMultipleCommitsAccrossBranches()
        {
            // Arrange
            const string payload = @"{ ""commits"": ["
                                   + @"{ ""author"": ""Brian Surowiec <*****@*****.**>"", ""branch"": ""non-default"", ""id"": ""f1525c29206072f6565e6ba70831afb65b55e9a0"", ""message"": ""commit message 14"", ""revision"": 14, ""timestamp"": ""1/15/2013 2:23:37 AM"" },"
                                   + @"{ ""author"": ""Brian Surowiec <*****@*****.**>"", ""branch"": ""default"", ""id"": ""58df029b9891bed6be1516971b50dc0eda58ce38"", ""message"": ""commit message 13"", ""revision"": 13, ""timestamp"": ""1/15/2013 2:23:20 AM"" },"
                                   + @"{ ""author"": ""Brian Surowiec <*****@*****.**>"", ""branch"": ""default"", ""id"": ""cb6ea738f5ec16d53c06a2f5823c34b396922c13"", ""message"": ""commit message 12"", ""revision"": 12, ""timestamp"": ""1/15/2013 2:23:04 AM"" }"
                                   + @"], ""repository"": { ""url"": ""https://kudutest.kilnhg.com/Code/Test/Group/KuduApp"" } }";
            var httpRequest     = new Mock <HttpRequestBase>();
            var settingsManager = new MockDeploymentSettingsManager();

            settingsManager.SetValue("kiln.accesstoken", "hg-user");
            var kilnHandler = new KilnHgHandler(settingsManager);

            // Act
            DeploymentInfo deploymentInfo;
            DeployAction   result = kilnHandler.TryParseDeploymentInfo(httpRequest.Object, payload: JObject.Parse(payload), targetBranch: "default", deploymentInfo: out deploymentInfo);

            // Assert
            Assert.Equal(DeployAction.ProcessDeployment, result);
            Assert.Equal("Kiln", deploymentInfo.Deployer);
            Assert.Equal("https://*****:*****@kudutest.kilnhg.com/Code/Test/Group/KuduApp", deploymentInfo.RepositoryUrl);
            Assert.Equal("Brian Surowiec", deploymentInfo.TargetChangeset.AuthorName);
            Assert.Equal("*****@*****.**", deploymentInfo.TargetChangeset.AuthorEmail);
            Assert.Equal("58df029b9891bed6be1516971b50dc0eda58ce38", deploymentInfo.TargetChangeset.Id);
            Assert.Equal("commit message 13", deploymentInfo.TargetChangeset.Message);
            Assert.Equal(new DateTimeOffset(2013, 1, 15, 2, 23, 20, TimeSpan.Zero), deploymentInfo.TargetChangeset.Timestamp);
        }
Exemple #4
0
        private DeployAction GetRepositoryInfo(HttpRequestBase request, JObject payload, string targetBranch, out DeploymentInfo info)
        {
            foreach (var handler in _serviceHookHandlers)
            {
                DeployAction result = handler.TryParseDeploymentInfo(request, payload, targetBranch, out info);
                if (result != DeployAction.UnknownPayload)
                {
                    if (_tracer.TraceLevel >= TraceLevel.Verbose)
                    {
                        TraceHandler(handler);
                    }

                    if (result == DeployAction.ProcessDeployment)
                    {
                        // Although a payload may be intended for a handler, it might not need to fetch.
                        // For instance, if a different branch was pushed than the one the repository is deploying, we can no-op it.
                        Debug.Assert(info != null);
                        info.Handler = handler;
                    }

                    return(result);
                }
            }

            throw new FormatException(Resources.Error_UnsupportedFormat);
        }
        public async Task BitbucketHandlerAllowsPayloadsWithNullNew()
        {
            // Arrange
            string payloadContent = null;

            using (var reader = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("Kudu.Services.Test.BitbucketDeployment.BitbucketV2Payload.json")))
            {
                payloadContent = await reader.ReadToEndAsync();
            }

            var payload = JObject.Parse(payloadContent);

            foreach (var change in payload.Value <JObject>("push").Value <JArray>("changes"))
            {
                // simulate branch deleted push event
                change["new"] = null;
            }

            var httpRequest = new Mock <HttpRequestBase>();

            httpRequest.SetupGet(r => r.UserAgent).Returns("Bitbucket-Webhooks/2.0");
            var bitbucketHandler = new BitbucketHandlerV2(Mock.Of <IRepositoryFactory>());

            // Act
            DeploymentInfoBase deploymentInfo;
            DeployAction       result = bitbucketHandler.TryParseDeploymentInfo(httpRequest.Object, payload: payload, targetBranch: "not-default", deploymentInfo: out deploymentInfo);

            // Assert
            Assert.Equal(DeployAction.NoOp, result);
        }
Exemple #6
0
        public void VSOHandlerBasic()
        {
            // Arrange
            var payload     = GetVSOPayload();
            var httpRequest = new Mock <HttpRequestBase>();
            var handler     = new VSOHandler(GetMockDeploymentSettingsMgr(), Mock.Of <IRepositoryFactory>());

            // Act
            DeploymentInfoBase deploymentInfo;
            DeployAction       result = handler.TryParseDeploymentInfo(httpRequest.Object, payload: payload, targetBranch: "master", deploymentInfo: out deploymentInfo);

            // Assert
            Assert.Equal(DeployAction.ProcessDeployment, result);
            Assert.NotNull(deploymentInfo);
            Assert.Null(deploymentInfo.CommitId);
            Assert.Equal("VSTS", deploymentInfo.TargetChangeset.AuthorName);
            Assert.Equal("VSTS", deploymentInfo.TargetChangeset.AuthorEmail);
            Assert.Equal(Resources.Vso_Synchronizing, deploymentInfo.TargetChangeset.Message);

            var repositoryUri = new Uri(deploymentInfo.RepositoryUrl);

            Assert.Equal("https", repositoryUri.Scheme);
            Assert.Equal("test01.vsoalm.tfsallin.net", repositoryUri.Host);
            Assert.Equal("/DefaultCollection/_git/testgit01", repositoryUri.AbsolutePath);
            Assert.Equal("this_is_vso_token:", repositoryUri.UserInfo);
        }
Exemple #7
0
        public async Task BitbucketHandlerAllowsPayloadsWithNullBranch()
        {
            // Arrange
            string payloadContent = null;

            using (var reader = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("Kudu.Services.Test.BitbucketDeployment.BitbucketV2Payload.json")))
            {
                payloadContent = await reader.ReadToEndAsync();
            }

            payloadContent = payloadContent.Replace("\"name\": \"master\"", "\"name\": null");

            var httpRequest = new Mock <HttpRequestBase>();

            httpRequest.SetupGet(r => r.UserAgent).Returns("Bitbucket-Webhooks/2.0");
            var bitbucketHandler = new BitbucketHandlerV2();

            // Act
            DeploymentInfo deploymentInfo;
            DeployAction   result = bitbucketHandler.TryParseDeploymentInfo(httpRequest.Object, payload: JObject.Parse(payloadContent), targetBranch: "not-default", deploymentInfo: out deploymentInfo);

            // Assert
            Assert.Equal(DeployAction.ProcessDeployment, result);
            Assert.Equal("Bitbucket", deploymentInfo.Deployer);
            Assert.Equal(RepositoryType.Git, deploymentInfo.RepositoryType);
            Assert.Equal("https://bitbucket.org/shrimpywu/hello", deploymentInfo.RepositoryUrl);
            Assert.Equal("Xiaomin Wu", deploymentInfo.TargetChangeset.AuthorName);
            Assert.Equal("*****@*****.**", deploymentInfo.TargetChangeset.AuthorEmail);
            Assert.Equal("65f2a62d05ccb7d605ae36f18a11d3557ed552a9", deploymentInfo.TargetChangeset.Id);
            Assert.Equal("Another check in\n", deploymentInfo.TargetChangeset.Message);
        }
Exemple #8
0
        public async Task BitbucketHandlerReturnsNoOpForCommitsThatAreNotTheTargetBranch()
        {
            // Arrange
            string payloadContent = null;

            using (var reader = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("Kudu.Services.Test.BitbucketDeployment.BitbucketV2Payload.json")))
            {
                payloadContent = await reader.ReadToEndAsync();
            }

            var httpRequest = new Mock <HttpRequestBase>();

            httpRequest.SetupGet(r => r.UserAgent).Returns("Bitbucket-Webhooks/2.0");
            var bitbucketHandler = new BitbucketHandlerV2();

            // Act
            DeploymentInfo deploymentInfo;
            DeployAction   result = bitbucketHandler.TryParseDeploymentInfo(
                httpRequest.Object,
                payload: JObject.Parse(payloadContent),
                targetBranch: "not-default",
                deploymentInfo: out deploymentInfo);

            // Assert
            Assert.Equal(DeployAction.NoOp, result);
            Assert.Null(deploymentInfo);
        }
        public void TryParseDeploymentInfoShouldReturnProcessDeployment()
        {
            var                oneDriveHandler = new OneDriveHandler(Mock.Of <ITracer>(), Mock.Of <IDeploymentStatusManager>(), Mock.Of <IDeploymentSettingsManager>(), Mock.Of <IEnvironment>(), Mock.Of <IRepositoryFactory>());
            JObject            payload         = JObject.FromObject(new { RepositoryUrl = "https://api.onedrive.com", AccessToken = "one-drive-access-token" });
            DeploymentInfoBase deploymentInfo  = null;

            DeployAction result = oneDriveHandler.TryParseDeploymentInfo(null, payload, null, out deploymentInfo);

            Assert.Equal(DeployAction.ProcessDeployment, result);
        }
        public void TryParseDeploymentInfoShouldReturnUnknownPayload()
        {
            var                oneDriveHandler = new OneDriveHandler(Mock.Of <ITracer>(), Mock.Of <IDeploymentStatusManager>(), Mock.Of <IDeploymentSettingsManager>(), Mock.Of <IEnvironment>(), Mock.Of <IRepositoryFactory>());
            JObject            payload         = JObject.FromObject(new { });
            DeploymentInfoBase deploymentInfo  = null;

            DeployAction result = oneDriveHandler.TryParseDeploymentInfo(null, payload, null, out deploymentInfo);

            Assert.Equal(DeployAction.UnknownPayload, result);
        }
Exemple #11
0
        public void Initialize()
        {
            _dummies = new Pawns();
            _dummies.ReadDirectory(ConstantsPR.SourceOldPath, false);
            _dummies.ReadDirectory(ConstantsPR.SourceNewPath, true);

            // empty both test folders
            _dummies.EmptyDirectory(ConstantsPR.TestSourcePath);
            _dummies.EmptyDirectory(ConstantsPR.TestTargetPath);

            _action = new DeployAction(ConstantsPR.TestSourcePath, ConstantsPR.TestTargetPath, null, null, false);
        }
Exemple #12
0
        public void Copy_With_Manifest()
        {
            /* seed source */
            _pwans.MoveToSource("an", "bn", "cn", "dn", "en", "fn", "m1n");

            /* trigger update with a.txt as manifest */
            _action = new DeployAction(ConstantsPR.TestSourcePath, ConstantsPR.TestTargetPath, "m1.manifest", null, false);
            _action.Act();

            /* all file has been copied, but not cn which is absent in manifest */
            Assert.AreEqual(true, _pwans.TargetIs("an", "bn", "dn", "en", "fn"));
        }
Exemple #13
0
        public void CodeBaseHqHandlerIgnoresNonCodeBaseHqPayloads()
        {
            // Arrange
            var httpRequest = new Mock <HttpRequestBase>();
            var handler     = new CodebaseHqHandler(Mock.Of <IRepositoryFactory>());

            // Act
            DeploymentInfoBase deploymentInfo;
            DeployAction       result = handler.TryParseDeploymentInfo(httpRequest.Object, payload: null, targetBranch: null, deploymentInfo: out deploymentInfo);

            // Assert
            Assert.Equal(DeployAction.UnknownPayload, result);
        }
Exemple #14
0
        public void GitHubHandlerReturnsNoOpForMalformedPayloads(string payloadContent)
        {
            // Arrange
            var     httpRequest = GetRequest();
            var     handler     = new GitHubHandler();
            JObject payload     = JObject.Parse(payloadContent);

            // Act
            DeploymentInfo deploymentInfo;
            DeployAction   result = handler.TryParseDeploymentInfo(httpRequest, payload: payload, targetBranch: "master", deploymentInfo: out deploymentInfo);

            // Assert
            Assert.Equal(DeployAction.NoOp, result);
        }
Exemple #15
0
        public void CodePlexHandlerParsesInitialPayloadThatDoesNotHaveBranchInfo(string payloadContent)
        {
            // Arrange
            var     httpRequest = new Mock <HttpRequestBase>();
            var     handler     = new CodePlexHandler();
            JObject payload     = JObject.Parse(payloadContent);

            // Act
            DeploymentInfo deploymentInfo;
            DeployAction   result = handler.TryParseDeploymentInfo(httpRequest.Object, payload: payload, targetBranch: "production", deploymentInfo: out deploymentInfo);

            // Assert
            Assert.Equal(DeployAction.ProcessDeployment, result);
        }
Exemple #16
0
        public void VSOHandlerMismatchBranch()
        {
            // Arrange
            var payload     = GetVSOPayload();
            var httpRequest = new Mock <HttpRequestBase>();
            var handler     = new VSOHandler();

            // Act
            DeploymentInfo deploymentInfo;
            DeployAction   result = handler.TryParseDeploymentInfo(httpRequest.Object, payload: payload, targetBranch: "foo", deploymentInfo: out deploymentInfo);

            // Assert
            Assert.Equal(DeployAction.NoOp, result);
        }
Exemple #17
0
        public void CodePlexHandlerIgnoresNonCodePlexPayloads(string payloadContent)
        {
            // Arrange
            var     httpRequest = new Mock <HttpRequestBase>();
            var     handler     = new CodePlexHandler();
            JObject payload     = JObject.Parse(payloadContent);

            // Act
            DeploymentInfo deploymentInfo;
            DeployAction   result = handler.TryParseDeploymentInfo(httpRequest.Object, payload: payload, targetBranch: null, deploymentInfo: out deploymentInfo);

            // Assert
            Assert.Equal(DeployAction.UnknownPayload, result);
        }
Exemple #18
0
        public void VSOHandlerUnknownPayload()
        {
            // Arrange
            var payload     = new JObject();
            var httpRequest = new Mock <HttpRequestBase>();
            var handler     = new VSOHandler(GetMockDeploymentSettingsMgr(), Mock.Of <IRepositoryFactory>());

            // Act
            DeploymentInfoBase deploymentInfo;
            DeployAction       result = handler.TryParseDeploymentInfo(httpRequest.Object, payload: payload, targetBranch: "master", deploymentInfo: out deploymentInfo);

            // Assert
            Assert.Equal(DeployAction.UnknownPayload, result);
        }
Exemple #19
0
        public void PostExecute_Arguments_PassThrough()
        {
            return;

            _dummies.MoveToSource("fn");

            _action = new DeployAction(ConstantsPR.TestSourcePath, ConstantsPR.TestTargetPath, null, new List <string>()
            {
                "f.exe", "a1", "a2", "a3"
            }, false);
            _action.Act();

            /* we expect to see f.exe window with arguments a1, a2 and a3 */
            _action.ExecuteAfter();
        }
        public void CodePlexHandlerNoOpsDeleteRequest()
        {
            // Arrange
            string  payloadContent = @"{ url: ""https://git01.codeplex.com/pranavkmgittest"", branch: ""master"", deployer: ""codeplex"", oldRef: ""3dc5fc28310a7906a9809f81fc5dc68aa681a1f8"", newRef: ""0000000000000000000000000000000000000000"", scmType: ""Git"" }";
            var     httpRequest    = new Mock <HttpRequestBase>();
            var     handler        = new CodePlexHandler(Mock.Of <IRepositoryFactory>());
            JObject payload        = JObject.Parse(payloadContent);

            // Act
            DeploymentInfoBase deploymentInfo;
            DeployAction       result = handler.TryParseDeploymentInfo(httpRequest.Object, payload: payload, targetBranch: "master", deploymentInfo: out deploymentInfo);

            // Assert
            Assert.Equal(DeployAction.NoOp, result);
        }
Exemple #21
0
        public void CodePlexHandlerNoOpsNonTargetBranchPayloads()
        {
            // Arrange
            string  payloadContent = @"{ url: ""https://git01.codeplex.com/pranavkmgittest"", branch: ""test"", deployer: ""codeplex"", oldRef: ""3dc5fc28310a7906a9809f81fc5dc68aa681a1f8"", newRef: ""dcda9b7e70157a89423fd7862f2ee193586ca64f"", scmType: ""Git"" }";
            var     httpRequest    = new Mock <HttpRequestBase>();
            var     handler        = new CodePlexHandler();
            JObject payload        = JObject.Parse(payloadContent);

            // Act
            DeploymentInfo deploymentInfo;
            DeployAction   result = handler.TryParseDeploymentInfo(httpRequest.Object, payload: payload, targetBranch: "prod", deploymentInfo: out deploymentInfo);

            // Assert
            Assert.Equal(DeployAction.NoOp, result);
        }
Exemple #22
0
        public void KilnHgHandlerIgnoresNonKilnPayloads()
        {
            // Arrange
            var payload         = JObject.Parse(@"{ ""repository"":{ ""repourl"":""http://test.codebasehq.com/projects/test-repositories/repositories/git1/commit/840daf31f4f87cb5cafd295ef75de989095f415b"" } }");
            var httpRequest     = new Mock <HttpRequestBase>();
            var settingsManager = new MockDeploymentSettingsManager();
            var kilnHandler     = new KilnHgHandler(settingsManager);

            // Act
            DeploymentInfo deploymentInfo;
            DeployAction   result = kilnHandler.TryParseDeploymentInfo(httpRequest.Object, payload: payload, targetBranch: null, deploymentInfo: out deploymentInfo);

            // Assert
            Assert.Equal(DeployAction.UnknownPayload, result);
        }
Exemple #23
0
        public void BitbucketHandlerV2IgnoresNonBitbucketPayloads()
        {
            // Arrange
            var httpRequest = new Mock <HttpRequestBase>();

            httpRequest.SetupGet(r => r.UserAgent).Returns("Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)");
            var bitbucketHandler = new BitbucketHandlerV2();

            // Act
            DeploymentInfo deploymentInfo;
            DeployAction   result = bitbucketHandler.TryParseDeploymentInfo(httpRequest.Object, payload: null, targetBranch: null, deploymentInfo: out deploymentInfo);

            // Assert
            Assert.Equal(DeployAction.UnknownPayload, result);
        }
Exemple #24
0
        public void KilnHgHandlerReturnsNoOpForCommitsThatAreNotTheTargetBranch()
        {
            // Arrange
            const string payload         = @" { ""commits"": [ { ""author"": ""Brian Surowiec <*****@*****.**>"", ""branch"": ""default"", ""id"": ""771363bfb8e6e2b76a3da8d156c6a3db0ea9a9c4"", ""message"": ""did a commit"", ""revision"": 1, ""timestamp"": ""1/7/2013 6:54:25 AM"" } ], ""repository"": { ""url"": ""https://kudutest.kilnhg.com/Code/Test/Group/KuduApp"" } } ";
            var          httpRequest     = new Mock <HttpRequestBase>();
            var          settingsManager = new MockDeploymentSettingsManager();
            var          kilnHandler     = new KilnHgHandler(settingsManager);

            // Act
            DeploymentInfo deploymentInfo;
            DeployAction   result = kilnHandler.TryParseDeploymentInfo(httpRequest.Object, payload: JObject.Parse(payload), targetBranch: "not-default", deploymentInfo: out deploymentInfo);

            // Assert
            Assert.Equal(DeployAction.NoOp, result);
            Assert.Null(deploymentInfo);
        }
Exemple #25
0
        public void CodeBaseHqHandlerReturnsNoOpForDelete()
        {
            // Verifies delete scenario.
            // Arrange
            string  payloadContent = @"{""before"":""fc10b3aa5a9e39ac326489805bba5c577f04db85"",""after"":""000000000000000000000000000000000"",""ref"":""refs/heads/master"",""repository"":{""name"":""Git Repo #1"",""url"":""http://test.codebasehq.com/projects/test-repositories/repositories/git1"",""clone_url"":""[email protected]:test/test-repositories/git1.git"",""clone_urls"":{""ssh"":""[email protected]:test/test-repositories/git1.git"",""git"":""git://codebasehq.com:test/test-repositories/git1.git"",""http"":""https://test.codebasehq.com/test-repositories/git1.git""},""project"":{""name"":""Test Repositories"",""url"":""http://test.codebasehq.com/projects/test-repositories"",""status"":""active""}},""user"":{""name"":""Dan Wentworth"",""username"":""dan"",""email"":""*****@*****.**""},""commits"":[]}";
            var     httpRequest    = GetRequest();
            var     handler        = new CodebaseHqHandler(Mock.Of <IRepositoryFactory>());
            JObject payload        = JObject.Parse(payloadContent);

            // Act
            DeploymentInfoBase deploymentInfo;
            DeployAction       result = handler.TryParseDeploymentInfo(httpRequest, payload: payload, targetBranch: "master", deploymentInfo: out deploymentInfo);

            // Assert
            Assert.Equal(DeployAction.NoOp, result);
        }
Exemple #26
0
        public void CodeBaseHqHandlerReturnsNoOpForDeploymentsToNonTargetBranch()
        {
            // Arrange
            string  payloadContent = @"{""before"":""fc10b3aa5a9e39ac326489805bba5c577f04db85"",""after"":""840daf31f4f87cb5cafd295ef75de989095f415b"",""ref"":""refs/heads/master"",""repository"":{""name"":""Git Repo #1"",""url"":""http://test.codebasehq.com/projects/test-repositories/repositories/git1"",""clone_url"":""[email protected]:test/test-repositories/git1.git"",""clone_urls"":{""ssh"":""[email protected]:test/test-repositories/git1.git"",""git"":""git://codebasehq.com:test/test-repositories/git1.git"",""http"":""https://test.codebasehq.com/test-repositories/git1.git""},""project"":{""name"":""Test Repositories"",""url"":""http://test.codebasehq.com/projects/test-repositories"",""status"":""active""}},""user"":{""name"":""Dan Wentworth"",""username"":""dan"",""email"":""*****@*****.**""},""commits"":[{""id"":""840daf31f4f87cb5cafd295ef75de989095f415b"",""message"":""Extra output for the rrrraaaagh"",""author"":{""name"":""Dan Wentworth"",""email"":""*****@*****.**""},""timestamp"":""Mon, 18 Jul 2011 10:50:01 +0100"",""url"":""http://test.codebasehq.com/projects/test-repositories/repositories/git1/commit/840daf31f4f87cb5cafd295ef75de989095f415b""}]}";
            var     httpRequest    = GetRequest();
            var     handler        = new CodebaseHqHandler(Mock.Of <IRepositoryFactory>());
            JObject payload        = JObject.Parse(payloadContent);

            // Act
            DeploymentInfoBase deploymentInfo;
            DeployAction       result = handler.TryParseDeploymentInfo(httpRequest, payload: payload, targetBranch: "production", deploymentInfo: out deploymentInfo);

            // Assert
            Assert.Equal(DeployAction.NoOp, result);
            Assert.Null(deploymentInfo);
        }
Exemple #27
0
        public void GitHubHandlerReturnsNoOpForPayloadsNotMatchingTargetBranch()
        {
            // Verifies delete scenario.
            // Arrange
            string  payloadContent = @"{ ""repository"":{ ""url"":""https://github.com/KuduApps/PostCommitTest"" }, ref: ""refs/heads/not-master"", commits: [{""added"":[""Foo.txt""],""author"":{""email"":""*****@*****.**"",""name"":""Pranav K"",""username"":""pranavkm""},""committer"":{""email"":""*****@*****.**"",""name"":""Pranav K"",""username"":""pranavkm""},""distinct"":true,""id"":""f94996d67d6d5a060aaf2fcb72c333d0899549ab"",""message"":""Foo commit"",""modified"":[],""removed"":[],""timestamp"":""2012-12-17T14:32:20-08:00"",""url"":""https://github.com/KuduApps/PostCommitTest/commit/f94996d67d6d5a060aaf2fcb72c333d0899549ab""}] }";
            var     httpRequest    = GetRequest();
            var     handler        = new GitHubHandler();
            JObject payload        = JObject.Parse(payloadContent);

            // Act
            DeploymentInfo deploymentInfo;
            DeployAction   result = handler.TryParseDeploymentInfo(httpRequest, payload: payload, targetBranch: "master", deploymentInfo: out deploymentInfo);

            // Assert
            Assert.Equal(DeployAction.NoOp, result);
        }
Exemple #28
0
        public void GitHubHandlerReturnsNoOpForPayloadsWithEmptyAfter()
        {
            // Verifies delete scenario.
            // Arrange
            string  payloadContent = @"{""after"":""00000000000000000000000000000000"", ""repository"":{ ""url"":""https://github.com/KuduApps/PostCommitTest"" }, ref: ""refs/heads/master"", commits: [] }";
            var     httpRequest    = GetRequest();
            var     handler        = new GitHubHandler();
            JObject payload        = JObject.Parse(payloadContent);

            // Act
            DeploymentInfo deploymentInfo;
            DeployAction   result = handler.TryParseDeploymentInfo(httpRequest, payload: payload, targetBranch: "master", deploymentInfo: out deploymentInfo);

            // Assert
            Assert.Equal(DeployAction.NoOp, result);
        }
Exemple #29
0
        public void GitHubHandlerIgnoresNonGithubPayloads()
        {
            // Arrange
            var headers     = new NameValueCollection();
            var httpRequest = new Mock <HttpRequestBase>();

            httpRequest.SetupGet(r => r.Headers).Returns(headers);
            var handler = new GitHubHandler();

            // Act
            DeploymentInfo deploymentInfo;
            DeployAction   result = handler.TryParseDeploymentInfo(httpRequest.Object, payload: null, targetBranch: null, deploymentInfo: out deploymentInfo);

            // Assert
            Assert.Equal(DeployAction.UnknownPayload, result);
        }
Exemple #30
0
        private static void Main_Inner(string[] args)
        {
            // getting target path
            string targetPath = System.Reflection.Assembly.GetExecutingAssembly().Location;

            targetPath = Path.GetDirectoryName(targetPath);

            // reading configuration and arguments
            List <string> argsList     = args.ToList();
            string        sourcePath   = Properties.Settings.Default.DeploymentDirectory;
            string        manifestFile = Properties.Settings.Default.ManifestFile;
            string        startExe     = Properties.Settings.Default.StartupApplicationExe;
            bool          allowOfline  = Properties.Settings.Default.AllowOffline;

            if (string.IsNullOrWhiteSpace(startExe) == false)
            {
                argsList.Insert(0, startExe);
            }

            // ACTION: performing upgrade action
            DeployAction action = new DeployAction(sourcePath, targetPath, manifestFile, argsList, allowOfline);
            int          ix     = action.Act();

            if (ix > 0)
            {
                if (Properties.Settings.Default.ShowUpgradePopup)
                {
                    Application.Run(new UpdatePopup());
                }
            }

            // ACTION: check for stop file
            string message = action.CheckStopFile();

            if (message != null)
            {
                if (message == "")
                {
                    message = "Access to the application '" + ConstantsPR.ApplicationName + "' is temporarily suspended.";
                }
                MessageBox.Show(message, ConstantsPR.ApplicationName, MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            // ACTION: running post-upgrade commands
            action.ExecuteAfter();
        }
Exemple #31
0
        public void GenericHandlerSimpleTest(DeployAction expected, IDictionary<string, object> values)
        {
            // Arrange
            var handler = new GenericHandler();
            var payload = new JObject();
            foreach (var pair in values)
            {
                payload[pair.Key] = JToken.FromObject(pair.Value);
            }

            // Act
            DeploymentInfo deploymentInfo;
            DeployAction result = handler.TryParseDeploymentInfo(request: null, payload: payload, targetBranch: null, deploymentInfo: out deploymentInfo);

            // Assert
            Assert.Equal(expected, result);
        }