magnum-payload 0.3.1 → 0.3.2

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a93c18d82f5039aabc7a14c75291693117f92b6d
4
+ data.tar.gz: 9f6d4a32fe5b2b047e4f178bf172ff7c056f0c86
5
+ SHA512:
6
+ metadata.gz: b8f22f02913bb97c4f030ad0da10d95476c01d595aa952c2426ec873fe5aaab786232fa3e48c7fe786b951b0e393a773bd4ef8b6cca028e447f2b956b204c436
7
+ data.tar.gz: 5ff86b1468c19eae47943c59b52d56f464443e4254237affa3fbd2cb5e13f44bf3ade649b629631b6aac203043e3ba666e74692e504df0be3894cd6c5ab622f9
data/README.md CHANGED
@@ -38,9 +38,9 @@ Example:
38
38
  require 'magnum/payload'
39
39
 
40
40
  # Shorthand method to parse payload
41
- Magnum::Payload.parse('github', 'JSON data') # => Magnum::Payload::Github
42
- Magnum::Payload.parse('bitbucket', 'JSON data') # => Magnum::Payload::Bitbucket
43
- Magnum::Payload.parse('gitlab', 'JSON data') # => Magnum::Payload::Bitbucket
41
+ Magnum::Payload.parse('github', 'JSON') # => Magnum::Payload::Github
42
+ Magnum::Payload.parse('bitbucket', 'JSON') # => Magnum::Payload::Bitbucket
43
+ Magnum::Payload.parse('gitlab', 'JSON') # => Magnum::Payload::Gitlab
44
44
 
45
45
  # Or directly initialize a class
46
46
  payload = Magnum::Payload::Github.new('JSON data')
@@ -89,11 +89,20 @@ To execute test suite run:
89
89
  rake test
90
90
  ```
91
91
 
92
+ ## Contact
93
+
94
+ Magnum CI
95
+
96
+ - [https://magnum-ci.com](https://magnum-ci.com)
97
+ - [https://github.com/magnumci](https://github.com/magnumci)
98
+ - [https://twitter.com/ci_magnum](https://twitter.com/ci_magnum)
99
+ - [support@magnum-ci.com](mailto:support@magnum-ci.com)
100
+
92
101
  ## License
93
102
 
94
103
  MIT License
95
104
 
96
- Copyright (c) 2013 Magnum CI, Dan Sosedoff <dan.sosedoff@gmail.com>
105
+ Copyright (c) 2013 Magnum CI
97
106
 
98
107
  Permission is hereby granted, free of charge, to any person obtaining a copy of
99
108
  this software and associated documentation files (the "Software"), to deal in
@@ -1,6 +1,10 @@
1
1
  module Magnum
2
2
  class Payload::Bitbucket < Payload::Base
3
3
  def parse!
4
+ if data.commits.nil? || data.commits.empty?
5
+ raise Magnum::Payload::PayloadError, "Payload has no commits"
6
+ end
7
+
4
8
  commit = Hashr.new(data.commits.last)
5
9
 
6
10
  branch = commit.branch || commit.branches.first || 'none'
@@ -1,5 +1,5 @@
1
1
  module Magnum
2
2
  module Payload
3
- VERSION = '0.3.1'
3
+ VERSION = '0.3.2'
4
4
  end
5
5
  end
@@ -2,6 +2,8 @@ require 'magnum/payload/version'
2
2
 
3
3
  module Magnum
4
4
  module Payload
5
+ SOURCES = %w(custom github gitlab gitslice bitbucket beanstalk)
6
+
5
7
  class ParseError < StandardError ; end
6
8
  class PayloadError < StandardError ; end
7
9
 
@@ -14,11 +16,17 @@ module Magnum
14
16
  autoload :Beanstalk, 'magnum/payload/beanstalk'
15
17
  autoload :MessageParser, 'magnum/payload/message_parser'
16
18
 
19
+ def self.valid_source?(source)
20
+ SOURCES.include?(source.to_s)
21
+ end
22
+
17
23
  def self.parse(source, payload)
24
+ unless valid_source?(source)
25
+ raise PayloadError, "Invalid payload type: #{source}"
26
+ end
27
+
18
28
  klass = Magnum::Payload.const_get(source.to_s.capitalize)
19
29
  klass.new(payload)
20
- rescue NameError
21
- raise PayloadError, "Invalid payload type: #{source}"
22
30
  end
23
31
  end
24
32
  end
@@ -0,0 +1,16 @@
1
+ {
2
+ "repository": {
3
+ "website": "http://www.mysite.com/",
4
+ "fork": false,
5
+ "name": "repository",
6
+ "scm": "git",
7
+ "owner": "username",
8
+ "absolute_url": "/username/repository/",
9
+ "slug": "minestore",
10
+ "is_private": true
11
+ },
12
+ "truncated": false,
13
+ "commits": [],
14
+ "canon_url": "https://bitbucket.org",
15
+ "user": "username"
16
+ }
@@ -35,6 +35,15 @@ describe Magnum::Payload::Bitbucket do
35
35
  it 'sets compare url' do
36
36
  payload.compare_url.should eq 'https://bitbucket.org/sosedoff/test1/compare/e15c6013c0f6232153e53b003b97da51d338da3a..f15566c42759198fd32a70963d2509f3f8309586'
37
37
  end
38
+
39
+ context "that does not have commits" do
40
+ let(:data) { fixture("bitbucket/git_no_commits.json") }
41
+
42
+ it "raises PayloadError exception" do
43
+ expect { Magnum::Payload::Bitbucket.new(data) }.
44
+ to raise_error Magnum::Payload::PayloadError, "Payload has no commits"
45
+ end
46
+ end
38
47
  end
39
48
 
40
49
  context 'with mercurial payload' do
data/spec/payload_spec.rb CHANGED
@@ -1,6 +1,21 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Magnum::Payload do
4
+ describe ".valid_source?" do
5
+ it "returns true if valid" do
6
+ expect(Magnum::Payload.valid_source?("github")).to eq true
7
+ expect(Magnum::Payload.valid_source?("gitlab")).to eq true
8
+ expect(Magnum::Payload.valid_source?("gitslice")).to eq true
9
+ expect(Magnum::Payload.valid_source?("bitbucket")).to eq true
10
+ expect(Magnum::Payload.valid_source?("beanstalk")).to eq true
11
+ expect(Magnum::Payload.valid_source?("custom")).to eq true
12
+ end
13
+
14
+ it "returns false if not valid" do
15
+ expect(Magnum::Payload.valid_source?("foobar")).to eq false
16
+ end
17
+ end
18
+
4
19
  describe '.parse' do
5
20
  it 'returns payload instance for github' do
6
21
  payload = Magnum::Payload.parse('github', fixture('github.json'))
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: magnum-payload
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
5
- prerelease:
4
+ version: 0.3.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Dan Sosedoff
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-07-24 00:00:00.000000000 Z
11
+ date: 2013-08-24 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rspec
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: simplecov
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ~>
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ~>
60
53
  - !ruby/object:Gem::Version
@@ -62,33 +55,29 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: json
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: '1.8'
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: '1.8'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: hashr
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :runtime
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - '>='
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  description: Allows to parse code payloads from Github, Bitbucket and many more
@@ -120,6 +109,7 @@ files:
120
109
  - spec/fixtures/beanstalk/hg.json
121
110
  - spec/fixtures/beanstalk/svn.json
122
111
  - spec/fixtures/bitbucket/git.json
112
+ - spec/fixtures/bitbucket/git_no_commits.json
123
113
  - spec/fixtures/bitbucket/hg.json
124
114
  - spec/fixtures/github.json
125
115
  - spec/fixtures/github/deleted.json
@@ -142,39 +132,33 @@ files:
142
132
  homepage: https://github.com/magnumci/magnum-payload
143
133
  licenses:
144
134
  - MIT
135
+ metadata: {}
145
136
  post_install_message:
146
137
  rdoc_options: []
147
138
  require_paths:
148
139
  - lib
149
140
  required_ruby_version: !ruby/object:Gem::Requirement
150
- none: false
151
141
  requirements:
152
- - - ! '>='
142
+ - - '>='
153
143
  - !ruby/object:Gem::Version
154
144
  version: '0'
155
- segments:
156
- - 0
157
- hash: 3727367032317050001
158
145
  required_rubygems_version: !ruby/object:Gem::Requirement
159
- none: false
160
146
  requirements:
161
- - - ! '>='
147
+ - - '>='
162
148
  - !ruby/object:Gem::Version
163
149
  version: '0'
164
- segments:
165
- - 0
166
- hash: 3727367032317050001
167
150
  requirements: []
168
151
  rubyforge_project:
169
- rubygems_version: 1.8.25
152
+ rubygems_version: 2.0.5
170
153
  signing_key:
171
- specification_version: 3
154
+ specification_version: 4
172
155
  summary: Code payload parser
173
156
  test_files:
174
157
  - spec/fixtures/beanstalk/git.json
175
158
  - spec/fixtures/beanstalk/hg.json
176
159
  - spec/fixtures/beanstalk/svn.json
177
160
  - spec/fixtures/bitbucket/git.json
161
+ - spec/fixtures/bitbucket/git_no_commits.json
178
162
  - spec/fixtures/bitbucket/hg.json
179
163
  - spec/fixtures/github.json
180
164
  - spec/fixtures/github/deleted.json