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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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")); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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(); }
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); }