public async Task <DashboardMessageGitHub> PostRawBufferManual()
        {
            IEnumerable <string> headerValues = Request.Headers.GetValues("X-GitHub-Event");
            string GitHubEvent = headerValues.FirstOrDefault();

            string RawJSON = await Request.Content.ReadAsStringAsync();

            DashboardMessageGitHub msg = new DashboardMessageGitHub(RawJSON, GitHubEvent);

            var hubContext = GlobalHost.ConnectionManager.GetHubContext <DashboardMessageHub>();

            hubContext.Clients.All.broadcastDashboardMessage(msg);
            DashboardMessageCache.Add(msg);
            return(msg);
        }
Example #2
0
        public void DashboardMessageGitHubTest_Push()
        {
            #region JSON DATA
            string json = @"{
                  ""ref"": ""refs / heads / changes"",
                  ""before"": ""9049f1265b7d61be4a8904a9a27120d2064dab3b"",
                  ""after"": ""0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c"",
                  ""created"": false,
                  ""deleted"": false,
                  ""forced"": false,
                  ""base_ref"": null,
                  ""compare"": ""https://github.com/baxterthehacker/public-repo/compare/9049f1265b7d...0d1a26e67d8f"",
                  ""commits"": [
                    {
                      ""id"": ""0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c"",
                      ""tree_id"": ""f9d2a07e9488b91af2641b26b9407fe22a451433"",
                      ""distinct"": true,
                      ""message"": ""Update README.md"",
                      ""timestamp"": ""2015-05-05T19:40:15-04:00"",
                      ""url"": ""https://github.com/baxterthehacker/public-repo/commit/0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c"",
                      ""author"": {
                        ""name"": ""baxterthehacker"",
                        ""email"": ""*****@*****.**"",
                        ""username"": ""baxterthehacker""
                      },
                      ""committer"": {
                        ""name"": ""baxterthehacker"",
                        ""email"": ""*****@*****.**"",
                        ""username"": ""baxterthehacker""
                      },
                      ""added"": [

                      ],
                      ""removed"": [

                      ],
                      ""modified"": [
                        ""README.md""
                      ]
                    }
                  ],
                  ""head_commit"": {
                    ""id"": ""0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c"",
                    ""tree_id"": ""f9d2a07e9488b91af2641b26b9407fe22a451433"",
                    ""distinct"": true,
                    ""message"": ""Update README.md"",
                    ""timestamp"": ""2015-05-05T19:40:15-04:00"",
                    ""url"": ""https://github.com/baxterthehacker/public-repo/commit/0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c"",
                    ""author"": {
                      ""name"": ""baxterthehacker"",
                      ""email"": ""*****@*****.**"",
                      ""username"": ""baxterthehacker""
                    },
                    ""committer"": {
                      ""name"": ""baxterthehacker"",
                      ""email"": ""*****@*****.**"",
                      ""username"": ""baxterthehacker""
                    },
                    ""added"": [

                    ],
                    ""removed"": [

                    ],
                    ""modified"": [
                      ""README.md""
                    ]
                  },
                  ""repository"": {
                    ""id"": 35129377,
                    ""name"": ""public-repo"",
                    ""full_name"": ""baxterthehacker/public-repo"",
                    ""owner"": {
                      ""name"": ""baxterthehacker"",
                      ""email"": ""*****@*****.**""
                    },
                    ""private"": false,
                    ""html_url"": ""https://github.com/baxterthehacker/public-repo"",
                    ""description"": """",
                    ""fork"": false,
                    ""url"": ""https://github.com/baxterthehacker/public-repo"",
                    ""forks_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/forks"",
                    ""keys_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"",
                    ""collaborators_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"",
                    ""teams_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/teams"",
                    ""hooks_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/hooks"",
                    ""issue_events_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"",
                    ""events_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/events"",
                    ""assignees_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"",
                    ""branches_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"",
                    ""tags_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/tags"",
                    ""blobs_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"",
                    ""git_tags_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"",
                    ""git_refs_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"",
                    ""trees_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"",
                    ""statuses_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"",
                    ""languages_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/languages"",
                    ""stargazers_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/stargazers"",
                    ""contributors_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/contributors"",
                    ""subscribers_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/subscribers"",
                    ""subscription_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/subscription"",
                    ""commits_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"",
                    ""git_commits_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"",
                    ""comments_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"",
                    ""issue_comment_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"",
                    ""contents_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"",
                    ""compare_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"",
                    ""merges_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/merges"",
                    ""archive_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"",
                    ""downloads_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/downloads"",
                    ""issues_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"",
                    ""pulls_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"",
                    ""milestones_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"",
                    ""notifications_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"",
                    ""labels_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"",
                    ""releases_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"",
                    ""created_at"": 1430869212,
                    ""updated_at"": ""2015-05-05T23:40:12Z"",
                    ""pushed_at"": 1430869217,
                    ""git_url"": ""git://github.com/baxterthehacker/public-repo.git"",
                    ""ssh_url"": ""[email protected]:baxterthehacker/public-repo.git"",
                    ""clone_url"": ""https://github.com/baxterthehacker/public-repo.git"",
                    ""svn_url"": ""https://github.com/baxterthehacker/public-repo"",
                    ""homepage"": null,
                    ""size"": 0,
                    ""stargazers_count"": 0,
                    ""watchers_count"": 0,
                    ""language"": null,
                    ""has_issues"": true,
                    ""has_downloads"": true,
                    ""has_wiki"": true,
                    ""has_pages"": true,
                    ""forks_count"": 0,
                    ""mirror_url"": null,
                    ""open_issues_count"": 0,
                    ""forks"": 0,
                    ""open_issues"": 0,
                    ""watchers"": 0,
                    ""default_branch"": ""master"",
                    ""stargazers"": 0,
                    ""master_branch"": ""master""
                  },
                  ""pusher"": {
                    ""name"": ""baxterthehacker"",
                    ""email"": ""*****@*****.**""
                  },
                  ""sender"": {
                    ""login"": ""baxterthehacker"",
                    ""id"": 6752317,
                    ""avatar_url"": ""https://avatars.githubusercontent.com/u/6752317?v=3"",
                    ""gravatar_id"": """",
                    ""url"": ""https://api.github.com/users/baxterthehacker"",
                    ""html_url"": ""https://github.com/baxterthehacker"",
                    ""followers_url"": ""https://api.github.com/users/baxterthehacker/followers"",
                    ""following_url"": ""https://api.github.com/users/baxterthehacker/following{/other_user}"",
                    ""gists_url"": ""https://api.github.com/users/baxterthehacker/gists{/gist_id}"",
                    ""starred_url"": ""https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"",
                    ""subscriptions_url"": ""https://api.github.com/users/baxterthehacker/subscriptions"",
                    ""organizations_url"": ""https://api.github.com/users/baxterthehacker/orgs"",
                    ""repos_url"": ""https://api.github.com/users/baxterthehacker/repos"",
                    ""events_url"": ""https://api.github.com/users/baxterthehacker/events{/privacy}"",
                    ""received_events_url"": ""https://api.github.com/users/baxterthehacker/received_events"",
                    ""type"": ""User"",
                    ""site_admin"": false
                  }
                }";
            #endregion
            DashboardMessageGitHub msg = new DashboardMessageGitHub(json, "push");
            Assert.AreEqual("Code", msg.Category);
            Assert.AreEqual("Code push to 'public-repo'", msg.Title);
            Assert.AreEqual("", msg.Context);
            Assert.AreEqual("baxterthehacker has pushed commits to repository 'public-repo'", msg.Message);
            Assert.AreEqual(1, msg.Details.Length);
            Assert.AreEqual("Update README.md", msg.Details[0]);
        }
Example #3
0
 public void DashboardMessageGitHubTest_PullRequest()
 {
     #region JSON DATA
     string json = @"{
       ""action"": ""opened"",
       ""number"": 1,
       ""pull_request"": {
         ""url"": ""https://api.github.com/repos/baxterthehacker/public-repo/pulls/1"",
         ""id"": 34778301,
         ""html_url"": ""https://github.com/baxterthehacker/public-repo/pull/1"",
         ""diff_url"": ""https://github.com/baxterthehacker/public-repo/pull/1.diff"",
         ""patch_url"": ""https://github.com/baxterthehacker/public-repo/pull/1.patch"",
         ""issue_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/issues/1"",
         ""number"": 1,
         ""state"": ""open"",
         ""locked"": false,
         ""title"": ""Update the README with new information"",
         ""user"": {
           ""login"": ""baxterthehacker"",
           ""id"": 6752317,
           ""avatar_url"": ""https://avatars.githubusercontent.com/u/6752317?v=3"",
           ""gravatar_id"": """",
           ""url"": ""https://api.github.com/users/baxterthehacker"",
           ""html_url"": ""https://github.com/baxterthehacker"",
           ""followers_url"": ""https://api.github.com/users/baxterthehacker/followers"",
           ""following_url"": ""https://api.github.com/users/baxterthehacker/following{/other_user}"",
           ""gists_url"": ""https://api.github.com/users/baxterthehacker/gists{/gist_id}"",
           ""starred_url"": ""https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"",
           ""subscriptions_url"": ""https://api.github.com/users/baxterthehacker/subscriptions"",
           ""organizations_url"": ""https://api.github.com/users/baxterthehacker/orgs"",
           ""repos_url"": ""https://api.github.com/users/baxterthehacker/repos"",
           ""events_url"": ""https://api.github.com/users/baxterthehacker/events{/privacy}"",
           ""received_events_url"": ""https://api.github.com/users/baxterthehacker/received_events"",
           ""type"": ""User"",
           ""site_admin"": false
         },
         ""body"": ""This is a pretty simple change that we need to pull into master."",
         ""created_at"": ""2015-05-05T23:40:27Z"",
         ""updated_at"": ""2015-05-05T23:40:27Z"",
         ""closed_at"": null,
         ""merged_at"": null,
         ""merge_commit_sha"": null,
         ""assignee"": null,
         ""milestone"": null,
         ""commits_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/pulls/1/commits"",
         ""review_comments_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/pulls/1/comments"",
         ""review_comment_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/pulls/comments{/number}"",
         ""comments_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/issues/1/comments"",
         ""statuses_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/statuses/0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c"",
         ""head"": {
           ""label"": ""baxterthehacker:changes"",
           ""ref"": ""changes"",
           ""sha"": ""0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c"",
           ""user"": {
             ""login"": ""baxterthehacker"",
             ""id"": 6752317,
             ""avatar_url"": ""https://avatars.githubusercontent.com/u/6752317?v=3"",
             ""gravatar_id"": """",
             ""url"": ""https://api.github.com/users/baxterthehacker"",
             ""html_url"": ""https://github.com/baxterthehacker"",
             ""followers_url"": ""https://api.github.com/users/baxterthehacker/followers"",
             ""following_url"": ""https://api.github.com/users/baxterthehacker/following{/other_user}"",
             ""gists_url"": ""https://api.github.com/users/baxterthehacker/gists{/gist_id}"",
             ""starred_url"": ""https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"",
             ""subscriptions_url"": ""https://api.github.com/users/baxterthehacker/subscriptions"",
             ""organizations_url"": ""https://api.github.com/users/baxterthehacker/orgs"",
             ""repos_url"": ""https://api.github.com/users/baxterthehacker/repos"",
             ""events_url"": ""https://api.github.com/users/baxterthehacker/events{/privacy}"",
             ""received_events_url"": ""https://api.github.com/users/baxterthehacker/received_events"",
             ""type"": ""User"",
             ""site_admin"": false
           },
           ""repo"": {
             ""id"": 35129377,
             ""name"": ""public-repo"",
             ""full_name"": ""baxterthehacker/public-repo"",
             ""owner"": {
               ""login"": ""baxterthehacker"",
               ""id"": 6752317,
               ""avatar_url"": ""https://avatars.githubusercontent.com/u/6752317?v=3"",
               ""gravatar_id"": """",
               ""url"": ""https://api.github.com/users/baxterthehacker"",
               ""html_url"": ""https://github.com/baxterthehacker"",
               ""followers_url"": ""https://api.github.com/users/baxterthehacker/followers"",
               ""following_url"": ""https://api.github.com/users/baxterthehacker/following{/other_user}"",
               ""gists_url"": ""https://api.github.com/users/baxterthehacker/gists{/gist_id}"",
               ""starred_url"": ""https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"",
               ""subscriptions_url"": ""https://api.github.com/users/baxterthehacker/subscriptions"",
               ""organizations_url"": ""https://api.github.com/users/baxterthehacker/orgs"",
               ""repos_url"": ""https://api.github.com/users/baxterthehacker/repos"",
               ""events_url"": ""https://api.github.com/users/baxterthehacker/events{/privacy}"",
               ""received_events_url"": ""https://api.github.com/users/baxterthehacker/received_events"",
               ""type"": ""User"",
               ""site_admin"": false
             },
             ""private"": false,
             ""html_url"": ""https://github.com/baxterthehacker/public-repo"",
             ""description"": """",
             ""fork"": false,
             ""url"": ""https://api.github.com/repos/baxterthehacker/public-repo"",
             ""forks_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/forks"",
             ""keys_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"",
             ""collaborators_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"",
             ""teams_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/teams"",
             ""hooks_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/hooks"",
             ""issue_events_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"",
             ""events_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/events"",
             ""assignees_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"",
             ""branches_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"",
             ""tags_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/tags"",
             ""blobs_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"",
             ""git_tags_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"",
             ""git_refs_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"",
             ""trees_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"",
             ""statuses_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"",
             ""languages_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/languages"",
             ""stargazers_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/stargazers"",
             ""contributors_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/contributors"",
             ""subscribers_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/subscribers"",
             ""subscription_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/subscription"",
             ""commits_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"",
             ""git_commits_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"",
             ""comments_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"",
             ""issue_comment_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"",
             ""contents_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"",
             ""compare_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"",
             ""merges_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/merges"",
             ""archive_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"",
             ""downloads_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/downloads"",
             ""issues_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"",
             ""pulls_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"",
             ""milestones_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"",
             ""notifications_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"",
             ""labels_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"",
             ""releases_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"",
             ""created_at"": ""2015-05-05T23:40:12Z"",
             ""updated_at"": ""2015-05-05T23:40:12Z"",
             ""pushed_at"": ""2015-05-05T23:40:26Z"",
             ""git_url"": ""git://github.com/baxterthehacker/public-repo.git"",
             ""ssh_url"": ""[email protected]:baxterthehacker/public-repo.git"",
             ""clone_url"": ""https://github.com/baxterthehacker/public-repo.git"",
             ""svn_url"": ""https://github.com/baxterthehacker/public-repo"",
             ""homepage"": null,
             ""size"": 0,
             ""stargazers_count"": 0,
             ""watchers_count"": 0,
             ""language"": null,
             ""has_issues"": true,
             ""has_downloads"": true,
             ""has_wiki"": true,
             ""has_pages"": true,
             ""forks_count"": 0,
             ""mirror_url"": null,
             ""open_issues_count"": 1,
             ""forks"": 0,
             ""open_issues"": 1,
             ""watchers"": 0,
             ""default_branch"": ""master""
           }
         },
         ""base"": {
           ""label"": ""baxterthehacker:master"",
           ""ref"": ""master"",
           ""sha"": ""9049f1265b7d61be4a8904a9a27120d2064dab3b"",
           ""user"": {
             ""login"": ""baxterthehacker"",
             ""id"": 6752317,
             ""avatar_url"": ""https://avatars.githubusercontent.com/u/6752317?v=3"",
             ""gravatar_id"": """",
             ""url"": ""https://api.github.com/users/baxterthehacker"",
             ""html_url"": ""https://github.com/baxterthehacker"",
             ""followers_url"": ""https://api.github.com/users/baxterthehacker/followers"",
             ""following_url"": ""https://api.github.com/users/baxterthehacker/following{/other_user}"",
             ""gists_url"": ""https://api.github.com/users/baxterthehacker/gists{/gist_id}"",
             ""starred_url"": ""https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"",
             ""subscriptions_url"": ""https://api.github.com/users/baxterthehacker/subscriptions"",
             ""organizations_url"": ""https://api.github.com/users/baxterthehacker/orgs"",
             ""repos_url"": ""https://api.github.com/users/baxterthehacker/repos"",
             ""events_url"": ""https://api.github.com/users/baxterthehacker/events{/privacy}"",
             ""received_events_url"": ""https://api.github.com/users/baxterthehacker/received_events"",
             ""type"": ""User"",
             ""site_admin"": false
           },
           ""repo"": {
             ""id"": 35129377,
             ""name"": ""public-repo"",
             ""full_name"": ""baxterthehacker/public-repo"",
             ""owner"": {
               ""login"": ""baxterthehacker"",
               ""id"": 6752317,
               ""avatar_url"": ""https://avatars.githubusercontent.com/u/6752317?v=3"",
               ""gravatar_id"": """",
               ""url"": ""https://api.github.com/users/baxterthehacker"",
               ""html_url"": ""https://github.com/baxterthehacker"",
               ""followers_url"": ""https://api.github.com/users/baxterthehacker/followers"",
               ""following_url"": ""https://api.github.com/users/baxterthehacker/following{/other_user}"",
               ""gists_url"": ""https://api.github.com/users/baxterthehacker/gists{/gist_id}"",
               ""starred_url"": ""https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"",
               ""subscriptions_url"": ""https://api.github.com/users/baxterthehacker/subscriptions"",
               ""organizations_url"": ""https://api.github.com/users/baxterthehacker/orgs"",
               ""repos_url"": ""https://api.github.com/users/baxterthehacker/repos"",
               ""events_url"": ""https://api.github.com/users/baxterthehacker/events{/privacy}"",
               ""received_events_url"": ""https://api.github.com/users/baxterthehacker/received_events"",
               ""type"": ""User"",
               ""site_admin"": false
             },
             ""private"": false,
             ""html_url"": ""https://github.com/baxterthehacker/public-repo"",
             ""description"": """",
             ""fork"": false,
             ""url"": ""https://api.github.com/repos/baxterthehacker/public-repo"",
             ""forks_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/forks"",
             ""keys_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"",
             ""collaborators_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"",
             ""teams_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/teams"",
             ""hooks_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/hooks"",
             ""issue_events_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"",
             ""events_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/events"",
             ""assignees_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"",
             ""branches_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"",
             ""tags_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/tags"",
             ""blobs_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"",
             ""git_tags_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"",
             ""git_refs_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"",
             ""trees_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"",
             ""statuses_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"",
             ""languages_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/languages"",
             ""stargazers_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/stargazers"",
             ""contributors_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/contributors"",
             ""subscribers_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/subscribers"",
             ""subscription_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/subscription"",
             ""commits_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"",
             ""git_commits_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"",
             ""comments_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"",
             ""issue_comment_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"",
             ""contents_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"",
             ""compare_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"",
             ""merges_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/merges"",
             ""archive_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"",
             ""downloads_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/downloads"",
             ""issues_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"",
             ""pulls_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"",
             ""milestones_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"",
             ""notifications_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"",
             ""labels_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"",
             ""releases_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"",
             ""created_at"": ""2015-05-05T23:40:12Z"",
             ""updated_at"": ""2015-05-05T23:40:12Z"",
             ""pushed_at"": ""2015-05-05T23:40:26Z"",
             ""git_url"": ""git://github.com/baxterthehacker/public-repo.git"",
             ""ssh_url"": ""[email protected]:baxterthehacker/public-repo.git"",
             ""clone_url"": ""https://github.com/baxterthehacker/public-repo.git"",
             ""svn_url"": ""https://github.com/baxterthehacker/public-repo"",
             ""homepage"": null,
             ""size"": 0,
             ""stargazers_count"": 0,
             ""watchers_count"": 0,
             ""language"": null,
             ""has_issues"": true,
             ""has_downloads"": true,
             ""has_wiki"": true,
             ""has_pages"": true,
             ""forks_count"": 0,
             ""mirror_url"": null,
             ""open_issues_count"": 1,
             ""forks"": 0,
             ""open_issues"": 1,
             ""watchers"": 0,
             ""default_branch"": ""master""
           }
         },
         ""_links"": {
           ""self"": {
             ""href"": ""https://api.github.com/repos/baxterthehacker/public-repo/pulls/1""
           },
           ""html"": {
             ""href"": ""https://github.com/baxterthehacker/public-repo/pull/1""
           },
           ""issue"": {
             ""href"": ""https://api.github.com/repos/baxterthehacker/public-repo/issues/1""
           },
           ""comments"": {
             ""href"": ""https://api.github.com/repos/baxterthehacker/public-repo/issues/1/comments""
           },
           ""review_comments"": {
             ""href"": ""https://api.github.com/repos/baxterthehacker/public-repo/pulls/1/comments""
           },
           ""review_comment"": {
             ""href"": ""https://api.github.com/repos/baxterthehacker/public-repo/pulls/comments{/number}""
           },
           ""commits"": {
             ""href"": ""https://api.github.com/repos/baxterthehacker/public-repo/pulls/1/commits""
           },
           ""statuses"": {
             ""href"": ""https://api.github.com/repos/baxterthehacker/public-repo/statuses/0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c""
           }
         },
         ""merged"": false,
         ""mergeable"": null,
         ""mergeable_state"": ""unknown"",
         ""merged_by"": null,
         ""comments"": 0,
         ""review_comments"": 0,
         ""commits"": 1,
         ""additions"": 1,
         ""deletions"": 1,
         ""changed_files"": 1
       },
       ""repository"": {
         ""id"": 35129377,
         ""name"": ""public-repo"",
         ""full_name"": ""baxterthehacker/public-repo"",
         ""owner"": {
           ""login"": ""baxterthehacker"",
           ""id"": 6752317,
           ""avatar_url"": ""https://avatars.githubusercontent.com/u/6752317?v=3"",
           ""gravatar_id"": """",
           ""url"": ""https://api.github.com/users/baxterthehacker"",
           ""html_url"": ""https://github.com/baxterthehacker"",
           ""followers_url"": ""https://api.github.com/users/baxterthehacker/followers"",
           ""following_url"": ""https://api.github.com/users/baxterthehacker/following{/other_user}"",
           ""gists_url"": ""https://api.github.com/users/baxterthehacker/gists{/gist_id}"",
           ""starred_url"": ""https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"",
           ""subscriptions_url"": ""https://api.github.com/users/baxterthehacker/subscriptions"",
           ""organizations_url"": ""https://api.github.com/users/baxterthehacker/orgs"",
           ""repos_url"": ""https://api.github.com/users/baxterthehacker/repos"",
           ""events_url"": ""https://api.github.com/users/baxterthehacker/events{/privacy}"",
           ""received_events_url"": ""https://api.github.com/users/baxterthehacker/received_events"",
           ""type"": ""User"",
           ""site_admin"": false
         },
         ""private"": false,
         ""html_url"": ""https://github.com/baxterthehacker/public-repo"",
         ""description"": """",
         ""fork"": false,
         ""url"": ""https://api.github.com/repos/baxterthehacker/public-repo"",
         ""forks_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/forks"",
         ""keys_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"",
         ""collaborators_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"",
         ""teams_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/teams"",
         ""hooks_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/hooks"",
         ""issue_events_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"",
         ""events_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/events"",
         ""assignees_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"",
         ""branches_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"",
         ""tags_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/tags"",
         ""blobs_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"",
         ""git_tags_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"",
         ""git_refs_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"",
         ""trees_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"",
         ""statuses_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"",
         ""languages_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/languages"",
         ""stargazers_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/stargazers"",
         ""contributors_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/contributors"",
         ""subscribers_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/subscribers"",
         ""subscription_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/subscription"",
         ""commits_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"",
         ""git_commits_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"",
         ""comments_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"",
         ""issue_comment_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"",
         ""contents_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"",
         ""compare_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"",
         ""merges_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/merges"",
         ""archive_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"",
         ""downloads_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/downloads"",
         ""issues_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"",
         ""pulls_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"",
         ""milestones_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"",
         ""notifications_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"",
         ""labels_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"",
         ""releases_url"": ""https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"",
         ""created_at"": ""2015-05-05T23:40:12Z"",
         ""updated_at"": ""2015-05-05T23:40:12Z"",
         ""pushed_at"": ""2015-05-05T23:40:26Z"",
         ""git_url"": ""git://github.com/baxterthehacker/public-repo.git"",
         ""ssh_url"": ""[email protected]:baxterthehacker/public-repo.git"",
         ""clone_url"": ""https://github.com/baxterthehacker/public-repo.git"",
         ""svn_url"": ""https://github.com/baxterthehacker/public-repo"",
         ""homepage"": null,
         ""size"": 0,
         ""stargazers_count"": 0,
         ""watchers_count"": 0,
         ""language"": null,
         ""has_issues"": true,
         ""has_downloads"": true,
         ""has_wiki"": true,
         ""has_pages"": true,
         ""forks_count"": 0,
         ""mirror_url"": null,
         ""open_issues_count"": 1,
         ""forks"": 0,
         ""open_issues"": 1,
         ""watchers"": 0,
         ""default_branch"": ""master""
       },
       ""sender"": {
         ""login"": ""baxterthehacker"",
         ""id"": 6752317,
         ""avatar_url"": ""https://avatars.githubusercontent.com/u/6752317?v=3"",
         ""gravatar_id"": """",
         ""url"": ""https://api.github.com/users/baxterthehacker"",
         ""html_url"": ""https://github.com/baxterthehacker"",
         ""followers_url"": ""https://api.github.com/users/baxterthehacker/followers"",
         ""following_url"": ""https://api.github.com/users/baxterthehacker/following{/other_user}"",
         ""gists_url"": ""https://api.github.com/users/baxterthehacker/gists{/gist_id}"",
         ""starred_url"": ""https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"",
         ""subscriptions_url"": ""https://api.github.com/users/baxterthehacker/subscriptions"",
         ""organizations_url"": ""https://api.github.com/users/baxterthehacker/orgs"",
         ""repos_url"": ""https://api.github.com/users/baxterthehacker/repos"",
         ""events_url"": ""https://api.github.com/users/baxterthehacker/events{/privacy}"",
         ""received_events_url"": ""https://api.github.com/users/baxterthehacker/received_events"",
         ""type"": ""User"",
         ""site_admin"": false
       },
       ""installation"": {
         ""id"": 234
       }
     }";
     #endregion
     DashboardMessageGitHub msg = new DashboardMessageGitHub(json, "pull_request");
     Assert.AreEqual("Code", msg.Category);
     Assert.AreEqual("Pull request in 'public-repo'", msg.Title);
     Assert.AreEqual("", msg.Context);
     Assert.AreEqual("baxterthehacker has opened pull request to public-repo branch master", msg.Message);
     Assert.AreEqual(1, msg.Details.Length);
     Assert.AreEqual("Update the README with new information", msg.Details[0]);
 }