tanga_active_utils 2.2.3
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 +7 -0
- data/.gitignore +5 -0
- data/.travis.yml +5 -0
- data/Gemfile +3 -0
- data/MIT-LICENSE +20 -0
- data/README.md +16 -0
- data/Rakefile +27 -0
- data/lib/active_utils.rb +22 -0
- data/lib/active_utils/common/connection.rb +170 -0
- data/lib/active_utils/common/country.rb +330 -0
- data/lib/active_utils/common/currency_code.rb +50 -0
- data/lib/active_utils/common/error.rb +29 -0
- data/lib/active_utils/common/network_connection_retries.rb +74 -0
- data/lib/active_utils/common/post_data.rb +24 -0
- data/lib/active_utils/common/posts_data.rb +77 -0
- data/lib/active_utils/common/requires_parameters.rb +16 -0
- data/lib/active_utils/common/utils.rb +20 -0
- data/lib/active_utils/common/validateable.rb +81 -0
- data/lib/active_utils/version.rb +3 -0
- data/lib/certs/cacert.pem +3866 -0
- data/shipit.rubygems.yml +1 -0
- data/tanga_active_utils.gemspec +27 -0
- data/test/test_helper.rb +8 -0
- data/test/unit/connection_test.rb +177 -0
- data/test/unit/country_code_test.rb +31 -0
- data/test/unit/country_test.rb +68 -0
- data/test/unit/currency_code_test.rb +37 -0
- data/test/unit/network_connection_retries_test.rb +141 -0
- data/test/unit/post_data_test.rb +50 -0
- data/test/unit/posts_data_test.rb +58 -0
- data/test/unit/utils_test.rb +7 -0
- data/test/unit/validateable_test.rb +59 -0
- metadata +132 -0
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class MyPost < ActiveMerchant::PostData
|
4
|
+
self.required_fields = [ :ccnumber, :ccexp, :firstname, :lastname, :username, :password, :order_id, :key, :time ]
|
5
|
+
end
|
6
|
+
|
7
|
+
class PostDataTest < Minitest::Test
|
8
|
+
def teardown
|
9
|
+
ActiveMerchant::PostData.required_fields = []
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_element_assignment
|
13
|
+
name = 'Cody Fauser'
|
14
|
+
post = ActiveMerchant::PostData.new
|
15
|
+
|
16
|
+
post[:name] = name
|
17
|
+
assert_equal name, post[:name]
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_ignore_blank_fields
|
21
|
+
post = ActiveMerchant::PostData.new
|
22
|
+
assert_equal 0, post.keys.size
|
23
|
+
|
24
|
+
post[:name] = ''
|
25
|
+
assert_equal 0, post.keys.size
|
26
|
+
|
27
|
+
post[:name] = nil
|
28
|
+
assert_equal 0, post.keys.size
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_dont_ignore_required_blank_fields
|
32
|
+
ActiveMerchant::PostData.required_fields = [ :name ]
|
33
|
+
post = ActiveMerchant::PostData.new
|
34
|
+
|
35
|
+
assert_equal 0, post.keys.size
|
36
|
+
|
37
|
+
post[:name] = ''
|
38
|
+
assert_equal 1, post.keys.size
|
39
|
+
assert_equal '', post[:name]
|
40
|
+
|
41
|
+
post[:name] = nil
|
42
|
+
assert_equal 1, post.keys.size
|
43
|
+
assert_nil post[:name]
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_subclass
|
47
|
+
post = MyPost.new
|
48
|
+
assert_equal [ :ccnumber, :ccexp, :firstname, :lastname, :username, :password, :order_id, :key, :time ], post.required_fields
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'active_support/core_ext/class'
|
3
|
+
|
4
|
+
class PostsDataTest < Minitest::Test
|
5
|
+
|
6
|
+
class SSLPoster
|
7
|
+
include PostsData
|
8
|
+
|
9
|
+
attr_accessor :logger
|
10
|
+
end
|
11
|
+
|
12
|
+
def setup
|
13
|
+
@poster = SSLPoster.new
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_ssl_request_retried_three_times_by_default
|
17
|
+
requester = stubs(:requester)
|
18
|
+
requester.expects(:post).raises(Errno::ECONNREFUSED).times(3)
|
19
|
+
Connection.any_instance.stubs(:http => requester)
|
20
|
+
|
21
|
+
assert_raises ActiveMerchant::ConnectionError do
|
22
|
+
@poster.raw_ssl_request(:post, "https://shopify.com", "", {})
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_ssl_request_never_retried_if_max_retries_set
|
27
|
+
SSLPoster.max_retries = 1
|
28
|
+
requester = stubs(:requester)
|
29
|
+
requester.expects(:post).raises(Errno::ECONNREFUSED).times(1)
|
30
|
+
Connection.any_instance.stubs(:http => requester)
|
31
|
+
|
32
|
+
assert_raises ActiveMerchant::ConnectionError do
|
33
|
+
@poster.raw_ssl_request(:post, "https://shopify.com", "", {})
|
34
|
+
end
|
35
|
+
ensure
|
36
|
+
SSLPoster.max_retries = ActiveMerchant::Connection::MAX_RETRIES
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_logger_warns_if_ssl_strict_disabled
|
40
|
+
@poster.logger = stub()
|
41
|
+
@poster.logger.expects(:warn).with("PostsDataTest::SSLPoster using ssl_strict=false, which is insecure")
|
42
|
+
|
43
|
+
Connection.any_instance.stubs(:request)
|
44
|
+
|
45
|
+
SSLPoster.ssl_strict = false
|
46
|
+
@poster.raw_ssl_request(:post, "https://shopify.com", "", {})
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_logger_no_warning_if_ssl_strict_enabled
|
50
|
+
@poster.logger = stub()
|
51
|
+
@poster.logger.stubs(:warn).never
|
52
|
+
Connection.any_instance.stubs(:request)
|
53
|
+
|
54
|
+
SSLPoster.ssl_strict = true
|
55
|
+
@poster.raw_ssl_request(:post, "https://shopify.com", "", {})
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class Dood
|
4
|
+
include ActiveMerchant::Validateable
|
5
|
+
|
6
|
+
attr_accessor :name, :email, :country
|
7
|
+
|
8
|
+
def validate
|
9
|
+
errors.add "name", "cannot be empty" if name.blank?
|
10
|
+
errors.add "email", "cannot be empty" if email.blank?
|
11
|
+
errors.add_to_base "The country cannot be blank" if country.blank?
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
class ValidateableTest < Minitest::Test
|
17
|
+
|
18
|
+
def setup
|
19
|
+
@dood = Dood.new
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_validation
|
23
|
+
assert ! @dood.valid?
|
24
|
+
assert ! @dood.errors.empty?
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_assigns
|
28
|
+
@dood = Dood.new(:name => "tobi", :email => "tobi@neech.de", :country => 'DE')
|
29
|
+
|
30
|
+
assert_equal "tobi", @dood.name
|
31
|
+
assert_equal "tobi@neech.de", @dood.email
|
32
|
+
assert @dood.valid?
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_multiple_calls
|
36
|
+
@dood.name = "tobi"
|
37
|
+
assert !@dood.valid?
|
38
|
+
|
39
|
+
@dood.email = "tobi@neech.de"
|
40
|
+
assert !@dood.valid?
|
41
|
+
|
42
|
+
@dood.country = 'DE'
|
43
|
+
assert @dood.valid?
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_messages
|
47
|
+
@dood.valid?
|
48
|
+
assert_equal "cannot be empty", @dood.errors.on('name')
|
49
|
+
assert_equal "cannot be empty", @dood.errors.on('email')
|
50
|
+
assert_equal nil, @dood.errors.on('doesnt_exist')
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_full_messages
|
55
|
+
@dood.valid?
|
56
|
+
assert_equal ["Email cannot be empty", "Name cannot be empty", "The country cannot be blank"], @dood.errors.full_messages.sort
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
metadata
ADDED
@@ -0,0 +1,132 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tanga_active_utils
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.2.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Shopify
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-04-23 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.3.11
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.3.11
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: i18n
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: mocha
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description:
|
70
|
+
email:
|
71
|
+
- developers@jadedpixel.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- ".gitignore"
|
77
|
+
- ".travis.yml"
|
78
|
+
- Gemfile
|
79
|
+
- MIT-LICENSE
|
80
|
+
- README.md
|
81
|
+
- Rakefile
|
82
|
+
- lib/active_utils.rb
|
83
|
+
- lib/active_utils/common/connection.rb
|
84
|
+
- lib/active_utils/common/country.rb
|
85
|
+
- lib/active_utils/common/currency_code.rb
|
86
|
+
- lib/active_utils/common/error.rb
|
87
|
+
- lib/active_utils/common/network_connection_retries.rb
|
88
|
+
- lib/active_utils/common/post_data.rb
|
89
|
+
- lib/active_utils/common/posts_data.rb
|
90
|
+
- lib/active_utils/common/requires_parameters.rb
|
91
|
+
- lib/active_utils/common/utils.rb
|
92
|
+
- lib/active_utils/common/validateable.rb
|
93
|
+
- lib/active_utils/version.rb
|
94
|
+
- lib/certs/cacert.pem
|
95
|
+
- shipit.rubygems.yml
|
96
|
+
- tanga_active_utils.gemspec
|
97
|
+
- test/test_helper.rb
|
98
|
+
- test/unit/connection_test.rb
|
99
|
+
- test/unit/country_code_test.rb
|
100
|
+
- test/unit/country_test.rb
|
101
|
+
- test/unit/currency_code_test.rb
|
102
|
+
- test/unit/network_connection_retries_test.rb
|
103
|
+
- test/unit/post_data_test.rb
|
104
|
+
- test/unit/posts_data_test.rb
|
105
|
+
- test/unit/utils_test.rb
|
106
|
+
- test/unit/validateable_test.rb
|
107
|
+
homepage: http://github.com/shopify/active_utils
|
108
|
+
licenses:
|
109
|
+
- MIT
|
110
|
+
metadata: {}
|
111
|
+
post_install_message:
|
112
|
+
rdoc_options: []
|
113
|
+
require_paths:
|
114
|
+
- lib
|
115
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - ">="
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
120
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
requirements: []
|
126
|
+
rubyforge_project: active_utils
|
127
|
+
rubygems_version: 2.4.5
|
128
|
+
signing_key:
|
129
|
+
specification_version: 4
|
130
|
+
summary: Common utils used by active_merchant, active_fulfillment, and active_shipping
|
131
|
+
test_files: []
|
132
|
+
has_rdoc:
|