@@ -48,6 +48,8 @@ func TestMain(m *testing.M) {
4848 DeploymentStatusEvent ,
4949 ForkEvent ,
5050 GollumEvent ,
51+ InstallationEvent ,
52+ IntegrationInstallationEvent ,
5153 IssueCommentEvent ,
5254 IssuesEvent ,
5355 LabelEvent ,
@@ -57,6 +59,7 @@ func TestMain(m *testing.M) {
5759 OrganizationEvent ,
5860 OrgBlockEvent ,
5961 PageBuildEvent ,
62+ PingEvent ,
6063 ProjectCardEvent ,
6164 ProjectColumnEvent ,
6265 ProjectEvent ,
@@ -1309,6 +1312,186 @@ func TestGollumEvent(t *testing.T) {
13091312 Equal (t , resp .StatusCode , http .StatusOK )
13101313}
13111314
1315+ func TestInstallationEvent (t * testing.T ) {
1316+
1317+ payload := `{
1318+ "action": "created",
1319+ "installation": {
1320+ "id": 80429,
1321+ "account": {
1322+ "login": "PombeirP",
1323+ "id": 138074,
1324+ "avatar_url": "https://avatars1.githubusercontent.com/u/138074?v=4",
1325+ "gravatar_id": "",
1326+ "url": "https://api.github.com/users/PombeirP",
1327+ "html_url": "https://github.com/PombeirP",
1328+ "followers_url": "https://api.github.com/users/PombeirP/followers",
1329+ "following_url": "https://api.github.com/users/PombeirP/following{/other_user}",
1330+ "gists_url": "https://api.github.com/users/PombeirP/gists{/gist_id}",
1331+ "starred_url": "https://api.github.com/users/PombeirP/starred{/owner}{/repo}",
1332+ "subscriptions_url": "https://api.github.com/users/PombeirP/subscriptions",
1333+ "organizations_url": "https://api.github.com/users/PombeirP/orgs",
1334+ "repos_url": "https://api.github.com/users/PombeirP/repos",
1335+ "events_url": "https://api.github.com/users/PombeirP/events{/privacy}",
1336+ "received_events_url": "https://api.github.com/users/PombeirP/received_events",
1337+ "type": "User",
1338+ "site_admin": false
1339+ },
1340+ "repository_selection": "selected",
1341+ "access_tokens_url": "https://api.github.com/installations/80429/access_tokens",
1342+ "repositories_url": "https://api.github.com/installation/repositories",
1343+ "html_url": "https://github.com/settings/installations/80429",
1344+ "app_id": 8157,
1345+ "target_id": 138074,
1346+ "target_type": "User",
1347+ "permissions": {
1348+ "repository_projects": "write",
1349+ "issues": "read",
1350+ "metadata": "read",
1351+ "pull_requests": "read"
1352+ },
1353+ "events": [
1354+ "pull_request"
1355+ ],
1356+ "created_at": 1516025475,
1357+ "updated_at": 1516025475,
1358+ "single_file_name": null
1359+ },
1360+ "repositories": [
1361+ {
1362+ "id": 117381220,
1363+ "name": "status-github-bot",
1364+ "full_name": "PombeirP/status-github-bot"
1365+ }
1366+ ],
1367+ "sender": {
1368+ "login": "PombeirP",
1369+ "id": 138074,
1370+ "avatar_url": "https://avatars1.githubusercontent.com/u/138074?v=4",
1371+ "gravatar_id": "",
1372+ "url": "https://api.github.com/users/PombeirP",
1373+ "html_url": "https://github.com/PombeirP",
1374+ "followers_url": "https://api.github.com/users/PombeirP/followers",
1375+ "following_url": "https://api.github.com/users/PombeirP/following{/other_user}",
1376+ "gists_url": "https://api.github.com/users/PombeirP/gists{/gist_id}",
1377+ "starred_url": "https://api.github.com/users/PombeirP/starred{/owner}{/repo}",
1378+ "subscriptions_url": "https://api.github.com/users/PombeirP/subscriptions",
1379+ "organizations_url": "https://api.github.com/users/PombeirP/orgs",
1380+ "repos_url": "https://api.github.com/users/PombeirP/repos",
1381+ "events_url": "https://api.github.com/users/PombeirP/events{/privacy}",
1382+ "received_events_url": "https://api.github.com/users/PombeirP/received_events",
1383+ "type": "User",
1384+ "site_admin": false
1385+ }
1386+ }
1387+ `
1388+
1389+ req , err := http .NewRequest ("POST" , "http://127.0.0.1:3010/webhooks" , bytes .NewBuffer ([]byte (payload )))
1390+ req .Header .Set ("Content-Type" , "application/json" )
1391+ req .Header .Set ("X-Github-Event" , "installation" )
1392+ req .Header .Set ("X-Hub-Signature" , "sha1=987338c6e5c21794ab6c258abe51284f9b1df728" )
1393+
1394+ Equal (t , err , nil )
1395+
1396+ client := & http.Client {}
1397+ resp , err := client .Do (req )
1398+ Equal (t , err , nil )
1399+
1400+ defer resp .Body .Close ()
1401+
1402+ Equal (t , resp .StatusCode , http .StatusOK )
1403+ }
1404+
1405+ func TestIntegrationInstallationEvent (t * testing.T ) {
1406+
1407+ payload := `{
1408+ "action": "created",
1409+ "installation": {
1410+ "id": 80429,
1411+ "account": {
1412+ "login": "PombeirP",
1413+ "id": 138074,
1414+ "avatar_url": "https://avatars1.githubusercontent.com/u/138074?v=4",
1415+ "gravatar_id": "",
1416+ "url": "https://api.github.com/users/PombeirP",
1417+ "html_url": "https://github.com/PombeirP",
1418+ "followers_url": "https://api.github.com/users/PombeirP/followers",
1419+ "following_url": "https://api.github.com/users/PombeirP/following{/other_user}",
1420+ "gists_url": "https://api.github.com/users/PombeirP/gists{/gist_id}",
1421+ "starred_url": "https://api.github.com/users/PombeirP/starred{/owner}{/repo}",
1422+ "subscriptions_url": "https://api.github.com/users/PombeirP/subscriptions",
1423+ "organizations_url": "https://api.github.com/users/PombeirP/orgs",
1424+ "repos_url": "https://api.github.com/users/PombeirP/repos",
1425+ "events_url": "https://api.github.com/users/PombeirP/events{/privacy}",
1426+ "received_events_url": "https://api.github.com/users/PombeirP/received_events",
1427+ "type": "User",
1428+ "site_admin": false
1429+ },
1430+ "repository_selection": "selected",
1431+ "access_tokens_url": "https://api.github.com/installations/80429/access_tokens",
1432+ "repositories_url": "https://api.github.com/installation/repositories",
1433+ "html_url": "https://github.com/settings/installations/80429",
1434+ "app_id": 8157,
1435+ "target_id": 138074,
1436+ "target_type": "User",
1437+ "permissions": {
1438+ "repository_projects": "write",
1439+ "issues": "read",
1440+ "metadata": "read",
1441+ "pull_requests": "read"
1442+ },
1443+ "events": [
1444+ "pull_request"
1445+ ],
1446+ "created_at": 1516025475,
1447+ "updated_at": 1516025475,
1448+ "single_file_name": null
1449+ },
1450+ "repositories": [
1451+ {
1452+ "id": 117381220,
1453+ "name": "status-github-bot",
1454+ "full_name": "PombeirP/status-github-bot"
1455+ }
1456+ ],
1457+ "sender": {
1458+ "login": "PombeirP",
1459+ "id": 138074,
1460+ "avatar_url": "https://avatars1.githubusercontent.com/u/138074?v=4",
1461+ "gravatar_id": "",
1462+ "url": "https://api.github.com/users/PombeirP",
1463+ "html_url": "https://github.com/PombeirP",
1464+ "followers_url": "https://api.github.com/users/PombeirP/followers",
1465+ "following_url": "https://api.github.com/users/PombeirP/following{/other_user}",
1466+ "gists_url": "https://api.github.com/users/PombeirP/gists{/gist_id}",
1467+ "starred_url": "https://api.github.com/users/PombeirP/starred{/owner}{/repo}",
1468+ "subscriptions_url": "https://api.github.com/users/PombeirP/subscriptions",
1469+ "organizations_url": "https://api.github.com/users/PombeirP/orgs",
1470+ "repos_url": "https://api.github.com/users/PombeirP/repos",
1471+ "events_url": "https://api.github.com/users/PombeirP/events{/privacy}",
1472+ "received_events_url": "https://api.github.com/users/PombeirP/received_events",
1473+ "type": "User",
1474+ "site_admin": false
1475+ }
1476+ }
1477+ `
1478+
1479+ req , err := http .NewRequest ("POST" , "http://127.0.0.1:3010/webhooks" , bytes .NewBuffer ([]byte (payload )))
1480+ req .Header .Set ("Content-Type" , "application/json" )
1481+ req .Header .Set ("X-Github-Event" , "integration_installation" )
1482+ req .Header .Set ("X-Hub-Signature" , "sha1=987338c6e5c21794ab6c258abe51284f9b1df728" )
1483+
1484+ Equal (t , err , nil )
1485+
1486+ client := & http.Client {}
1487+ resp , err := client .Do (req )
1488+ Equal (t , err , nil )
1489+
1490+ defer resp .Body .Close ()
1491+
1492+ Equal (t , resp .StatusCode , http .StatusOK )
1493+ }
1494+
13121495func TestIssueCommentEvent (t * testing.T ) {
13131496
13141497 payload := `{
@@ -2560,6 +2743,48 @@ func TestPageBuildEvent(t *testing.T) {
25602743 Equal (t , resp .StatusCode , http .StatusOK )
25612744}
25622745
2746+ func TestPingEvent (t * testing.T ) {
2747+
2748+ payload := `{
2749+ "zen": "Keep it logically awesome.",
2750+ "hook_id": 20081052,
2751+ "hook": {
2752+ "type": "App",
2753+ "id": 20081052,
2754+ "name": "web",
2755+ "active": true,
2756+ "events": [
2757+ "pull_request"
2758+ ],
2759+ "config": {
2760+ "content_type": "json",
2761+ "insecure_ssl": "0",
2762+ "secret": "********",
2763+ "url": "https://ngrok.io/webhook"
2764+ },
2765+ "updated_at": "2018-01-15T10:48:54Z",
2766+ "created_at": "2018-01-15T10:48:54Z",
2767+ "app_id": 8157
2768+ }
2769+ }
2770+ `
2771+
2772+ req , err := http .NewRequest ("POST" , "http://127.0.0.1:3010/webhooks" , bytes .NewBuffer ([]byte (payload )))
2773+ req .Header .Set ("Content-Type" , "application/json" )
2774+ req .Header .Set ("X-Github-Event" , "ping" )
2775+ req .Header .Set ("X-Hub-Signature" , "sha1=f82267eb5c6408d5986209da906747f57c11b33b" )
2776+
2777+ Equal (t , err , nil )
2778+
2779+ client := & http.Client {}
2780+ resp , err := client .Do (req )
2781+ Equal (t , err , nil )
2782+
2783+ defer resp .Body .Close ()
2784+
2785+ Equal (t , resp .StatusCode , http .StatusOK )
2786+ }
2787+
25632788func TestProjectCardEvent (t * testing.T ) {
25642789
25652790 payload := `{
0 commit comments