responsys-api 0.1.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/.travis.yml +7 -2
- data/lib/responsys/api/all.rb +2 -2
- data/lib/responsys/api/authentication.rb +45 -0
- data/lib/responsys/api/client.rb +21 -50
- data/lib/responsys/api/session.rb +22 -35
- data/lib/responsys/api/session_pool.rb +32 -0
- data/lib/responsys/configuration.rb +7 -2
- data/lib/responsys/i18n/en.yml +35 -0
- data/lib/responsys_api.rb +7 -1
- data/responsys-api.gemspec +3 -2
- data/spec/api/campaign_spec.rb +5 -5
- data/spec/api/client_spec.rb +7 -69
- data/spec/api/list_spec.rb +6 -6
- data/spec/api/session_spec.rb +50 -0
- data/spec/api/table_spec.rb +12 -12
- data/spec/api_credentials.sample.yml +1 -1
- data/spec/fixtures/vcr_cassettes/api/campaign/trigger_custom_event_1.yml +45 -29
- data/spec/fixtures/vcr_cassettes/api/campaign/trigger_custom_event_2.yml +45 -29
- data/spec/fixtures/vcr_cassettes/api/campaign/trigger_message_1.yml +926 -29
- data/spec/fixtures/vcr_cassettes/api/campaign/trigger_message_2.yml +45 -29
- data/spec/fixtures/vcr_cassettes/api/client/expired_session.yml +1 -48
- data/spec/fixtures/vcr_cassettes/api/list/merge.yml +46 -28
- data/spec/fixtures/vcr_cassettes/api/list/retrieve.yml +927 -28
- data/spec/fixtures/vcr_cassettes/api/list/retrieve_single.yml +46 -28
- data/spec/fixtures/vcr_cassettes/api/list/retrieve_single_single.yml +46 -28
- data/spec/fixtures/vcr_cassettes/api/profile_extension/delete_profile_extension_records.yml +65 -0
- data/spec/fixtures/vcr_cassettes/api/profile_extension/merge_profile_extension_records.yml +46 -28
- data/spec/fixtures/vcr_cassettes/api/profile_extension/retrieve_profile_extension_records.yml +46 -28
- data/spec/fixtures/vcr_cassettes/api/table/create_with_pk.yml +927 -28
- data/spec/fixtures/vcr_cassettes/api/table/delete_with_pk.yml +46 -28
- data/spec/fixtures/vcr_cassettes/member/present1.yml +927 -28
- data/spec/fixtures/vcr_cassettes/member/present2.yml +46 -28
- data/spec/fixtures/vcr_cassettes/member/present3.yml +46 -30
- data/spec/fixtures/vcr_cassettes/member/present4.yml +46 -30
- data/spec/fixtures/vcr_cassettes/member/present5.yml +46 -30
- data/spec/fixtures/vcr_cassettes/member/retrieve_profile_extension.yml +92 -56
- data/spec/spec_helper.rb +9 -19
- metadata +43 -23
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
ZjU1YjUxYWUxMWE0Yzg0NTk0YWRmYTAyNDYxMjI3YmQ1YzNiMzYyNA==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6f00d1395d9bcceca1e501060dda3682ba6c9efe
|
4
|
+
data.tar.gz: e7f470e8a49e3bdacc06696ae5eeab07f20686f6
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
ZDk1M2MwOTlmZjQyYWRmYTM5ODVkZDQwMzA1MjNmMTkyYWQ2NzJmZTc2NWFl
|
11
|
-
NjdiNTlmMDNlMDMzY2M1YmVlNzYwNTJlZDNjNTEyZjg3NWE0OGE=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
NTJlNjI3MDZkOWNhMWI2MDNjNTk3ZDAxMGQ3MWM1ZTdiODM5NGU3ODRjNGI3
|
14
|
-
NmY5MGIxNjE2ZWZkMTc0MDZiOTQ5MzdhZTgzNDMyZWRjMGJhNGM0ZTNkN2Mx
|
15
|
-
YmM2NjY1NTlhOWRhM2Y0NWY5MjkwYTgzZjBjODU1ZWRjNzdlZjU=
|
6
|
+
metadata.gz: 217b1ad9d39b0a44392e7b5ffbbbca9ed27e6d39ff776fae6a55fdd29d3d04b6bfdbe800ede0c767eecaeddd232418b5857bf37eb89caae4f902ce0a7fc25b02
|
7
|
+
data.tar.gz: 2a7fd19395a831029fb5e11b39194d560ba62514a0b26bb07b01a308bc5a87765e2fecd027cb14100130fa57af0b72eaf389a3801c4ae6fdb7e88a33464a5444
|
data/.travis.yml
CHANGED
@@ -2,6 +2,11 @@ language: ruby
|
|
2
2
|
rvm:
|
3
3
|
- 1.9.3
|
4
4
|
- 2.1.2
|
5
|
-
|
6
5
|
gemfile:
|
7
|
-
- Gemfile
|
6
|
+
- Gemfile
|
7
|
+
notifications:
|
8
|
+
email:
|
9
|
+
on_success: never
|
10
|
+
on_failure: never
|
11
|
+
slack:
|
12
|
+
secure: 8b8dwwpHEw7vYd5Vma/BK2dZBrKYpFtu8TN8+NtpW8Xp+boYY3hEaFCeeEySzDvacCBZFKjjvDxverOFd4jqml2MtOukNZ/zlFc7ZVybGsNirfisNucS7auvwoWPwVrzrHoNpB5nTLU4tm0tWdaKkfLa4Yssr/tEO8yBIGwT8ds=
|
data/lib/responsys/api/all.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
|
+
require "responsys/api/authentication"
|
1
2
|
require "responsys/api/folder"
|
2
3
|
require "responsys/api/list"
|
3
|
-
require "responsys/api/session"
|
4
4
|
require "responsys/api/table"
|
5
5
|
require "responsys/api/campaign"
|
6
6
|
|
7
7
|
module Responsys
|
8
8
|
module Api
|
9
9
|
module All
|
10
|
+
include Responsys::Api::Authentication
|
10
11
|
include Responsys::Api::Folder
|
11
12
|
include Responsys::Api::List
|
12
|
-
include Responsys::Api::Session
|
13
13
|
include Responsys::Api::Table
|
14
14
|
include Responsys::Api::Campaign
|
15
15
|
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Responsys
|
2
|
+
module Api
|
3
|
+
module Authentication
|
4
|
+
def login
|
5
|
+
logout if logged_in?
|
6
|
+
|
7
|
+
response = run(:login, credentials)
|
8
|
+
establish_session_id(response)
|
9
|
+
establish_jsession_id(response)
|
10
|
+
set_session_credentials
|
11
|
+
end
|
12
|
+
|
13
|
+
def logout
|
14
|
+
return unless logged_in?
|
15
|
+
|
16
|
+
run_with_credentials(:logout, nil)
|
17
|
+
destroy_session_objects
|
18
|
+
end
|
19
|
+
|
20
|
+
def logged_in?
|
21
|
+
!(session_id.nil? || jsession_id.nil? || header.nil?)
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def establish_session_id(login_response)
|
27
|
+
@session_id = login_response.body[:login_response][:result][:session_id]
|
28
|
+
end
|
29
|
+
|
30
|
+
def establish_jsession_id(login_response)
|
31
|
+
@jsession_id = login_response.http.cookies[0]
|
32
|
+
end
|
33
|
+
|
34
|
+
def set_session_credentials
|
35
|
+
@header = { SessionHeader: { sessionId: session_id } }
|
36
|
+
end
|
37
|
+
|
38
|
+
def destroy_session_objects
|
39
|
+
@session_id = nil
|
40
|
+
@jsession_id = nil
|
41
|
+
@header = nil
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/responsys/api/client.rb
CHANGED
@@ -1,68 +1,39 @@
|
|
1
|
-
require "responsys/configuration"
|
2
|
-
require "savon"
|
3
|
-
require "responsys/helper"
|
4
|
-
require "responsys/api/all"
|
5
|
-
require "responsys/api/object/all"
|
6
|
-
require "singleton"
|
7
|
-
|
8
1
|
module Responsys
|
9
2
|
module Api
|
10
3
|
class Client
|
11
|
-
include Singleton
|
12
4
|
include Responsys::Api::All
|
5
|
+
attr_accessor :client
|
13
6
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
settings = Responsys.configuration.settings
|
18
|
-
@credentials = {
|
19
|
-
username: settings[:username],
|
20
|
-
password: settings[:password]
|
21
|
-
}
|
22
|
-
|
23
|
-
ssl_version = settings[:ssl_version] || :TLSv1
|
24
|
-
|
25
|
-
if settings[:debug]
|
26
|
-
@client = Savon.client(wsdl: settings[:wsdl], element_form_default: :qualified, ssl_version: ssl_version, log_level: :debug, log: true, pretty_print_xml: true)
|
27
|
-
else
|
28
|
-
@client = Savon.client(wsdl: settings[:wsdl], element_form_default: :qualified, ssl_version: ssl_version)
|
29
|
-
end
|
7
|
+
#TODO allows to keep the use of .instance. The client is no longer a singleton so it needs to be removed in a newer release.
|
8
|
+
class << self
|
9
|
+
alias :instance :new
|
30
10
|
end
|
31
11
|
|
32
12
|
def api_method(action, message = nil, response_type = :hash)
|
33
13
|
raise Responsys::Helper.get_message("api.client.api_method.wrong_action_#{action.to_s}") if action.to_sym == :login || action.to_sym == :logout
|
34
14
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
15
|
+
SessionPool.instance.with do |session|
|
16
|
+
begin
|
17
|
+
session.login
|
18
|
+
response = session.run_with_credentials(action, message)
|
19
|
+
case response_type
|
20
|
+
when :result
|
21
|
+
Responsys::Helper.format_response_result(response, action)
|
22
|
+
when :hash
|
23
|
+
Responsys::Helper.format_response_hash(response, action)
|
24
|
+
end
|
25
|
+
rescue Exception => e
|
26
|
+
Responsys::Helper.format_response_with_errors(e)
|
27
|
+
ensure
|
28
|
+
session.logout
|
45
29
|
end
|
46
|
-
|
47
|
-
rescue Exception => e
|
48
|
-
Responsys::Helper.format_response_with_errors(e)
|
49
|
-
ensure
|
50
|
-
logout
|
51
30
|
end
|
52
31
|
end
|
53
32
|
|
54
33
|
def available_operations
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
private
|
59
|
-
|
60
|
-
def run(method, message)
|
61
|
-
@client.call(method.to_sym, message: message)
|
62
|
-
end
|
63
|
-
|
64
|
-
def run_with_credentials(method, message, cookie, header)
|
65
|
-
@client.call(method.to_sym, message: message, cookies: cookie, soap_header: header)
|
34
|
+
SessionPool.instance.with do |session|
|
35
|
+
session.operations
|
36
|
+
end
|
66
37
|
end
|
67
38
|
end
|
68
39
|
end
|
@@ -1,44 +1,31 @@
|
|
1
1
|
module Responsys
|
2
2
|
module Api
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
!(session_id.nil? || jsession_id.nil? || header.nil?)
|
22
|
-
end
|
23
|
-
|
24
|
-
private
|
25
|
-
|
26
|
-
def establish_session_id(login_response)
|
27
|
-
@session_id = login_response.body[:login_response][:result][:session_id]
|
28
|
-
end
|
29
|
-
|
30
|
-
def establish_jsession_id(login_response)
|
31
|
-
@jsession_id = login_response.http.cookies[0]
|
3
|
+
class Session
|
4
|
+
attr_accessor :credentials, :session_id, :jsession_id, :header
|
5
|
+
include Responsys::Api::Authentication
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
settings = Responsys.configuration.settings
|
9
|
+
@credentials = {
|
10
|
+
username: settings[:username],
|
11
|
+
password: settings[:password]
|
12
|
+
}
|
13
|
+
|
14
|
+
ssl_version = settings[:ssl_version] || :TLSv1
|
15
|
+
|
16
|
+
if settings[:debug]
|
17
|
+
@savon_client = Savon.client(wsdl: settings[:wsdl], element_form_default: :qualified, ssl_version: ssl_version, log_level: :debug, log: true, pretty_print_xml: true)
|
18
|
+
else
|
19
|
+
@savon_client = Savon.client(wsdl: settings[:wsdl], element_form_default: :qualified, ssl_version: ssl_version)
|
20
|
+
end
|
32
21
|
end
|
33
22
|
|
34
|
-
def
|
35
|
-
@
|
23
|
+
def run(method, message)
|
24
|
+
@savon_client.call(method.to_sym, message: message)
|
36
25
|
end
|
37
26
|
|
38
|
-
def
|
39
|
-
@
|
40
|
-
@jsession_id = nil
|
41
|
-
@header = nil
|
27
|
+
def run_with_credentials(method, message)
|
28
|
+
@savon_client.call(method.to_sym, message: message, cookies: jsession_id, soap_header: header)
|
42
29
|
end
|
43
30
|
end
|
44
31
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require "singleton"
|
2
|
+
|
3
|
+
module Responsys
|
4
|
+
module Api
|
5
|
+
class SessionPool
|
6
|
+
include Singleton
|
7
|
+
attr_accessor :pool
|
8
|
+
ACCEPTED_SETTINGS = [:timeout, :size]
|
9
|
+
|
10
|
+
class << self
|
11
|
+
alias :init :instance
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize
|
15
|
+
settings = Responsys.configuration.settings[:sessions]
|
16
|
+
params = if settings
|
17
|
+
settings.select { |option, value| ACCEPTED_SETTINGS.include?(option) }
|
18
|
+
else
|
19
|
+
{}
|
20
|
+
end
|
21
|
+
|
22
|
+
@pool = ConnectionPool.new(params) { Responsys::Api::Session.new }
|
23
|
+
end
|
24
|
+
|
25
|
+
def with
|
26
|
+
@pool.with do |session|
|
27
|
+
yield session
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -7,7 +7,11 @@ module Responsys
|
|
7
7
|
username: nil,
|
8
8
|
password: nil,
|
9
9
|
wsdl: "",
|
10
|
-
debug: false
|
10
|
+
debug: false,
|
11
|
+
sessions: {
|
12
|
+
size: 80,
|
13
|
+
timeout: 30
|
14
|
+
}
|
11
15
|
}
|
12
16
|
end
|
13
17
|
end
|
@@ -22,5 +26,6 @@ module Responsys
|
|
22
26
|
|
23
27
|
def self.configure
|
24
28
|
yield(configuration)
|
29
|
+
Responsys::Api::SessionPool.init
|
25
30
|
end
|
26
|
-
end
|
31
|
+
end
|
data/lib/responsys/i18n/en.yml
CHANGED
@@ -18,6 +18,41 @@ en:
|
|
18
18
|
empty_event: The event_name or event_id must be specified
|
19
19
|
incorrect_event_object: "custom_event must be a CustomEvent instance"
|
20
20
|
client:
|
21
|
+
available_methods:
|
22
|
+
- wsdl
|
23
|
+
- endpoint
|
24
|
+
- namespace
|
25
|
+
- raise_errors
|
26
|
+
- proxy
|
27
|
+
- headers
|
28
|
+
- open_timeout
|
29
|
+
- read_timeout
|
30
|
+
- ssl_verify_mode
|
31
|
+
- ssl_version
|
32
|
+
- ssl_cert_file
|
33
|
+
- ssl_cert_key_file
|
34
|
+
- ssl_ca_cert_file
|
35
|
+
- ssl_cert_key_password
|
36
|
+
- convert_request_keys_to
|
37
|
+
- soap_header
|
38
|
+
- element_form_default
|
39
|
+
- env_namespace
|
40
|
+
- namespace_identifier
|
41
|
+
- namespaces
|
42
|
+
- encoding
|
43
|
+
- soap_version
|
44
|
+
- basic_auth
|
45
|
+
- digest_auth
|
46
|
+
- wsse_auth
|
47
|
+
- wsse_timestamp
|
48
|
+
- ntlm
|
49
|
+
- strip_namespaces
|
50
|
+
- convert_response_tags_to
|
51
|
+
- logger
|
52
|
+
- log_level
|
53
|
+
- log
|
54
|
+
- filters
|
55
|
+
- pretty_print_xml
|
21
56
|
api_method:
|
22
57
|
wrong_action_login: Please use the dedicated login method
|
23
58
|
wrong_action_logout: Please use the dedicated logout method
|
data/lib/responsys_api.rb
CHANGED
@@ -1,9 +1,15 @@
|
|
1
1
|
require "i18n"
|
2
|
+
require "connection_pool"
|
3
|
+
require "savon"
|
2
4
|
|
3
5
|
I18n.load_path.concat Dir.glob( File.dirname(__FILE__) + "/responsys/i18n/*.yml" )
|
4
6
|
|
5
7
|
require "responsys/exceptions/all"
|
6
8
|
require "responsys/helper"
|
7
9
|
require "responsys/configuration"
|
10
|
+
require "responsys/api/all"
|
11
|
+
require "responsys/api/object/all"
|
12
|
+
require "responsys/api/session_pool"
|
13
|
+
require "responsys/api/session"
|
8
14
|
require "responsys/api/client"
|
9
|
-
require "responsys/member"
|
15
|
+
require "responsys/member"
|
data/responsys-api.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "responsys-api"
|
7
|
-
spec.version = "0.1
|
7
|
+
spec.version = "0.2.1"
|
8
8
|
spec.authors = ["Dan DeMeyere", "Florian Lorrain", "Morgan Griggs", "Mike Rocco"]
|
9
9
|
spec.email = ["dan@thredup.com", "florian.lorrain@thredup.com", "morgan@thredup.com", "michael.rocco@thredup.com"]
|
10
10
|
spec.description = "A gem to integrate with the Responsys SOAP API"
|
@@ -21,9 +21,10 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_dependency "savon", "2.6.0"
|
22
22
|
spec.add_dependency "wasabi", "3.3.0"
|
23
23
|
spec.add_dependency "i18n", "~> 0.6"
|
24
|
+
spec.add_dependency "connection_pool", "2.0.0"
|
24
25
|
spec.add_development_dependency "bundler", "~> 1.3"
|
25
26
|
spec.add_development_dependency "rake", "~> 10.3"
|
26
|
-
spec.add_development_dependency "rspec", "~> 3.0"
|
27
|
+
spec.add_development_dependency "rspec", "~> 3.1.0"
|
27
28
|
spec.add_development_dependency "vcr", "~> 2.5"
|
28
29
|
spec.add_development_dependency "webmock", "~> 1.9"
|
29
30
|
end
|
data/spec/api/campaign_spec.rb
CHANGED
@@ -11,20 +11,20 @@ describe Responsys::Api::Campaign do
|
|
11
11
|
let(:custom_event) { Responsys::Api::Object::CustomEvent.new(DATA[:custom_events][:custom_event1][:name]) }
|
12
12
|
|
13
13
|
before(:all) do
|
14
|
-
@client = Responsys::Api::Client.
|
14
|
+
@client = Responsys::Api::Client.new
|
15
15
|
end
|
16
16
|
|
17
17
|
context "Trigger Message" do
|
18
18
|
it "should return a status of ok when triggering a message for one recipient" do
|
19
19
|
VCR.use_cassette("api/campaign/trigger_message_1") do
|
20
|
-
response = Responsys::Api::Client.
|
20
|
+
response = Responsys::Api::Client.new.trigger_message(campaign, [recipientData1])
|
21
21
|
expect(response[:status]).to eq("ok")
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should return a status of ok when triggering a message for more than one recipient" do
|
26
26
|
VCR.use_cassette("api/campaign/trigger_message_2") do
|
27
|
-
response = Responsys::Api::Client.
|
27
|
+
response = Responsys::Api::Client.new.trigger_message(campaign, [recipientData1,recipientData2])
|
28
28
|
expect(response[:status]).to eq("ok")
|
29
29
|
end
|
30
30
|
end
|
@@ -43,14 +43,14 @@ describe Responsys::Api::Campaign do
|
|
43
43
|
context "#trigger_custom_event" do
|
44
44
|
it "should return a status of ok when triggering a custom event for one recipient" do
|
45
45
|
VCR.use_cassette("api/campaign/trigger_custom_event_1") do
|
46
|
-
response = Responsys::Api::Client.
|
46
|
+
response = Responsys::Api::Client.new.trigger_custom_event(custom_event, [recipientData1])
|
47
47
|
expect(response[:status]).to eq("ok")
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
51
|
it "should return a status of ok when triggering a custom event for more than one recipient" do
|
52
52
|
VCR.use_cassette("api/campaign/trigger_custom_event_2") do
|
53
|
-
response = Responsys::Api::Client.
|
53
|
+
response = Responsys::Api::Client.new.trigger_custom_event(custom_event, [recipientData1,recipientData2])
|
54
54
|
expect(response[:status]).to eq("ok")
|
55
55
|
end
|
56
56
|
end
|
data/spec/api/client_spec.rb
CHANGED
@@ -1,77 +1,15 @@
|
|
1
1
|
require "spec_helper.rb"
|
2
|
-
require "responsys/api/client"
|
3
|
-
require "singleton"
|
4
2
|
|
5
3
|
describe Responsys::Api::Client do
|
6
4
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
before(:context) do
|
12
|
-
@credentials = { username: CREDENTIALS["username"], password: CREDENTIALS["password"] }
|
13
|
-
end
|
14
|
-
|
15
|
-
after(:context) do
|
16
|
-
Singleton.__init__(Responsys::Api::Client)
|
17
|
-
end
|
18
|
-
|
19
|
-
it "should set the credentials" do
|
20
|
-
allow_any_instance_of(Responsys::Api::Client).to receive(:login).and_return(nil)
|
21
|
-
|
22
|
-
responsys = Responsys::Api::Client.instance
|
23
|
-
|
24
|
-
expect(responsys.credentials).to eq({ username: CREDENTIALS["username"], password: CREDENTIALS["password"] })
|
25
|
-
end
|
26
|
-
|
27
|
-
context "login" do
|
28
|
-
before(:example) do
|
29
|
-
response = double("response")
|
30
|
-
|
31
|
-
cookies = %w(fake_jsession_id)
|
32
|
-
body = {
|
33
|
-
login_response: {
|
34
|
-
result: {
|
35
|
-
session_id: "fake_session_id"
|
36
|
-
}
|
37
|
-
}
|
38
|
-
}
|
39
|
-
|
40
|
-
allow(response).to receive(:body).and_return(body)
|
41
|
-
allow(response).to receive(:http).and_return(double("cookies", cookies: cookies))
|
42
|
-
|
43
|
-
allow(Savon).to receive(:client).with({ wsdl: CREDENTIALS["wsdl"], element_form_default: :qualified, ssl_version: :TLSv1}).and_return(savon_client) #Avoid the verification of the wsdl
|
44
|
-
allow_any_instance_of(Responsys::Api::Client).to receive(:run).with("login", @credentials).and_return(response) #Verification of credentials
|
45
|
-
allow(savon_client).to receive(:call).with(:login, @credentials ).and_return(response) #Actual login call
|
46
|
-
|
47
|
-
Singleton.__init__(Responsys::Api::Client)
|
48
|
-
end
|
49
|
-
|
50
|
-
it "should set the session ids" do
|
51
|
-
subject.login
|
52
|
-
|
53
|
-
expect(subject.header).to eq({ SessionHeader: { sessionId: "fake_session_id" } }) #Test the ids are right
|
54
|
-
expect(subject.jsession_id).to eq("fake_jsession_id")
|
55
|
-
end
|
56
|
-
|
57
|
-
it "should refuse the access to api_method for login" do
|
58
|
-
expect{ subject.api_method(:login) }.to raise_error("Please use the dedicated login method")
|
59
|
-
end
|
5
|
+
describe "Authentication methods" do
|
6
|
+
it "should refuse the access to api_method for logout" do
|
7
|
+
expect{ subject.api_method(:logout) }.to raise_error("Please use the dedicated logout method")
|
60
8
|
end
|
61
9
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
it "should logout" do
|
66
|
-
allow(subject).to receive(:logged_in?).and_return(true)
|
67
|
-
expect(subject).to receive(:run_with_credentials).with(:logout, anything, anything, anything) #Check the call is actually being done
|
68
|
-
|
69
|
-
subject.logout
|
70
|
-
end
|
71
|
-
|
72
|
-
it "should refuse the access to api_method for logout" do
|
73
|
-
expect{ subject.api_method(:logout) }.to raise_error("Please use the dedicated logout method")
|
74
|
-
end
|
10
|
+
it "should refuse the access to api_method for login" do
|
11
|
+
expect{ subject.api_method(:login) }.to raise_error("Please use the dedicated login method")
|
75
12
|
end
|
76
13
|
end
|
77
|
-
|
14
|
+
|
15
|
+
end
|