github-payload 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. data/.gitignore +18 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE.md +22 -0
  4. data/README.md +25 -0
  5. data/Rakefile +10 -0
  6. data/github-payload.gemspec +26 -0
  7. data/lib/github/payload.rb +14 -0
  8. data/lib/github/payload/formatter.rb +65 -0
  9. data/lib/github/payload/formatter/create_event.rb +21 -0
  10. data/lib/github/payload/formatter/delete_event.rb +21 -0
  11. data/lib/github/payload/formatter/issue_comment_event.rb +21 -0
  12. data/lib/github/payload/formatter/issues_event.rb +9 -0
  13. data/lib/github/payload/formatter/public_event.rb +21 -0
  14. data/lib/github/payload/formatter/pull_request_event.rb +9 -0
  15. data/lib/github/payload/formatter/push_event.rb +9 -0
  16. data/lib/github/payload/helpers.rb +10 -0
  17. data/lib/github/payload/helpers/actions.rb +15 -0
  18. data/lib/github/payload/helpers/issues.rb +42 -0
  19. data/lib/github/payload/helpers/meta.rb +26 -0
  20. data/lib/github/payload/helpers/pull_request.rb +52 -0
  21. data/lib/github/payload/helpers/push.rb +230 -0
  22. data/lib/github/payload/version.rb +5 -0
  23. data/test/data_test.rb +107 -0
  24. data/test/fixtures/commit_comment_comment.json +143 -0
  25. data/test/fixtures/create_branch.json +117 -0
  26. data/test/fixtures/delete_branch.json +115 -0
  27. data/test/fixtures/issue_comment_created.json +185 -0
  28. data/test/fixtures/issues_closed.json +158 -0
  29. data/test/fixtures/issues_opened.json +158 -0
  30. data/test/fixtures/member_added.json +132 -0
  31. data/test/fixtures/public.json +113 -0
  32. data/test/fixtures/pull_request_closed.json +414 -0
  33. data/test/fixtures/pull_request_opened.json +397 -0
  34. data/test/fixtures/pull_request_review_comment_comment.json +157 -0
  35. data/test/fixtures/push_created_forced.json +75 -0
  36. data/test/fixtures/push_deleted_forced.json +49 -0
  37. data/test/fixtures/push_event.json +99 -0
  38. data/test/push_test.rb +142 -0
  39. data/test/test_helper.rb +48 -0
  40. metadata +182 -0
@@ -0,0 +1,75 @@
1
+ {
2
+ "payload": {
3
+ "ref": "refs/heads/logo",
4
+ "after": "de034075c40d456c85d92a3be2958ab36f914682",
5
+ "before": "0000000000000000000000000000000000000000",
6
+ "created": true,
7
+ "deleted": false,
8
+ "forced": true,
9
+ "base_ref": "refs/heads/master",
10
+ "compare": "https://github.com/atmos/test/compare/logo",
11
+ "commits": [
12
+
13
+ ],
14
+ "head_commit": {
15
+ "id": "de034075c40d456c85d92a3be2958ab36f914682",
16
+ "distinct": true,
17
+ "message": "YeaHAHAahah",
18
+ "timestamp": "2013-06-06T23:48:01-07:00",
19
+ "url": "https://github.com/atmos/test/commit/de034075c40d456c85d92a3be2958ab36f914682",
20
+ "author": {
21
+ "name": "Corey Donohoe",
22
+ "email": "atmos@atmos.org",
23
+ "username": "atmos"
24
+ },
25
+ "committer": {
26
+ "name": "Corey Donohoe",
27
+ "email": "atmos@atmos.org",
28
+ "username": "atmos"
29
+ },
30
+ "added": [
31
+ "README.md"
32
+ ],
33
+ "removed": [
34
+
35
+ ],
36
+ "modified": [
37
+
38
+ ]
39
+ },
40
+ "repository": {
41
+ "id": 10544626,
42
+ "name": "test",
43
+ "url": "https://github.com/atmos/test",
44
+ "description": "",
45
+ "watchers": 0,
46
+ "stargazers": 0,
47
+ "forks": 0,
48
+ "fork": false,
49
+ "size": 112,
50
+ "owner": {
51
+ "name": "atmos",
52
+ "email": "atmos@atmos.org"
53
+ },
54
+ "private": true,
55
+ "open_issues": 1,
56
+ "has_issues": true,
57
+ "has_downloads": true,
58
+ "has_wiki": true,
59
+ "created_at": 1370590052,
60
+ "pushed_at": 1370590164,
61
+ "master_branch": "master"
62
+ },
63
+ "pusher": {
64
+ "name": "fakeatmos",
65
+ "email": "corey+fakeatmos@github.com"
66
+ }
67
+ },
68
+ "event": "push",
69
+ "config": {
70
+ "url": "https://campfire-relaay.herokuapp.com",
71
+ "content_type": "json",
72
+ "secret": "563eb98bb765b5c048b9bbd1f4611b2c2beafc1c8fb3678b"
73
+ },
74
+ "guid": "fa2a6808-cf43-11e2-960a-64dd6f41e218"
75
+ }
@@ -0,0 +1,49 @@
1
+ {
2
+ "payload": {
3
+ "ref": "refs/heads/logo",
4
+ "after": "0000000000000000000000000000000000000000",
5
+ "before": "dcbb4e731b9588903d1fdda5131ab6125e7bce31",
6
+ "created": false,
7
+ "deleted": true,
8
+ "forced": true,
9
+ "compare": "https://github.com/atmos/test/compare/dcbb4e731b95...000000000000",
10
+ "commits": [
11
+
12
+ ],
13
+ "head_commit": null,
14
+ "repository": {
15
+ "id": 10544626,
16
+ "name": "test",
17
+ "url": "https://github.com/atmos/test",
18
+ "description": "",
19
+ "watchers": 0,
20
+ "stargazers": 0,
21
+ "forks": 0,
22
+ "fork": false,
23
+ "size": 112,
24
+ "owner": {
25
+ "name": "atmos",
26
+ "email": "atmos@atmos.org"
27
+ },
28
+ "private": true,
29
+ "open_issues": 1,
30
+ "has_issues": true,
31
+ "has_downloads": true,
32
+ "has_wiki": true,
33
+ "created_at": 1370590052,
34
+ "pushed_at": 1370590343,
35
+ "master_branch": "master"
36
+ },
37
+ "pusher": {
38
+ "name": "fakeatmos",
39
+ "email": "corey+fakeatmos@github.com"
40
+ }
41
+ },
42
+ "event": "push",
43
+ "config": {
44
+ "url": "https://campfire-relaay.herokuapp.com",
45
+ "content_type": "json",
46
+ "secret": "563eb98bb765b5c048b9bbd1f4611b2c2beafc1c8fb3678b"
47
+ },
48
+ "guid": "650c0870-cf44-11e2-8e84-448a4467b0e4"
49
+ }
@@ -0,0 +1,99 @@
1
+ {
2
+ "payload": {
3
+ "ref": "refs/heads/master",
4
+ "after": "12c8e95fe799c4545d932ee5245ef2a53735d1ae",
5
+ "before": "954f0301be82b385b3c2d0aff68caeb650d3e511",
6
+ "created": false,
7
+ "deleted": false,
8
+ "forced": false,
9
+ "compare": "https://github.com/atmos/test/compare/954f0301be82...12c8e95fe799",
10
+ "commits": [
11
+ {
12
+ "id": "12c8e95fe799c4545d932ee5245ef2a53735d1ae",
13
+ "distinct": true,
14
+ "message": "Update README.md",
15
+ "timestamp": "2013-06-07T00:37:40-07:00",
16
+ "url": "https://github.com/atmos/test/commit/12c8e95fe799c4545d932ee5245ef2a53735d1ae",
17
+ "author": {
18
+ "name": "Corey Donohoe",
19
+ "email": "atmos@atmos.org",
20
+ "username": "atmos"
21
+ },
22
+ "committer": {
23
+ "name": "Corey Donohoe",
24
+ "email": "atmos@atmos.org",
25
+ "username": "atmos"
26
+ },
27
+ "added": [
28
+
29
+ ],
30
+ "removed": [
31
+
32
+ ],
33
+ "modified": [
34
+ "README.md"
35
+ ]
36
+ }
37
+ ],
38
+ "head_commit": {
39
+ "id": "12c8e95fe799c4545d932ee5245ef2a53735d1ae",
40
+ "distinct": true,
41
+ "message": "Update README.md",
42
+ "timestamp": "2013-06-07T00:37:40-07:00",
43
+ "url": "https://github.com/atmos/test/commit/12c8e95fe799c4545d932ee5245ef2a53735d1ae",
44
+ "author": {
45
+ "name": "Corey Donohoe",
46
+ "email": "atmos@atmos.org",
47
+ "username": "atmos"
48
+ },
49
+ "committer": {
50
+ "name": "Corey Donohoe",
51
+ "email": "atmos@atmos.org",
52
+ "username": "atmos"
53
+ },
54
+ "added": [
55
+
56
+ ],
57
+ "removed": [
58
+
59
+ ],
60
+ "modified": [
61
+ "README.md"
62
+ ]
63
+ },
64
+ "repository": {
65
+ "id": 10544626,
66
+ "name": "test",
67
+ "url": "https://github.com/atmos/test",
68
+ "description": "",
69
+ "watchers": 0,
70
+ "stargazers": 0,
71
+ "forks": 0,
72
+ "fork": false,
73
+ "size": 112,
74
+ "owner": {
75
+ "name": "atmos",
76
+ "email": "atmos@atmos.org"
77
+ },
78
+ "private": true,
79
+ "open_issues": 0,
80
+ "has_issues": true,
81
+ "has_downloads": true,
82
+ "has_wiki": true,
83
+ "created_at": 1370590052,
84
+ "pushed_at": 1370590660,
85
+ "master_branch": "master"
86
+ },
87
+ "pusher": {
88
+ "name": "atmos",
89
+ "email": "atmos@atmos.org"
90
+ }
91
+ },
92
+ "event": "push",
93
+ "config": {
94
+ "url": "https://campfire-relaay.herokuapp.com",
95
+ "content_type": "json",
96
+ "secret": "563eb98bb765b5c048b9bbd1f4611b2c2beafc1c8fb3678b"
97
+ },
98
+ "guid": "2247fdea-cf45-11e2-806d-e92b22013821"
99
+ }
@@ -0,0 +1,142 @@
1
+ require File.expand_path('../test_helper', __FILE__)
2
+
3
+ class PushTest < Formatter::TestCase
4
+ include GitHub::Payload::Helpers::Push
5
+ alias :base_payload :payload
6
+ attr_reader :payload
7
+
8
+ def setup
9
+ @payload = base_payload
10
+ end
11
+
12
+ def test_create_tag
13
+ no_distinct_commits!
14
+ payload.merge!(
15
+ 'ref' => 'refs/tags/v1.2.3',
16
+ 'created' => true
17
+ )
18
+
19
+ assert_equal true, tag?
20
+ assert_equal true, created?
21
+ assert_equal 'v1.2.3', tag_name
22
+ assert_equal '[grit] rtomayko tagged v1.2.3 at a47fd41', summary_message
23
+ assert_match '/commits/v1.2.3', summary_url
24
+ end
25
+
26
+ def test_create_tag_with_base
27
+ no_distinct_commits!
28
+ payload.merge!(
29
+ 'ref' => 'refs/tags/v2.3.4',
30
+ 'before' => '0'*40,
31
+ 'base_ref' => 'refs/heads/master'
32
+ )
33
+
34
+ assert_equal true, created?
35
+ assert_equal '[grit] rtomayko tagged v2.3.4 at master', summary_message
36
+ end
37
+
38
+ def test_create_branch_with_commits
39
+ payload.merge!(
40
+ 'ref' => 'refs/heads/new-feature',
41
+ 'created' => true
42
+ )
43
+
44
+ assert_equal '[grit] rtomayko created new-feature (+3 new commits)', summary_message
45
+ assert_match '/compare/', summary_url
46
+ end
47
+
48
+ def test_create_branch_without_commits
49
+ no_distinct_commits!
50
+ payload.merge!(
51
+ 'ref' => 'refs/heads/new-feature',
52
+ 'created' => true
53
+ )
54
+
55
+ assert_equal '[grit] rtomayko created new-feature at a47fd41', summary_message
56
+ assert_match '/commits/new-feature', summary_url
57
+ end
58
+
59
+ def test_create_branch_from_base
60
+ one_distinct_commit!
61
+ payload.merge!(
62
+ 'ref' => 'refs/heads/new-feature',
63
+ 'base_ref' => 'refs/heads/master',
64
+ 'created' => true
65
+ )
66
+
67
+ assert_equal '[grit] rtomayko created new-feature from master (+1 new commit)', summary_message
68
+ end
69
+
70
+ def test_force_push
71
+ payload.merge!(
72
+ 'ref' => 'refs/heads/production',
73
+ 'forced' => true,
74
+ 'pusher' => {'name' => 'hubot'}
75
+ )
76
+
77
+ assert_equal '[grit] hubot force-pushed production from 4c8124f to a47fd41', summary_message
78
+ assert_match '/commits/production', summary_url
79
+ end
80
+
81
+ def test_delete_branch
82
+ payload.merge!(
83
+ 'ref' => 'refs/heads/legacy-code',
84
+ 'deleted' => true,
85
+ 'after' => '0'*40
86
+ )
87
+
88
+ assert_equal '[grit] rtomayko deleted legacy-code at 4c8124f', summary_message
89
+ assert_match '/commit/4c8124f', summary_url
90
+ end
91
+
92
+ def test_merge_from_base
93
+ no_distinct_commits!
94
+ payload.merge!(
95
+ 'base_ref' => 'refs/tags/refactor'
96
+ )
97
+
98
+ assert_equal '[grit] rtomayko merged refactor into master', summary_message
99
+ assert_match '/compare/', summary_url
100
+ end
101
+
102
+ def test_merge_without_base
103
+ no_distinct_commits!
104
+
105
+ assert_equal '[grit] rtomayko fast-forwarded master from 4c8124f to a47fd41', summary_message
106
+ assert_match '/compare/', summary_url
107
+ end
108
+
109
+ def test_push_multiple_commits
110
+ assert_equal '[grit] rtomayko pushed 3 new commits to master', summary_message
111
+ assert_match '/compare/', summary_url
112
+ end
113
+
114
+ def test_push_one_commit
115
+ one_distinct_commit!
116
+ payload.merge!(
117
+ 'ref' => 'refs/heads/posix-spawn'
118
+ )
119
+
120
+ assert_equal '[grit] rtomayko pushed 1 new commit to posix-spawn', summary_message
121
+ assert_match '/commit/', summary_url
122
+ end
123
+
124
+ def test_push_without_commits
125
+ payload.merge!(
126
+ 'commits' => []
127
+ )
128
+
129
+ assert_equal '[grit] rtomayko pushed nothing', summary_message
130
+ end
131
+
132
+ private
133
+
134
+ def no_distinct_commits!
135
+ payload['commits'].map{ |c| c['distinct'] = false }
136
+ end
137
+
138
+ def one_distinct_commit!
139
+ no_distinct_commits!
140
+ payload['commits'].first['distinct'] = true
141
+ end
142
+ end
@@ -0,0 +1,48 @@
1
+ ENV['RAILS_ENV'] ||= 'test'
2
+ require 'simplecov'
3
+ SimpleCov.start
4
+
5
+ require 'test/unit'
6
+ require 'pp'
7
+ $: << File.expand_path("../../lib", __FILE__)
8
+ puts $:.inspect
9
+
10
+ require 'github/payload'
11
+ require 'yajl'
12
+ require 'pry'
13
+ module Formatter; end
14
+
15
+ class Formatter::TestCase < Test::Unit::TestCase
16
+ def test_default
17
+ end
18
+
19
+ def basic_auth(user, pass)
20
+ "Basic " + ["#{user}:#{pass}"].pack("m*").strip
21
+ end
22
+
23
+ def fixture_files
24
+ @fixture_files ||= Dir["test/fixtures/*.json"]
25
+ end
26
+
27
+ def load_fixture(name)
28
+ file = fixture_files.find { |f| f =~ /#{name}/ }
29
+ Yajl.load(File.read(file))
30
+ end
31
+
32
+ def push_payload
33
+ GitHub::Payload::Helpers::Push.sample_payload
34
+ end
35
+ alias payload push_payload
36
+
37
+ def pull_payload
38
+ GitHub::Payload::Helpers::PullRequest.sample_payload
39
+ end
40
+
41
+ def issues_payload
42
+ GitHub::Payload::Helpers::Issues.sample_payload
43
+ end
44
+
45
+ def basic_payload
46
+ GitHub::Payload::Helpers::Meta.sample_payload
47
+ end
48
+ end
metadata ADDED
@@ -0,0 +1,182 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: github-payload
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Corey Donohoe
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-06-10 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: pry
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: simplecov
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: bundler
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '1.3'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '1.3'
78
+ - !ruby/object:Gem::Dependency
79
+ name: yajl-ruby
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ description: Summarize GitHub Service Payloads easily
95
+ email:
96
+ - atmos@atmos.org
97
+ executables: []
98
+ extensions: []
99
+ extra_rdoc_files: []
100
+ files:
101
+ - .gitignore
102
+ - Gemfile
103
+ - LICENSE.md
104
+ - README.md
105
+ - Rakefile
106
+ - github-payload.gemspec
107
+ - lib/github/payload.rb
108
+ - lib/github/payload/formatter.rb
109
+ - lib/github/payload/formatter/create_event.rb
110
+ - lib/github/payload/formatter/delete_event.rb
111
+ - lib/github/payload/formatter/issue_comment_event.rb
112
+ - lib/github/payload/formatter/issues_event.rb
113
+ - lib/github/payload/formatter/public_event.rb
114
+ - lib/github/payload/formatter/pull_request_event.rb
115
+ - lib/github/payload/formatter/push_event.rb
116
+ - lib/github/payload/helpers.rb
117
+ - lib/github/payload/helpers/actions.rb
118
+ - lib/github/payload/helpers/issues.rb
119
+ - lib/github/payload/helpers/meta.rb
120
+ - lib/github/payload/helpers/pull_request.rb
121
+ - lib/github/payload/helpers/push.rb
122
+ - lib/github/payload/version.rb
123
+ - test/data_test.rb
124
+ - test/fixtures/commit_comment_comment.json
125
+ - test/fixtures/create_branch.json
126
+ - test/fixtures/delete_branch.json
127
+ - test/fixtures/issue_comment_created.json
128
+ - test/fixtures/issues_closed.json
129
+ - test/fixtures/issues_opened.json
130
+ - test/fixtures/member_added.json
131
+ - test/fixtures/public.json
132
+ - test/fixtures/pull_request_closed.json
133
+ - test/fixtures/pull_request_opened.json
134
+ - test/fixtures/pull_request_review_comment_comment.json
135
+ - test/fixtures/push_created_forced.json
136
+ - test/fixtures/push_deleted_forced.json
137
+ - test/fixtures/push_event.json
138
+ - test/push_test.rb
139
+ - test/test_helper.rb
140
+ homepage: https://github.com/atmos/github-payload
141
+ licenses:
142
+ - MIT
143
+ post_install_message:
144
+ rdoc_options: []
145
+ require_paths:
146
+ - lib
147
+ required_ruby_version: !ruby/object:Gem::Requirement
148
+ none: false
149
+ requirements:
150
+ - - ! '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ required_rubygems_version: !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ! '>='
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ requirements: []
160
+ rubyforge_project:
161
+ rubygems_version: 1.8.23
162
+ signing_key:
163
+ specification_version: 3
164
+ summary: Cargo Cult your GitHub service payload formats
165
+ test_files:
166
+ - test/data_test.rb
167
+ - test/fixtures/commit_comment_comment.json
168
+ - test/fixtures/create_branch.json
169
+ - test/fixtures/delete_branch.json
170
+ - test/fixtures/issue_comment_created.json
171
+ - test/fixtures/issues_closed.json
172
+ - test/fixtures/issues_opened.json
173
+ - test/fixtures/member_added.json
174
+ - test/fixtures/public.json
175
+ - test/fixtures/pull_request_closed.json
176
+ - test/fixtures/pull_request_opened.json
177
+ - test/fixtures/pull_request_review_comment_comment.json
178
+ - test/fixtures/push_created_forced.json
179
+ - test/fixtures/push_deleted_forced.json
180
+ - test/fixtures/push_event.json
181
+ - test/push_test.rb
182
+ - test/test_helper.rb