gmo_payment_gem 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.
@@ -0,0 +1,72 @@
1
+ require 'uri'
2
+ require 'net/http'
3
+ require 'net/https'
4
+
5
+ class GmoPayment::ApiRequest
6
+ DEFAULT_TIMEOUT = 30 # Seconds
7
+ ENCODE_PARAMS = %w(CardNo SiteID SitePass ShopID ShopPass).freeze
8
+
9
+ def initialize(request_url, request_params, timeout)
10
+ @request_url = request_url
11
+ @request_params = request_params
12
+ @time_out = timeout || DEFAULT_TIMEOUT
13
+ @requester = nil
14
+ end
15
+
16
+ def make_request(method = 'post')
17
+ host, path = split_base_url_and_path
18
+ @requester = init_http_request(host)
19
+ begin
20
+ @requester.start
21
+ response = if method.casecmp('post').zero?
22
+ @requester.post(path, to_query_params(@request_params))
23
+ else
24
+ @requester.get(path, to_query_params(@request_params))
25
+ end
26
+ ensure
27
+ @requester.finish
28
+ end
29
+ response
30
+ end
31
+
32
+ def params2log
33
+ encode_params(to_query_params(@request_params))
34
+ end
35
+
36
+ private
37
+
38
+ def split_base_url_and_path
39
+ uri = URI.parse(@request_url)
40
+ [uri.host, uri.path]
41
+ end
42
+
43
+ def init_http_request(host)
44
+ http = Net::HTTP.new(host, 443) # SSL port
45
+ http.open_timeout = @time_out
46
+ http.read_timeout = @time_out
47
+ http.use_ssl = true
48
+ http
49
+ end
50
+
51
+ def to_query_params(options = {})
52
+ str = ''
53
+ options.each { |k, v| str << "#{k}=#{v}&" }
54
+ str
55
+ end
56
+
57
+ # Encode params string to *** format
58
+ # Eg: CardNo=1234567890123 to CardNo=*********123
59
+ def encode_params(log_msg)
60
+ params_patterns = "(#{ENCODE_PARAMS.join('|')})=\\w+"
61
+ log_msg.gsub(Regexp.new(params_patterns)) { |match| hide_value(match).to_s }
62
+ end
63
+
64
+ # Hide all value if value length <= 10
65
+ # Otherwise show last 3 characters
66
+ def hide_value(param_n_value)
67
+ param, value = param_n_value.split('=')
68
+ v_hide = '*' * value.length
69
+ v_hide << value[-3..-1] if value.length > 10
70
+ "#{param}=#{v_hide}"
71
+ end
72
+ end
@@ -0,0 +1,94 @@
1
+ class GmoPayment::ApiResponse
2
+ RESPONSE_SUCCESS_CODE = [200, 201].freeze
3
+ SPLIT_CHARACTER = '|'.freeze
4
+
5
+ def initialize(api_url, body, response_http_code)
6
+ @api_url = api_url
7
+ @response_body = body
8
+ @response_http_code = response_http_code
9
+ @response_body_parsed = parse_response_content
10
+ end
11
+
12
+ def response_code
13
+ @response_http_code
14
+ end
15
+
16
+ def response_body(raw = false)
17
+ raw ? @response_body : @response_body_parsed
18
+ end
19
+
20
+ def error_codes
21
+ r_detail = response_body
22
+ r_detail.fetch(:ErrCode, '').split(SPLIT_CHARACTER)
23
+ end
24
+
25
+ def error_infos
26
+ r_detail = response_body
27
+ r_detail.fetch(:ErrInfo, '').split(SPLIT_CHARACTER)
28
+ end
29
+
30
+ def error_messages
31
+ error_infos.map do |e_code|
32
+ GmoPayment::ApiErrors.all.fetch(e_code, "UNKNOWN ERROR with code #{e_code}")
33
+ end
34
+ end
35
+
36
+ def full_messages
37
+ error_messages.join(' ')
38
+ end
39
+
40
+ def has_error?(error_info_code)
41
+ error_infos.include?(error_info_code)
42
+ end
43
+
44
+ def success?
45
+ if block_given?
46
+ yield(@api_url, @response_http_code, @response_body, @response_body_parsed)
47
+ else
48
+ r_detail = response_body
49
+ pre_condition = RESPONSE_SUCCESS_CODE.include?(response_code) && !r_detail.key?(:ErrCode)
50
+ case @api_url
51
+ when GmoPayment::ApiUrls.all.fetch('MEMBER_REGISTER'),
52
+ GmoPayment::ApiUrls.all.fetch('MEMBER_DELETE'),
53
+ GmoPayment::ApiUrls.all.fetch('MEMBER_SEARCH')
54
+ pre_condition && r_detail.key?(:MemberID)
55
+ when GmoPayment::ApiUrls.all.fetch('CARD_SAVE_OR_UPDATE')
56
+ pre_condition && r_detail.key?(:CardSeq) && r_detail.key?(:CardNo)
57
+ when GmoPayment::ApiUrls.all.fetch('CARD_DELETE')
58
+ pre_condition && r_detail.key?(:CardSeq)
59
+ when GmoPayment::ApiUrls.all.fetch('TRANSACTION_REGISTER')
60
+ pre_condition && r_detail.key?(:AccessID) && r_detail.key?(:AccessPass)
61
+ when GmoPayment::ApiUrls.all.fetch('TRANSACTION_SUBMIT')
62
+ pre_condition && r_detail.key?(:TranID) && r_detail.key?(:CheckString)
63
+ when GmoPayment::ApiUrls.all.fetch('TRANSACTION_UPDATE')
64
+ pre_condition && r_detail.key?(:AccessID) && r_detail.key?(:AccessPass)
65
+ else
66
+ pre_condition
67
+ end
68
+ end
69
+ end
70
+
71
+ def response2log(raw = false)
72
+ response_body(raw)
73
+ end
74
+
75
+ def full_errors2log
76
+ full_messages
77
+ end
78
+
79
+ private
80
+
81
+ def parse_response_content
82
+ result = {}
83
+ return result unless @response_body && !@response_body.empty?
84
+ begin
85
+ @response_body.split('&').each do |key_value|
86
+ key, value = key_value.split('=')
87
+ result[key.to_sym] = value
88
+ end
89
+ result
90
+ rescue
91
+ result
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,39 @@
1
+ class GmoPayment::ApiUrls
2
+ class << self
3
+ attr_accessor :urls
4
+ end
5
+ @urls = {}
6
+
7
+ def self.all
8
+ if frozen?
9
+ urls
10
+ else
11
+ base_payment_url = GmoPayment::Configurations.all.fetch(:base_url)
12
+ basic_urls = {
13
+ # Transaction API URL
14
+ 'TRANSACTION_REGISTER' => "#{base_payment_url}/EntryTran.idPass",
15
+ 'TRANSACTION_SUBMIT' => "#{base_payment_url}/ExecTran.idPass",
16
+ 'TRANSACTION_UPDATE' => "#{base_payment_url}/AlterTran.idPass",
17
+ 'TRANSACTION_MONEY_CHANGE' => "#{base_payment_url}/ChangeTran.idPass",
18
+ 'TRANSACTION_SEARCH' => "#{base_payment_url}/SearchTrade.idPass",
19
+
20
+ # Member API URL
21
+ 'MEMBER_REGISTER' => "#{base_payment_url}/SaveMember.idPass",
22
+ 'MEMBER_UPDATE' => "#{base_payment_url}/UpdateMember.idPass",
23
+ 'MEMBER_SEARCH' => "#{base_payment_url}/SearchMember.idPass",
24
+ 'MEMBER_DELETE' => "#{base_payment_url}/DeleteMember.idPass",
25
+
26
+ # Credit card API URL
27
+ 'CARD_SAVE_AFTER_TRADED' => "#{base_payment_url}/TradedCard.idPass",
28
+ 'CARD_SAVE_OR_UPDATE' => "#{base_payment_url}/SaveCard.idPass",
29
+ 'CARD_SEARCH' => "#{base_payment_url}/SearchCard.idPass",
30
+ 'CARD_DELETE' => "#{base_payment_url}/DeleteCard.idPass"
31
+ }
32
+
33
+ more_urls = GmoPayment::Configurations.all.fetch(:more_urls, {})
34
+ self.urls = basic_urls.merge(more_urls)
35
+ freeze
36
+ urls
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,14 @@
1
+ class GmoPayment::Configurations
2
+ REQUIRED_CONFIG = [:base_url, :log_path, :shop_id, :shop_pass, :site_id, :site_pass].freeze
3
+ class << self
4
+ attr_accessor :all
5
+ end
6
+ @all = {}
7
+
8
+ def self.check_valid!(changeable_on_runtime = false)
9
+ freeze unless changeable_on_runtime
10
+ REQUIRED_CONFIG.each do |param|
11
+ raise GmoPayment::CustomError, "gmo_payment error: #{param} not set" if all.fetch(param, nil).nil?
12
+ end
13
+ end
14
+ end
@@ -0,0 +1 @@
1
+ class GmoPayment::CustomError < StandardError; end
@@ -0,0 +1,10 @@
1
+ class GmoPayment::Logger
2
+ class << self
3
+ def write(msg)
4
+ log_path = GmoPayment::Configurations.all.fetch(:log_path)
5
+ File.open(log_path, 'a+') do |f|
6
+ f.write("#{Time.now} :: #{msg} \n")
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,98 @@
1
+ class GmoPayment
2
+ def initialize(options = {}, type_site = true, logger = nil)
3
+ @base_params = if type_site
4
+ {
5
+ SiteID: GmoPayment::Configurations.all.fetch(:site_id),
6
+ SitePass: GmoPayment::Configurations.all.fetch(:site_pass)
7
+ }
8
+ else
9
+ {
10
+ ShopID: GmoPayment::Configurations.all.fetch(:shop_id),
11
+ ShopPass: GmoPayment::Configurations.all.fetch(:shop_pass)
12
+ }
13
+ end
14
+ @time_out = options.fetch(:time_out, nil)
15
+ @logger = logger || GmoPayment::Logger
16
+ end
17
+
18
+ def register_member(params = {})
19
+ api_url = GmoPayment::ApiUrls.all.fetch('MEMBER_REGISTER')
20
+ call_api(api_url, params)
21
+ end
22
+
23
+ def delete_member(params = {})
24
+ api_url = GmoPayment::ApiUrls.all.fetch('MEMBER_DELETE')
25
+ call_api(api_url, params)
26
+ end
27
+
28
+ def search_member(params = {})
29
+ api_url = GmoPayment::ApiUrls.all.fetch('MEMBER_SEARCH')
30
+ call_api(api_url, params)
31
+ end
32
+
33
+ def save_card(params = {})
34
+ api_url = GmoPayment::ApiUrls.all.fetch('CARD_SAVE_OR_UPDATE')
35
+ call_api(api_url, params)
36
+ end
37
+
38
+ def delete_card(params = {})
39
+ api_url = GmoPayment::ApiUrls.all.fetch('CARD_DELETE')
40
+ call_api(api_url, params)
41
+ end
42
+
43
+ # Transaction normal flow
44
+ # Register > Submit with :JobCd = 'CAPTURE'
45
+ # Register > Submit > Confirm with :JobCd != 'CAPTURE'
46
+ def register_transaction(params = {})
47
+ api_url = GmoPayment::ApiUrls.all.fetch('TRANSACTION_REGISTER')
48
+ call_api(api_url, params)
49
+ end
50
+
51
+ def submit_transaction(params = {})
52
+ api_url = GmoPayment::ApiUrls.all.fetch('TRANSACTION_SUBMIT')
53
+ call_api(api_url, params)
54
+ end
55
+
56
+ def confirm_transaction(params = {})
57
+ api_url = GmoPayment::ApiUrls.all.fetch('TRANSACTION_UPDATE')
58
+ call_api(api_url, params)
59
+ end
60
+
61
+ def transaction_status(params = {})
62
+ api_url = GmoPayment::ApiUrls.all.fetch('TRANSACTION_SEARCH')
63
+ call_api(api_url, params)
64
+ end
65
+
66
+ protected
67
+
68
+ def call_api(api_url, params = {}, method = 'post')
69
+ params.merge!(@base_params)
70
+ request = GmoPayment::ApiRequest.new(api_url, params, @time_out)
71
+ write_log('---------- START REQUEST TO GMO PAYMENT --------')
72
+ write_log("REQUEST URL: --------- #{api_url}")
73
+ write_log("REQUEST PARAMS: ------ #{request.params2log}")
74
+ response_raw = request.make_request(method)
75
+ response = GmoPayment::ApiResponse.new(api_url, response_raw.body, response_raw.code.to_i)
76
+ write_log("RESPONSE: ------------ HTTP #{response.response_code}: #{response.response2log}")
77
+ write_log("WITH ERRORS: --------- #{response.full_errors2log}")
78
+ write_log(%(----------- END REQUEST TO GMO PAYMENT --------\n))
79
+ response
80
+ rescue StandardError => e
81
+ write_log("gmo_payment INTERNAL ERROR: #{e.message} : #{e.backtrace[0, 5]}")
82
+ raise GmoPayment::CustomError, "gmo_payment error: #{e.message}"
83
+ end
84
+
85
+ private
86
+
87
+ def write_log(log_msg)
88
+ @logger.write(log_msg)
89
+ end
90
+ end
91
+
92
+ require 'gmo_payment/configurations'
93
+ require 'gmo_payment/api_urls'
94
+ require 'gmo_payment/api_errors'
95
+ require 'gmo_payment/logger'
96
+ require 'gmo_payment/api_request'
97
+ require 'gmo_payment/api_response'
98
+ require 'gmo_payment/custom_error'
data/test/helper.rb ADDED
@@ -0,0 +1,51 @@
1
+ require 'webmock/test_unit'
2
+ require 'gmo_payment'
3
+ require 'gmo_payment/custom_error'
4
+ require 'gmo_payment/configurations'
5
+
6
+ def payment_base_url
7
+ 'https://test-example.com/payment'
8
+ end
9
+
10
+ def stub_request_to_payment(res_status = 200, res_body = '')
11
+ stub_request(:any, /test-example.com\/payment/)
12
+ .with(headers: {
13
+ 'Accept' => '*/*',
14
+ 'Accept-Encoding' => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3',
15
+ 'User-Agent' => 'Ruby'
16
+ })
17
+ .to_return(status: res_status, body: res_body, headers: {})
18
+ end
19
+
20
+ def stub_request_to_timeout
21
+ stub_request(:any, payment_base_url)
22
+ .with(headers: {
23
+ 'Accept' => '*/*',
24
+ 'Accept-Encoding' => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3',
25
+ 'User-Agent' => 'Ruby'
26
+ })
27
+ .to_raise(GmoPayment::CustomError)
28
+ end
29
+
30
+ def basic_setting
31
+ {
32
+ site_id: 'site_id',
33
+ site_pass: 'site_id',
34
+ shop_id: 'site_id',
35
+ shop_pass: 'site_id',
36
+ log_path: File.join(File.dirname(__FILE__), '/logs/test.log'),
37
+ base_url: payment_base_url
38
+ }
39
+ end
40
+
41
+ def set_basic_config
42
+ GmoPayment::Configurations.all = basic_setting
43
+ end
44
+
45
+ def clear_config
46
+ GmoPayment::Configurations.all = {}
47
+ end
48
+
49
+ def set_more_configs(more_configs)
50
+ GmoPayment::Configurations.all = basic_setting.merge(more_configs)
51
+ end
File without changes
@@ -0,0 +1,40 @@
1
+ require 'test/unit'
2
+ require 'gmo_payment'
3
+ require 'helper'
4
+
5
+ class TestApiErrors < Test::Unit::TestCase
6
+ def test_no_more_errors
7
+ set_basic_config
8
+ obj_dup = GmoPayment::ApiErrors.dup
9
+ obj_dup.all_errors = obj_dup.errors
10
+ assert_equal(GmoPayment::ApiErrors.errors.size,
11
+ obj_dup.all.size)
12
+ end
13
+
14
+ def test_has_more_errors
15
+ more_errors = {
16
+ more_errors: { 'CE1' => 'CE1_VALUE', # New error
17
+ 'CE2' => 'CE2_VALUE' } # New error
18
+ }
19
+ set_more_configs(more_errors)
20
+ assert_equal(GmoPayment::ApiErrors.errors.size + 2,
21
+ GmoPayment::ApiErrors.dup.all.size)
22
+ assert_equal('CE1_VALUE',
23
+ GmoPayment::ApiErrors.all.fetch('CE1'))
24
+ end
25
+
26
+ def test_overwrite_errors
27
+ more_errors = {
28
+ more_errors: {
29
+ 'NC2000001' => 'NC2000001_VALUE', # Existing error
30
+ 'CE2' => 'CE2_VALUE' # New error
31
+ }
32
+ }
33
+ set_more_configs(more_errors)
34
+ obj_dup = GmoPayment::ApiErrors.dup
35
+ assert_equal(GmoPayment::ApiErrors.errors.size + 1,
36
+ obj_dup.all.size)
37
+ assert_equal('NC2000001_VALUE',
38
+ obj_dup.all.fetch('NC2000001'))
39
+ end
40
+ end
@@ -0,0 +1,43 @@
1
+ require 'test/unit'
2
+ require 'gmo_payment'
3
+ require 'helper'
4
+
5
+ class TestApiRequest < Test::Unit::TestCase
6
+ def test_make_request_valid
7
+ url = payment_base_url
8
+ params = {}
9
+ timeout = 30 # Seconds
10
+ request = GmoPayment::ApiRequest.new(url, params, timeout)
11
+ stub_request_to_payment
12
+ response = request.make_request
13
+ assert_equal(true, response.is_a?(Net::HTTPOK))
14
+ end
15
+
16
+ def test_make_request_timeout
17
+ url = payment_base_url
18
+ params = {}
19
+ timeout = 30 # Seconds
20
+ request = GmoPayment::ApiRequest.new(url, params, timeout)
21
+ stub_request_to_timeout
22
+ begin
23
+ request.make_request
24
+ rescue => e
25
+ assert_equal(true, e.is_a?(GmoPayment::CustomError))
26
+ end
27
+ end
28
+
29
+ def test_params_has_been_hide
30
+ url = payment_base_url
31
+ params = {
32
+ ShopID: 'shop_id',
33
+ ShopPass: 'shop_pass',
34
+ SiteID: 'site_id',
35
+ SitePass: 'site_pass',
36
+ CardNo: 12_345_678_901_234
37
+ }
38
+ expect_params = 'ShopID=*******&ShopPass=*********&SiteID=*******&SitePass=*********&CardNo=**************234&'
39
+ timeout = 30 # Seconds
40
+ request = GmoPayment::ApiRequest.new(url, params, timeout)
41
+ assert_equal(expect_params, request.params2log)
42
+ end
43
+ end
@@ -0,0 +1,105 @@
1
+ require 'test/unit'
2
+ require 'gmo_payment'
3
+ require 'helper'
4
+
5
+ class TestApiResponse < Test::Unit::TestCase
6
+ def test_response_code
7
+ response = GmoPayment::ApiResponse.new(payment_base_url, '', 200)
8
+ assert_equal(200, response.response_code)
9
+ end
10
+
11
+ def test_response_body_raw
12
+ response_body = 'BODY RAW'
13
+ response = GmoPayment::ApiResponse.new(payment_base_url, response_body, 200)
14
+ assert_equal(response_body, response.response_body(true))
15
+ end
16
+
17
+ def test_response_body_parsed
18
+ response_body = 'something=123&somethingelse=456'
19
+ expect_parsed_body = {
20
+ something: '123',
21
+ somethingelse: '456'
22
+ }
23
+ response = GmoPayment::ApiResponse.new(payment_base_url, response_body, 200)
24
+ assert_equal(expect_parsed_body, response.response_body)
25
+ end
26
+
27
+ def test_error_codes_and_infos
28
+ response_body = 'ErrCode=123|456|789&ErrInfo=ErrInfo1|ErrInfo2'
29
+ expect_err_codes = %w(123 456 789)
30
+ expect_err_infos = %w(ErrInfo1 ErrInfo2)
31
+ response = GmoPayment::ApiResponse.new(payment_base_url, response_body, 200)
32
+ assert_equal(expect_err_codes, response.error_codes)
33
+ assert_equal(expect_err_infos, response.error_infos)
34
+ end
35
+
36
+ def test_error_in_errors_list
37
+ response_body = 'ErrCode=123|456|789&ErrInfo=E00000000|E01010001|E01010008'
38
+ expect_err_messages = ['特になし',
39
+ 'ショップIDが指定されていません。',
40
+ 'ショップIDに半角英数字以外の文字が含まれているか、13文字を超えています。']
41
+ expect_full_messages = expect_err_messages.join(' ')
42
+ response = GmoPayment::ApiResponse.new(payment_base_url, response_body, 200)
43
+ assert_equal(expect_err_messages, response.error_messages)
44
+ assert_equal(expect_full_messages, response.full_messages)
45
+ assert_equal(expect_full_messages, response.full_errors2log)
46
+ end
47
+
48
+ def test_error_not_in_errors_list
49
+ response_body = 'ErrCode=123|456|789&ErrInfo=EXXX|EYYY|EZZZ'
50
+ expect_err_messages = ['UNKNOWN ERROR with code EXXX',
51
+ 'UNKNOWN ERROR with code EYYY',
52
+ 'UNKNOWN ERROR with code EZZZ']
53
+ expect_full_messages = expect_err_messages.join(' ')
54
+ response = GmoPayment::ApiResponse.new(payment_base_url, response_body, 200)
55
+ assert_equal(expect_err_messages, response.error_messages)
56
+ assert_equal(expect_full_messages, response.full_messages)
57
+ assert_equal(expect_full_messages, response.full_errors2log)
58
+ end
59
+
60
+ def test_no_error
61
+ response_body = 'somthing=123&somethingelse=456'
62
+ expect_err_messages = []
63
+ expect_full_messages = ''
64
+ response = GmoPayment::ApiResponse.new(payment_base_url, response_body, 200)
65
+ assert_equal(expect_err_messages, response.error_messages)
66
+ assert_equal(expect_full_messages, response.full_messages)
67
+ assert_equal(expect_full_messages, response.full_errors2log)
68
+ end
69
+
70
+ def test_success_without_block
71
+ set_basic_config
72
+ api_url_key = 'TRANSACTION_REGISTER'
73
+ api_url = GmoPayment::ApiUrls.all.fetch(api_url_key)
74
+ response_body = 'AccessID=123&AccessPass=456'
75
+ response = GmoPayment::ApiResponse.new(api_url, response_body, 200)
76
+ assert_equal(true, response.success?)
77
+ end
78
+
79
+ def test_success_with_block
80
+ set_basic_config
81
+ api_url_key = 'TRANSACTION_REGISTER'
82
+ api_url = GmoPayment::ApiUrls.all.fetch(api_url_key)
83
+ response_body = 'AccessID=123&AccessPass=456'
84
+ response = GmoPayment::ApiResponse.new(api_url, response_body, 200)
85
+ assert_equal(true, response.success? { |_, _, _, _| true })
86
+ end
87
+
88
+ def test_success_fail_by_http_code
89
+ set_basic_config
90
+ api_url_key = 'TRANSACTION_REGISTER'
91
+ api_url = GmoPayment::ApiUrls.all.fetch(api_url_key)
92
+ response_body = 'AccessID=123&AccessPass=456'
93
+ response = GmoPayment::ApiResponse.new(api_url, response_body, 400)
94
+ assert_equal(false, response.success?)
95
+ end
96
+
97
+ def test_success_fail_by_has_error
98
+ set_basic_config
99
+ api_url_key = 'TRANSACTION_REGISTER'
100
+ api_url = GmoPayment::ApiUrls.all.fetch(api_url_key)
101
+ response_body = 'ErrCode=123'
102
+ response = GmoPayment::ApiResponse.new(api_url, response_body, 400)
103
+ assert_equal(false, response.success?)
104
+ end
105
+ end
@@ -0,0 +1,21 @@
1
+ require 'test/unit'
2
+ require 'gmo_payment'
3
+ require 'helper'
4
+
5
+ class TestApiUrls < Test::Unit::TestCase
6
+ def test_all_with_no_more_url
7
+ set_basic_config
8
+ assert_equal(13, GmoPayment::ApiUrls.all.size)
9
+ end
10
+
11
+ def test_all_with_more_urls
12
+ more_urls = {
13
+ more_urls: {
14
+ 'MORE_PAYMENT_URL1' => 'MORE_PAYMENT_URL1_VALUE',
15
+ 'MORE_PAYMENT_URL2' => 'MORE_PAYMENT_URL2_VALUE'
16
+ }
17
+ }
18
+ set_more_configs(more_urls)
19
+ assert_equal(13 + 2, GmoPayment::ApiUrls.dup.all.size)
20
+ end
21
+ end
@@ -0,0 +1,20 @@
1
+ require 'test/unit'
2
+ require 'gmo_payment'
3
+ require 'helper'
4
+
5
+ class TestConfigurations < Test::Unit::TestCase
6
+ def test_check_valid_success
7
+ set_basic_config
8
+ assert_equal(GmoPayment::Configurations::REQUIRED_CONFIG, GmoPayment::Configurations.check_valid!(true))
9
+ end
10
+
11
+ def test_check_valid_fail
12
+ clear_config
13
+ begin
14
+ GmoPayment::Configurations.check_valid!(true)
15
+ rescue => e
16
+ assert_equal(true, e.is_a?(GmoPayment::CustomError))
17
+ assert_equal('gmo_payment error: base_url not set', e.message)
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,16 @@
1
+ require 'test/unit'
2
+ require 'gmo_payment'
3
+ require 'helper'
4
+
5
+ class TestGmoPayment < Test::Unit::TestCase
6
+ def test_public_methods
7
+ set_basic_config
8
+ gmo_payment = GmoPayment.new
9
+ api_methods = gmo_payment.public_methods(false)
10
+ stub_request_to_payment
11
+ api_methods.each do |api_call|
12
+ response = gmo_payment.public_send(api_call)
13
+ assert_equal(GmoPayment::ApiResponse, response.class)
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,26 @@
1
+ require 'test/unit'
2
+ require 'gmo_payment'
3
+ require 'helper'
4
+
5
+ class TestLogger < Test::Unit::TestCase
6
+ def test_write_log_success
7
+ set_basic_config
8
+ log_msg = 'this is a log'
9
+ GmoPayment::Logger.write(log_msg)
10
+ log_on_file = false
11
+ File.open(GmoPayment::Configurations.all.fetch(:log_path), 'r') do |f|
12
+ f.each_line { |line| log_on_file = true if line.index(log_msg).to_i >= 0 }
13
+ end
14
+ assert_equal(true, log_on_file)
15
+ end
16
+
17
+ def test_log_path_not_found
18
+ clear_config
19
+ log_msg = 'this is a log'
20
+ begin
21
+ GmoPayment::Logger.write(log_msg)
22
+ rescue => e
23
+ assert_equal(true, e.is_a?(KeyError))
24
+ end
25
+ end
26
+ end