polylink_api 0.1.0

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,8 @@
1
+ require "spec_helper"
2
+
3
+ describe "Did" do
4
+ it "should create instance" do
5
+ did = PolylinkApi::Did.new("33190064")
6
+ expect(did.number).to eq("33190064")
7
+ end
8
+ end
@@ -0,0 +1,131 @@
1
+ require "spec_helper"
2
+
3
+ describe "Helper" do
4
+ did = "33190074"
5
+ binding_id = "ABCDEFGHIJKLMN"
6
+
7
+ before(:all) do
8
+ response = PolylinkApi::Helper.create_v2c_did(binding_id, "18101801755", "18616015606", did)
9
+ expect(response).to be_nil
10
+ end
11
+
12
+ after(:all) do
13
+ response = PolylinkApi::Helper.delete_v2c_did(binding_id)
14
+ expect(response).to be_nil
15
+ end
16
+
17
+ it "should bind get client" do
18
+ expect(PolylinkApi::Helper.client).not_to be_nil
19
+ expect(PolylinkApi::Helper.client).to be_an_instance_of(Savon::Client)
20
+ end
21
+
22
+ it "should call a remote method" do
23
+ expect(PolylinkApi::Helper.respond_to?(:call)).to be true
24
+ expect { PolylinkApi::Helper.call(:unknown) }.to raise_error(PolylinkApi::InvalidMethodError)
25
+ end
26
+
27
+ it "should get response code" do
28
+ [ "500", "501", "502", "510", "511", "517", "518", "519", "600" ].each do |code|
29
+ expect(PolylinkApi::Helper.get_response_code(code)).to eq(code)
30
+ expect(PolylinkApi::Helper.get_response_code("<Result>#{code}</Result><CDR></CDR>")).to eq(code)
31
+ end
32
+ end
33
+
34
+ it "should check response include data" do
35
+ [ "500", "501", "502", "510", "511", "516", "517", "518", "519", "600" ].each do |code|
36
+ expect(PolylinkApi::Helper.response_include_data?(code)).to be false
37
+ expect(PolylinkApi::Helper.response_include_data?("<Result>#{code}</Result><CDR></CDR>")).to be true
38
+ end
39
+ expect(PolylinkApi::Helper.response_include_data?("1344")).to be false
40
+ end
41
+
42
+ it "should check response" do
43
+ expect { PolylinkApi::Helper.get_response(:unknown, nil) }.to raise_error(PolylinkApi::InvalidResponseError)
44
+ expect { PolylinkApi::Helper.get_response(:unknown, { unknown_response: { out: "501" } }) }.to raise_error(PolylinkApi::AuthenticationError)
45
+ expect { PolylinkApi::Helper.get_response(:unknown, { unknown_response: { out: "502" } }) }.to raise_error(PolylinkApi::InvalidParameterError)
46
+ expect { PolylinkApi::Helper.get_response(:unknown, { unknown_response: { out: "510" } }) }.to raise_error(PolylinkApi::InvalidParameterError)
47
+ expect { PolylinkApi::Helper.get_response(:unknown, { unknown_response: { out: "511" } }) }.to raise_error(PolylinkApi::InvalidParameterError)
48
+ expect { PolylinkApi::Helper.get_response(:unknown, { unknown_response: { out: "600" } }) }.to raise_error(PolylinkApi::InvalidResponseError)
49
+ data = { unknown_response: { out: "500" } }
50
+ expect(PolylinkApi::Helper.get_response(:unknown, data)).to eq(nil)
51
+
52
+ PolylinkApi::Helper::METHODS_RESPONSE_KEY[:unknown] = "TEST"
53
+ data = { unknown_response: { out: "<Result>500</Result><TEST>blah</TEST>" } }
54
+ expect(PolylinkApi::Helper.get_response(:unknown, data)).to eq("blah")
55
+ end
56
+
57
+ it "should get response data" do
58
+ data = "test"
59
+ expect(PolylinkApi::Helper.get_response_data(:unknown, data)).to be_nil
60
+ PolylinkApi::Helper::METHODS_RESPONSE_KEY[:unknown] = "TEST"
61
+ data = "<Result>500</Result><TEST>blah</TEST>"
62
+ expect(PolylinkApi::Helper.get_response_data(:unknown, data)).to eq("blah")
63
+ end
64
+
65
+ it "should find bind_id" do
66
+ response = PolylinkApi::Helper.get_v2c_id("18101801755", "18616015606", did)
67
+ expect(response).to eq(binding_id)
68
+ end
69
+
70
+ it "should dial via v2c id" do
71
+ response = PolylinkApi::Helper.callback_v2c_id(binding_id)
72
+ expect(response).to be_nil
73
+ end
74
+
75
+ it "should bind default phone to did, and unbind after check pass" do
76
+ response = PolylinkApi::Helper.bind_did_default_phone(did, "18101673107")
77
+ expect(response).to be_nil
78
+ response = PolylinkApi::Helper.get_did_default_phones_list
79
+ expect(response).to be_an_instance_of(Array)
80
+ expect(response.length).to be >= 1
81
+ expect(response[0].keys).to eq([:did, :phone])
82
+ response = PolylinkApi::Helper.unbind_did_default_phone(did)
83
+ expect(response).to be_nil
84
+ end
85
+
86
+ it "should get cdr from string" do
87
+ cdr = PolylinkApi::Helper.get_cdr_from_string("did,v2c_id,device_name,calling_number,called_number,starttime,duration,endtime,recordpath,call_status")
88
+ expect(cdr).to be_an_instance_of(Hash)
89
+ expect(cdr[:did]).to eq("did")
90
+ expect(cdr[:v2c_id]).to eq("v2c_id")
91
+ expect(cdr[:device_name]).to eq("device_name")
92
+ expect(cdr[:calling_number]).to eq("calling_number")
93
+ expect(cdr[:called_number]).to eq("called_number")
94
+ expect(cdr[:starttime]).to eq("starttime")
95
+ expect(cdr[:duration]).to eq("duration")
96
+ expect(cdr[:endtime]).to eq("endtime")
97
+ expect(cdr[:recordpath]).to eq("recordpath")
98
+ expect(cdr[:call_status]).to eq("call_status")
99
+ expect(cdr.keys).to eq([:did, :v2c_id, :device_name, :calling_number, :called_number, :starttime, :duration, :endtime, :recordpath, :call_status])
100
+ end
101
+
102
+ it "should get cdrs from string" do
103
+ cdrs = PolylinkApi::Helper.get_cdrs_from_string("did,v2c_id,device_name,calling_number,called_number,starttime,duration,endtime,recordpath,call_status;did,v2c_id,device_name,calling_number,called_number,starttime,duration,endtime,recordpath,call_status;")
104
+ expect(cdrs).to be_an_instance_of(Array)
105
+ expect(cdrs.length).to eq(2)
106
+ end
107
+
108
+ it "should get cdr records" do
109
+ response = PolylinkApi::Helper.get_records(did, 1, Time.now - 2.hours, Time.now)
110
+ expect(response).to be_an_instance_of(Array)
111
+ expect(response.length).to be >= 1
112
+ end
113
+
114
+ it "should get cdr file" do
115
+ file_cdr = "20141014/20141014141953_13636632007_18101801755_33190064_58.WAV"
116
+ file = PolylinkApi::Helper.get_record_file(file_cdr)
117
+ expect(file).to eq(File.join(PolylinkApi.config.cdrs_path, file_cdr))
118
+ expect(File.exists?(File.join(PolylinkApi.config.cdrs_path, file_cdr))).to be true
119
+ end
120
+
121
+ it "should upload did voice" do
122
+ file = File.join("spec", "config", "test_voice.wav")
123
+ response = PolylinkApi::Helper.set_did_announcement(did, file)
124
+ expect(response).to be_nil
125
+ end
126
+
127
+ it "should remove did voice" do
128
+ response = PolylinkApi::Helper.remove_did_announcement(did)
129
+ expect(response).to be_nil
130
+ end
131
+ end
@@ -0,0 +1,16 @@
1
+ require "spec_helper"
2
+
3
+ describe "Log" do
4
+ it "should store request and response" do
5
+ log = PolylinkApi::Models::Log.new
6
+ log.method = "test_method"
7
+ log.params = {}
8
+ log.response = {}
9
+ log.save
10
+
11
+ expect(log.method).to eq("test_method")
12
+ expect(log.params).to eq({})
13
+ expect(log.response).to eq({})
14
+ expect(log.logged_at).not_to be_nil
15
+ end
16
+ end
@@ -0,0 +1,22 @@
1
+ require "codeclimate-test-reporter"
2
+ CodeClimate::TestReporter.start
3
+
4
+ require 'bundler/setup'
5
+ require 'polylink_api'
6
+ require 'mongoid'
7
+
8
+ Bundler.setup
9
+ Mongoid.load!('./spec/config/mongoid.yml', :test)
10
+
11
+ PolylinkApi.setup do |config|
12
+ #config.wsdl = "http://61.152.148.59/pms/services/cmsservice?wsdl"
13
+ config.wsdl = "./spec/config/wsdl.xml"
14
+ config.download_server = "http://61.152.148.59/download/"
15
+ config.cdrs_path = "tmp/cdrs"
16
+ end
17
+
18
+ RSpec.configure do |config|
19
+ config.before(:each) do
20
+ Mongoid.purge!
21
+ end
22
+ end
metadata ADDED
@@ -0,0 +1,186 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: polylink_api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - liuzelei
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-01-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
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: rspec
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: guard
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
+ - !ruby/object:Gem::Dependency
70
+ name: guard-rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: codeclimate-test-reporter
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: savon
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 2.8.0
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 2.8.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: mongoid
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 4.0.0
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 4.0.0
125
+ description: "基本上采用webservice方式"
126
+ email:
127
+ - liuzelei@gmail.com
128
+ executables: []
129
+ extensions: []
130
+ extra_rdoc_files: []
131
+ files:
132
+ - ".gitignore"
133
+ - ".rspec"
134
+ - ".travis.yml.backup"
135
+ - Gemfile
136
+ - Guardfile
137
+ - LICENSE
138
+ - LICENSE.txt
139
+ - README.md
140
+ - Rakefile
141
+ - lib/polylink_api.rb
142
+ - lib/polylink_api/configuration.rb
143
+ - lib/polylink_api/did.rb
144
+ - lib/polylink_api/helper.rb
145
+ - lib/polylink_api/models/log.rb
146
+ - lib/polylink_api/version.rb
147
+ - polylink_api.gemspec
148
+ - spec/config/mongoid.yml
149
+ - spec/config/test_voice.wav
150
+ - spec/config/wsdl.xml
151
+ - spec/lib/polylink_api/did_spec.rb
152
+ - spec/lib/polylink_api/helper_spec.rb
153
+ - spec/lib/polylink_api/models/log_spec.rb
154
+ - spec/spec_helper.rb
155
+ homepage: ''
156
+ licenses:
157
+ - MIT
158
+ metadata: {}
159
+ post_install_message:
160
+ rdoc_options: []
161
+ require_paths:
162
+ - lib
163
+ required_ruby_version: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ required_rubygems_version: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
173
+ requirements: []
174
+ rubyforge_project:
175
+ rubygems_version: 2.4.5
176
+ signing_key:
177
+ specification_version: 4
178
+ summary: "跟聚领对接的接口"
179
+ test_files:
180
+ - spec/config/mongoid.yml
181
+ - spec/config/test_voice.wav
182
+ - spec/config/wsdl.xml
183
+ - spec/lib/polylink_api/did_spec.rb
184
+ - spec/lib/polylink_api/helper_spec.rb
185
+ - spec/lib/polylink_api/models/log_spec.rb
186
+ - spec/spec_helper.rb