magnum-payload 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
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