messagebird 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 240689840887a7c3b612574550238b5533abc55d
4
- data.tar.gz: 7b2fa0ea5944c30fd8ee66ef14ecd94645c3c756
3
+ metadata.gz: f5884d21d68ea0f75197081e449a185b223de84c
4
+ data.tar.gz: 08c4d01e03dc0a66ecf52546faa44be8269995d9
5
5
  SHA512:
6
- metadata.gz: 567700f37be1dc95e5acb310a1cf625404c0719a1dfd5caea4a56e1dfed2240bbef53109f85213361020740db8fe22cf1b290d1801d2005a6913513607a9f3b6
7
- data.tar.gz: f4c0029181bdee661cc75726a00dec082d96e8933e4f10fade190137a8e26630fd1cfc05d76e20296683bcb7180e10936f26df89b109048bd309cff9e2a9e9a8
6
+ metadata.gz: 88c3936162b49a6c835abfa08a5f733e12ed4b95311a364ceec1979fd730851444a8c948921f6922e20400ee8ec96d9d7ffde9ed2a71b64d66800845e6a70ad0
7
+ data.tar.gz: a03a8b13286a27194aed77f4556d9657caa6cfccc9bf6fe418d79f54bca27619e69a0cc498831ea4c1a7e7d5cf7063ff6d89ac4a7a2df6f8f53f9598e3f0d0a4
data/.travis.yml CHANGED
@@ -8,22 +8,6 @@ rvm:
8
8
  - 2.0.0
9
9
  - 2.1.0
10
10
 
11
- gemfile:
12
- - Gemfile
13
- - Gemfile.1.8.7
14
-
15
11
  matrix:
16
- fast_finish: true
17
-
18
12
  allow_failures:
19
13
  - rvm: 2.1.0
20
-
21
- exclude:
22
- - rvm: 1.8.7
23
- gemfile: Gemfile
24
- - rvm: 1.9.3
25
- gemfile: Gemfile.1.8.7
26
- - rvm: 2.0.0
27
- gemfile: Gemfile.1.8.7
28
- - rvm: 2.1.0
29
- gemfile: Gemfile.1.8.7
data/CHANGES.md ADDED
@@ -0,0 +1,20 @@
1
+ 0.1.3
2
+ -----------
3
+ - Sender_ID is now validated. Valid formats are:
4
+ - 11 alphanumeric characters
5
+ - telephone number string consisting of "+" + 11 numbers, e.g. "+31612345678"
6
+
7
+
8
+ 0.1.2
9
+ -----------
10
+ - Ensure 1.8.7 compatibility
11
+
12
+
13
+ 0.1.1
14
+ -----------
15
+ - Various small fixes
16
+
17
+
18
+ 0.1.0
19
+ -----------
20
+ - First release
data/Gemfile CHANGED
@@ -1,13 +1,19 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  group :test do
4
- gem 'bundler', '~> 1.0'
4
+ gem 'bundler', '~> 1.0'
5
5
  gem 'rake'
6
- gem 'minitest', :require => false
7
- gem 'rr', :require => false
8
- gem 'coveralls', :require => false
6
+ gem 'minitest', :require => false
7
+ gem 'rr', :require => false
9
8
  end
10
9
 
11
- group :development do
12
- gem 'jeweler', '~> 2.0.0', :require => false
10
+ platform :ruby_19, :ruby_20, :ruby_21 do
11
+ group :test do
12
+ gem 'coveralls', :require => false
13
+ end
14
+
15
+ group :development do
16
+ gem 'jeweler', '~> 2.0.0', :require => false
17
+ end
13
18
  end
19
+
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/messagebird.png)](http://badge.fury.io/rb/messagebird)
2
- [![Code Climate](https://codeclimate.com/github/nedap/messagebird-sms-api-ruby.png)](https://codeclimate.com/github/nedap/messagebird-sms-api-ruby)
3
- [![Coverage Status](https://coveralls.io/repos/nedap/messagebird-sms-api-ruby/badge.png?branch=master)](https://coveralls.io/r/nedap/messagebird-sms-api-ruby?branch=master)
4
- [![Build Status](https://travis-ci.org/nedap/messagebird-sms-api-ruby.png?branch=master)](https://travis-ci.org/nedap/messagebird-sms-api-ruby)
2
+ [![Code Climate](https://codeclimate.com/github/blaet/messagebird-sms-api-ruby.png)](https://codeclimate.com/github/blaet/messagebird-sms-api-ruby)
3
+ [![Coverage Status](https://coveralls.io/repos/blaet/messagebird-sms-api-ruby/badge.png?branch=master)](https://coveralls.io/r/blaet/messagebird-sms-api-ruby?branch=master)
4
+ [![Build Status](https://travis-ci.org/blaet/messagebird-sms-api-ruby.png?branch=master)](https://travis-ci.org/blaet/messagebird-sms-api-ruby)
5
5
 
6
6
  # MessageBird SMS API for Ruby
7
7
  Implementation of the MessageBird SMS API for Ruby.
data/Rakefile CHANGED
@@ -17,13 +17,12 @@ require 'rake'
17
17
  begin
18
18
  require 'jeweler'
19
19
  Jeweler::Tasks.new do |gem|
20
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
21
20
  gem.name = "messagebird"
22
- gem.homepage = "http://github.com/nedap/messagebird-sms-api-ruby"
21
+ gem.homepage = "http://github.com/blaet/messagebird-sms-api-ruby"
23
22
  gem.license = "MIT"
24
23
  gem.summary = %Q{MessageBird API for Ruby}
25
- gem.description = %Q{Implementation of the MessageBird text (sms) service API}
26
- gem.email = "bram.devries@nedap.com"
24
+ gem.description = %Q{Implementation of the MessageBird SMS API for Ruby}
25
+ gem.email = "dev@blaet.net"
27
26
  gem.authors = ["Bram de Vries"]
28
27
  # dependencies defined in Gemfile
29
28
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.1.3
@@ -1,4 +1,4 @@
1
- # Based on https://github.com/jwkoelewijn/batsir/blob/master/lib/batsir/config.rb
1
+ # Config class based on https://github.com/jwkoelewijn/batsir/blob/master/lib/batsir/config.rb
2
2
 
3
3
  module MessageBird
4
4
  class Config
@@ -2,11 +2,11 @@ module MessageBird::HTTP
2
2
  class SMS < MessageBird::Deliverable
3
3
  include MessageBird::Helpers
4
4
 
5
- attr_reader :originator, :recipients, :message
5
+ attr_reader :sender, :recipients, :message
6
6
  attr_writer :username, :api_url
7
7
 
8
- def initialize(originator, recipients, message, options = {}, &block)
9
- @originator = originator
8
+ def initialize(sender_name, recipients, message, options = {}, &block)
9
+ self.sender = sender_name
10
10
  @recipients = format_recipients(recipients)
11
11
  @message = URI.escape(message)
12
12
  @callback = block
@@ -27,7 +27,7 @@ module MessageBird::HTTP
27
27
  end
28
28
 
29
29
  def url
30
- @url ||= "#{api_url}?username=#{username}&password=#{password}&sender=#{originator}&test=#{test_mode}&destination=#{recipients}&body=#{message}"
30
+ @url ||= "#{api_url}?username=#{username}&password=#{password}&sender=#{sender}&test=#{test_mode}&destination=#{recipients}&body=#{message}"
31
31
  end
32
32
 
33
33
  def username
@@ -73,5 +73,27 @@ module MessageBird::HTTP
73
73
  @test_mode = bool ? 1 : 0
74
74
  end
75
75
 
76
+ def sender=(str)
77
+ ensure_valid_sender!(str)
78
+ @sender = str
79
+ end
80
+
81
+ def ensure_valid_sender!(input)
82
+ raise SenderInvalid.new(input) unless sender_valid?(input)
83
+ end
84
+
85
+ def sender_valid?(input)
86
+ sender_telephone_number?(input) || sender_string?(input)
87
+ end
88
+
89
+ def sender_string?(input)
90
+ input =~ /^[a-zA-Z0-9]{1,11}$/
91
+ end
92
+
93
+ def sender_telephone_number?(input)
94
+ input =~ /^\+(\d{11})$/
95
+ end
96
+
97
+ class SenderInvalid < ArgumentError; end
76
98
  end
77
99
  end
data/messagebird.gemspec CHANGED
@@ -2,17 +2,18 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: messagebird 0.1.2 ruby lib
5
+ # stub: messagebird 0.1.3 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "messagebird"
9
- s.version = "0.1.2"
9
+ s.version = "0.1.3"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
12
13
  s.authors = ["Bram de Vries"]
13
- s.date = "2014-01-27"
14
- s.description = "Implementation of the MessageBird text (sms) service API"
15
- s.email = "bram.devries@nedap.com"
14
+ s.date = "2014-01-30"
15
+ s.description = "Implementation of the MessageBird SMS API for Ruby"
16
+ s.email = "dev@blaet.net"
16
17
  s.executables = ["messagebird_test_connection"]
17
18
  s.extra_rdoc_files = [
18
19
  "LICENSE",
@@ -20,8 +21,8 @@ Gem::Specification.new do |s|
20
21
  ]
21
22
  s.files = [
22
23
  ".travis.yml",
24
+ "CHANGES.md",
23
25
  "Gemfile",
24
- "Gemfile.1.8.7",
25
26
  "LICENSE",
26
27
  "README.md",
27
28
  "Rakefile",
@@ -48,10 +49,9 @@ Gem::Specification.new do |s|
48
49
  "test/messagebird/sms_test.rb",
49
50
  "test/messagebird_test.rb"
50
51
  ]
51
- s.homepage = "http://github.com/nedap/messagebird-sms-api-ruby"
52
+ s.homepage = "http://github.com/blaet/messagebird-sms-api-ruby"
52
53
  s.licenses = ["MIT"]
53
- s.require_paths = ["lib"]
54
- s.rubygems_version = "2.1.11"
54
+ s.rubygems_version = "2.2.0"
55
55
  s.summary = "MessageBird API for Ruby"
56
56
 
57
57
  if s.respond_to? :specification_version then
@@ -4,12 +4,31 @@ module MessageBirdHTTPSMSHelper
4
4
  def format_recipients(input)
5
5
  subject.send :format_recipients, input
6
6
  end
7
+
8
+ def sender_telephone_number?(input)
9
+ subject.send :sender_telephone_number?, input
10
+ end
11
+
12
+ def sender_string?(input)
13
+ subject.send :sender_string?, input
14
+ end
7
15
  end
8
16
 
9
17
  describe MessageBird::HTTP::SMS do
10
18
  include MessageBirdHTTPSMSHelper
11
19
 
12
- subject{ MessageBird::HTTP::SMS.new('sender',3154447100,'message',{}) }
20
+ let(:subject_class){ MessageBird::HTTP::SMS }
21
+
22
+ subject{ subject_class.new('sender',3154447100,'message') }
23
+
24
+ describe '#initialize' do
25
+ it 'delegates setting sender to a setter method' do
26
+ any_instance_of(MessageBird::HTTP::SMS) do |klass|
27
+ mock.proxy(klass).sender=('footest')
28
+ end
29
+ subject_class.new('footest',3154447100,'message')
30
+ end
31
+ end
13
32
 
14
33
  describe '#api_url' do
15
34
  it 'retrieves the api_url from the Config object' do
@@ -31,6 +50,18 @@ describe MessageBird::HTTP::SMS do
31
50
  end
32
51
  end
33
52
 
53
+ describe '#ensure_valid_sender!' do
54
+ it 'works as designed' do
55
+ stub(subject).sender_valid?{true}
56
+ subject.send :ensure_valid_sender!, 'test'
57
+
58
+ stub(subject).sender_valid?{false}
59
+ assert_raises(MessageBird::HTTP::SMS::SenderInvalid){
60
+ subject.send :ensure_valid_sender!, 'test'
61
+ }
62
+ end
63
+ end
64
+
34
65
  describe '#format_recipients' do
35
66
  it 'converts an integer to string' do
36
67
  format_recipients(31541471696).must_equal "31541471696"
@@ -42,6 +73,76 @@ describe MessageBird::HTTP::SMS do
42
73
  end
43
74
  end
44
75
 
76
+ describe '#sender=' do
77
+ it 'sets the sender when valid' do
78
+ subject.send :sender=, 'footest'
79
+ subject.sender.must_equal 'footest'
80
+ end
81
+
82
+ it 'throws an exception if sender not valid' do
83
+ assert_raises(MessageBird::HTTP::SMS::SenderInvalid){
84
+ subject.send :sender=, 'garbledeegook'
85
+ }
86
+ end
87
+ end
88
+
89
+ describe '#sender_telephone_number?' do
90
+ it 'detects valid numbers' do
91
+ assert sender_telephone_number?('+31571000000')
92
+ assert sender_telephone_number?('+31671000000')
93
+ assert sender_telephone_number?('+15551234567')
94
+ end
95
+
96
+ it 'detects invalid numbers by length' do
97
+ refute sender_telephone_number?('+315710000001') # too long
98
+ refute sender_telephone_number?('+3157100001') # too short
99
+ end
100
+
101
+ it 'detects invalid numbers by spaces' do
102
+ refute sender_telephone_number?('+31571000 00')
103
+ refute sender_telephone_number?(' +31571000 0')
104
+ refute sender_telephone_number?('+3157100000 ')
105
+ end
106
+ end
107
+
108
+ describe '#sender_string?' do
109
+ it 'detects valid strings' do
110
+ assert sender_string?('A')
111
+ assert sender_string?('MessageBird')
112
+ end
113
+
114
+ it 'detects invalid strings by length' do
115
+ refute sender_string?('thiswillbreak')
116
+ refute sender_string?('')
117
+ end
118
+
119
+ it 'detects invalid strings by characters' do
120
+ refute sender_string?('blaet test')
121
+ refute sender_string?(' blaet')
122
+ refute sender_string?('blaet ')
123
+ end
124
+ end
125
+
126
+ describe '#sender_valid?' do
127
+ it 'works as designed' do
128
+ stub(subject).sender_string?{true}
129
+ stub(subject).sender_telephone_number?{true}
130
+ assert subject.send(:sender_valid?, 'test')
131
+
132
+ stub(subject).sender_string?{false}
133
+ stub(subject).sender_telephone_number?{true}
134
+ assert subject.send(:sender_valid?, 'test')
135
+
136
+ stub(subject).sender_string?{true}
137
+ stub(subject).sender_telephone_number?{false}
138
+ assert subject.send(:sender_valid?, 'test')
139
+
140
+ stub(subject).sender_string?{false}
141
+ stub(subject).sender_telephone_number?{false}
142
+ refute subject.send(:sender_valid?, 'test')
143
+ end
144
+ end
145
+
45
146
  describe '#password' do
46
147
  it 'retrieves the password from the Config object' do
47
148
  mock(MessageBird::Config).password{'test'}
@@ -26,6 +26,9 @@ describe MessageBird::SMS do
26
26
  end
27
27
 
28
28
  it 'returns a new SMS object of the appropriate module' do
29
+ any_instance_of(MessageBird::HTTP::SMS) do |klass|
30
+ stub(klass).ensure_valid_sender!
31
+ end
29
32
  subject.new(1,2,'message',{:module => :http}).class.must_equal MessageBird::HTTP::SMS
30
33
  end
31
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: messagebird
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bram de Vries
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-27 00:00:00.000000000 Z
11
+ date: 2014-01-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jeweler
@@ -24,8 +24,8 @@ dependencies:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: 2.0.0
27
- description: Implementation of the MessageBird text (sms) service API
28
- email: bram.devries@nedap.com
27
+ description: Implementation of the MessageBird SMS API for Ruby
28
+ email: dev@blaet.net
29
29
  executables:
30
30
  - messagebird_test_connection
31
31
  extensions: []
@@ -34,8 +34,8 @@ extra_rdoc_files:
34
34
  - README.md
35
35
  files:
36
36
  - .travis.yml
37
+ - CHANGES.md
37
38
  - Gemfile
38
- - Gemfile.1.8.7
39
39
  - LICENSE
40
40
  - README.md
41
41
  - Rakefile
@@ -61,7 +61,7 @@ files:
61
61
  - test/messagebird/http/sms_test.rb
62
62
  - test/messagebird/sms_test.rb
63
63
  - test/messagebird_test.rb
64
- homepage: http://github.com/nedap/messagebird-sms-api-ruby
64
+ homepage: http://github.com/blaet/messagebird-sms-api-ruby
65
65
  licenses:
66
66
  - MIT
67
67
  metadata: {}
@@ -81,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
81
  version: '0'
82
82
  requirements: []
83
83
  rubyforge_project:
84
- rubygems_version: 2.1.11
84
+ rubygems_version: 2.2.0
85
85
  signing_key:
86
86
  specification_version: 4
87
87
  summary: MessageBird API for Ruby
data/Gemfile.1.8.7 DELETED
@@ -1,8 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- group :test do
4
- gem 'bundler', '~> 1.0'
5
- gem 'rake'
6
- gem 'minitest', :require => false
7
- gem 'rr', :require => false
8
- end