github-payload 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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