slidepay 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +18 -0
- data/.rspec +3 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +10 -0
- data/Gemfile +10 -0
- data/Guardfile +9 -0
- data/LICENSE +20 -0
- data/README.md +135 -0
- data/Rakefile +10 -0
- data/lib/slidepay.rb +145 -0
- data/lib/slidepay/client.rb +99 -0
- data/lib/slidepay/config.rb +7 -0
- data/lib/slidepay/resources/api_key.rb +11 -0
- data/lib/slidepay/resources/api_resource.rb +117 -0
- data/lib/slidepay/resources/bank_account.rb +11 -0
- data/lib/slidepay/resources/payment.rb +48 -0
- data/lib/slidepay/response.rb +60 -0
- data/lib/slidepay/util.rb +5 -0
- data/lib/slidepay/version.rb +3 -0
- data/scenarios/example.rb +32 -0
- data/slidepay.gemspec +32 -0
- data/spec/api_key_spec.rb +38 -0
- data/spec/api_resource_spec.rb +227 -0
- data/spec/bank_account_spec.rb +38 -0
- data/spec/client_spec.rb +141 -0
- data/spec/payment_spec.rb +90 -0
- data/spec/response_spec.rb +135 -0
- data/spec/slidepay_spec.rb +301 -0
- data/spec/spec_helper.rb +463 -0
- metadata +209 -0
@@ -0,0 +1,38 @@
|
|
1
|
+
require "slidepay"
|
2
|
+
require "spec_helper"
|
3
|
+
|
4
|
+
describe SlidePay::BankAccount do
|
5
|
+
it "should have an id_attribute" do
|
6
|
+
b = SlidePay::BankAccount.new()
|
7
|
+
expect(b.id_attribute).to eq("bank_account_id")
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should have a root url" do
|
11
|
+
b = SlidePay::BankAccount.new()
|
12
|
+
expect(b.url_root).to eq("bank_account")
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "url" do
|
16
|
+
it "should not append the object id if no id is set" do
|
17
|
+
b = SlidePay::BankAccount.new()
|
18
|
+
expect(b.url()).to eq("bank_account")
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should append the object id if set" do
|
22
|
+
b = SlidePay::BankAccount.new("bank_account_id" => 2)
|
23
|
+
expect(b.url()).to eq("bank_account/2")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "id" do
|
28
|
+
it "should return nil if the id is not set" do
|
29
|
+
b = SlidePay::BankAccount.new()
|
30
|
+
expect(b.id()).to eq(nil)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should return the id if it is present" do
|
34
|
+
b = SlidePay::BankAccount.new("bank_account_id" => 2)
|
35
|
+
expect(b.id()).to eq(2)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/spec/client_spec.rb
ADDED
@@ -0,0 +1,141 @@
|
|
1
|
+
require "slidepay"
|
2
|
+
require "spec_helper"
|
3
|
+
|
4
|
+
describe SlidePay::Client do
|
5
|
+
before(:all) do
|
6
|
+
SlidePay.configure(development: true)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should allow instantiation with no parameters" do
|
10
|
+
c = SlidePay::Client.new
|
11
|
+
expect(c).to be_a(SlidePay::Client)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should set api_key, token, and endpoint when they are present" do
|
15
|
+
c = SlidePay::Client.new(api_key: "TEST_API_KEY", token: "TEST_TOKEN", endpoint: "TEST_ENDPOINT")
|
16
|
+
|
17
|
+
expect(c.api_key).to eq("TEST_API_KEY")
|
18
|
+
expect(c.token).to eq("TEST_TOKEN")
|
19
|
+
expect(c.endpoint).to eq("TEST_ENDPOINT")
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "basic request methods" do
|
23
|
+
describe "get" do
|
24
|
+
it "should accept a string" do
|
25
|
+
c = SlidePay::Client.new(api_key: "TEST_API_KEY", endpoint: "TEST_ENDPOINT")
|
26
|
+
|
27
|
+
SlidePay.should_receive(:get).with(path: 'test/path', api_key: "TEST_API_KEY", token: nil, endpoint: "TEST_ENDPOINT")
|
28
|
+
expect(c.get("test/path")).not_to raise_error
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should accept a hash" do
|
32
|
+
c = SlidePay::Client.new(api_key: "TEST_API_KEY", endpoint: "TEST_ENDPOINT")
|
33
|
+
|
34
|
+
SlidePay.should_receive(:get).with(path: 'test/path', api_key: "TEST_API_KEY", token: nil, endpoint: "TEST_ENDPOINT")
|
35
|
+
expect(c.get(path: "test/path")).not_to raise_error
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "post" do
|
40
|
+
it "should send the parameters hash with api_key and token to SlidePay" do
|
41
|
+
c = SlidePay::Client.new(api_key: "TEST_API_KEY", endpoint: "TEST_ENDPOINT")
|
42
|
+
|
43
|
+
SlidePay.should_receive(:post).with(path: 'test/path', data: "TEST_DATA", api_key: "TEST_API_KEY", token: nil, endpoint: "TEST_ENDPOINT")
|
44
|
+
expect(c.post(path: "test/path", data: "TEST_DATA")).not_to raise_error
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "put" do
|
49
|
+
it "should send the parameters hash with api_key and token to SlidePay" do
|
50
|
+
c = SlidePay::Client.new(api_key: "TEST_API_KEY", endpoint: "TEST_ENDPOINT")
|
51
|
+
|
52
|
+
SlidePay.should_receive(:put).with(path: 'test/path', data: "TEST_DATA", api_key: "TEST_API_KEY", token: nil, endpoint: "TEST_ENDPOINT")
|
53
|
+
expect(c.put(path: "test/path", data: "TEST_DATA")).not_to raise_error
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe "delete" do
|
58
|
+
it "should accept a string" do
|
59
|
+
c = SlidePay::Client.new(api_key: "TEST_API_KEY", endpoint: "TEST_ENDPOINT")
|
60
|
+
|
61
|
+
SlidePay.should_receive(:delete).with(path: 'test/path', api_key: "TEST_API_KEY", token: nil, endpoint: "TEST_ENDPOINT")
|
62
|
+
expect(c.delete("test/path")).not_to raise_error
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should accept a hash" do
|
66
|
+
c = SlidePay::Client.new(api_key: "TEST_API_KEY", endpoint: "TEST_ENDPOINT")
|
67
|
+
|
68
|
+
SlidePay.should_receive(:delete).with(path: 'test/path', api_key: "TEST_API_KEY", token: nil, endpoint: "TEST_ENDPOINT")
|
69
|
+
expect(c.delete(path: "test/path")).not_to raise_error
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe "resource request methods" do
|
75
|
+
describe "list" do
|
76
|
+
it "should use the resource's url_root with the SlidePay.get method" do
|
77
|
+
c = SlidePay::Client.new(api_key: "TEST_API_KEY", token: "TEST_TOKEN", endpoint: "TEST_ENDPOINT")
|
78
|
+
b = SlidePay::BankAccount.new()
|
79
|
+
SlidePay.should_receive(:get).with(path: b.url_root, api_key: "TEST_API_KEY", token: "TEST_TOKEN", endpoint: "TEST_ENDPOINT").and_return(a_response_object(bank_account_array_response))
|
80
|
+
c.list(b)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should return an array" do
|
84
|
+
c = SlidePay::Client.new(api_key: "TEST_API_KEY", token: "TEST_TOKEN", endpoint: "TEST_ENDPOINT")
|
85
|
+
b = SlidePay::BankAccount.new()
|
86
|
+
SlidePay.stub(:request) { a_response_object(bank_account_array_response) }
|
87
|
+
|
88
|
+
bank_accounts = c.list(b)
|
89
|
+
expect(bank_accounts).to be_a(Array)
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should return an array of the proper length" do
|
93
|
+
c = SlidePay::Client.new(api_key: "TEST_API_KEY", token: "TEST_TOKEN", endpoint: "TEST_ENDPOINT")
|
94
|
+
b = SlidePay::BankAccount.new()
|
95
|
+
SlidePay.stub(:request) { a_response_object(bank_account_array_response) }
|
96
|
+
|
97
|
+
bank_accounts = c.list(b)
|
98
|
+
expect(bank_accounts).to be_a(Array)
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should return an array of resources of the proper type" do
|
102
|
+
c = SlidePay::Client.new(api_key: "TEST_API_KEY", token: "TEST_TOKEN", endpoint: "TEST_ENDPOINT")
|
103
|
+
b = SlidePay::BankAccount.new()
|
104
|
+
SlidePay.stub(:request) { a_response_object(bank_account_array_response) }
|
105
|
+
|
106
|
+
bank_accounts = c.list(b)
|
107
|
+
expect(bank_accounts).to be_a(Array)
|
108
|
+
expect(bank_accounts.length).to eq(2)
|
109
|
+
expect(bank_accounts[0]).to be_a(SlidePay::BankAccount)
|
110
|
+
expect(bank_accounts[1]).to be_a(SlidePay::BankAccount)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
describe "retrieve" do
|
115
|
+
it "should use the resource's method for fulfillment" do
|
116
|
+
c = SlidePay::Client.new(api_key: "TEST_API_KEY", token: "TEST_TOKEN", endpoint: "TEST_ENDPOINT")
|
117
|
+
b = SlidePay::BankAccount.new()
|
118
|
+
b.should_receive(:retrieve).with(api_key: "TEST_API_KEY", token: "TEST_TOKEN", endpoint: "TEST_ENDPOINT")
|
119
|
+
c.retrieve(b)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
describe "save" do
|
124
|
+
it "should use the resource's method for fulfillment" do
|
125
|
+
c = SlidePay::Client.new(api_key: "TEST_API_KEY", token: "TEST_TOKEN", endpoint: "TEST_ENDPOINT")
|
126
|
+
b = SlidePay::BankAccount.new()
|
127
|
+
b.should_receive(:save).with(api_key: "TEST_API_KEY", token: "TEST_TOKEN", endpoint: "TEST_ENDPOINT")
|
128
|
+
c.save(b)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
describe "destroy" do
|
133
|
+
it "should use the resource's method for fulfillment" do
|
134
|
+
c = SlidePay::Client.new(api_key: "TEST_API_KEY", token: "TEST_TOKEN", endpoint: "TEST_ENDPOINT")
|
135
|
+
b = SlidePay::BankAccount.new("bank_account_id" => 1)
|
136
|
+
b.should_receive(:destroy).with(api_key: "TEST_API_KEY", token: "TEST_TOKEN", endpoint: "TEST_ENDPOINT")
|
137
|
+
c.destroy(b)
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
require "slidepay"
|
2
|
+
require "spec_helper"
|
3
|
+
|
4
|
+
describe SlidePay::Payment do
|
5
|
+
it "should have an id_attribute" do
|
6
|
+
p = SlidePay::Payment.new()
|
7
|
+
expect(p.id_attribute).to eq("payment_id")
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should have a root url" do
|
11
|
+
p = SlidePay::Payment.new()
|
12
|
+
expect(p.url_root).to eq("payment")
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "url" do
|
16
|
+
it "should not append the object id if no id is set" do
|
17
|
+
p = SlidePay::Payment.new()
|
18
|
+
expect(p.url()).to eq("payment")
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should append the object id if set" do
|
22
|
+
p = SlidePay::Payment.new("payment_id" => 2)
|
23
|
+
expect(p.url()).to eq("payment/2")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "id" do
|
28
|
+
it "should return nil if the id is not set" do
|
29
|
+
p = SlidePay::Payment.new()
|
30
|
+
expect(p.id()).to eq(nil)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should return the id if it is present" do
|
34
|
+
p = SlidePay::Payment.new("payment_id" => 2)
|
35
|
+
expect(p.id()).to eq(2)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "save" do
|
40
|
+
it "should call the process method" do
|
41
|
+
p = SlidePay::Payment.new()
|
42
|
+
p.should_receive(:process)
|
43
|
+
p.save()
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "destroy" do
|
48
|
+
it "should call the refund method" do
|
49
|
+
p = SlidePay::Payment.new()
|
50
|
+
p.should_receive(:refund)
|
51
|
+
p.destroy()
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe "process" do
|
56
|
+
it "should set the payment_id and the order_master_id on success" do
|
57
|
+
SlidePay.stub(:post) { a_response_object(successful_payment_response) }
|
58
|
+
|
59
|
+
p = SlidePay::Payment.new()
|
60
|
+
expect(p["order_master_id"]).to eq(nil)
|
61
|
+
expect(p["payment_id"]).to eq(nil)
|
62
|
+
p.process()
|
63
|
+
expect(p["order_master_id"]).to eq("10") # Test data found in spec_helper
|
64
|
+
expect(p["payment_id"]).to eq("12")
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should raise an error on failure" do
|
68
|
+
SlidePay.stub(:post) { a_response_object(failed_payment_response) }
|
69
|
+
|
70
|
+
p = SlidePay::Payment.new()
|
71
|
+
expect{ p.process() }.to raise_error("TEST_PAYMENT_FAILED_MESSAGE")
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe "refund" do
|
76
|
+
it "should return false for failure" do
|
77
|
+
SlidePay.stub(:post) { a_response_object(failed_object_response) }
|
78
|
+
|
79
|
+
p = SlidePay::Payment.new()
|
80
|
+
expect(p.refund()).to eq(false)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should return true for successful refund" do
|
84
|
+
SlidePay.stub(:post) { a_response_object(successful_object_response) }
|
85
|
+
|
86
|
+
p = SlidePay::Payment.new()
|
87
|
+
expect(p.refund()).to eq(true)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,135 @@
|
|
1
|
+
require 'slidepay'
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe SlidePay::Response do
|
5
|
+
def public_methods
|
6
|
+
[:success, :custom, :operation, :endpoint, :timezone, :method, :obj,
|
7
|
+
:id, :milliseconds, :data, :data_md5]
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should be a String" do
|
11
|
+
expect(SlidePay::Response.superclass).to eq(String)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should have a bunch of public instance methods" do
|
15
|
+
actual_public_methods = SlidePay::Response.public_instance_methods
|
16
|
+
public_methods.each do |method|
|
17
|
+
expect(actual_public_methods).to include(method)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "constructor" do
|
22
|
+
it "should create a blank instance if no string is provided" do
|
23
|
+
r = SlidePay::Response.new
|
24
|
+
expect(r).to eq("")
|
25
|
+
end
|
26
|
+
|
27
|
+
# it "should raise an error if created with invalid JSON" do
|
28
|
+
# expect(SlidePay::Response.new("THIS IS NOT JSON")).to raise_error
|
29
|
+
# end
|
30
|
+
|
31
|
+
it "should set the response to any string passed in" do
|
32
|
+
json = "{ \"custom\": \"CUSTOM_VALUE\" }"
|
33
|
+
|
34
|
+
r = SlidePay::Response.new(json)
|
35
|
+
|
36
|
+
expect(r).to eq(json)
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should try to parse any JSON string passed in on creation" do
|
40
|
+
json = "{ \"custom\": \"CUSTOM_VALUE\" }"
|
41
|
+
|
42
|
+
r = SlidePay::Response.new(json)
|
43
|
+
expect(r.custom).to eq("CUSTOM_VALUE")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "parse_object_from_json" do
|
48
|
+
it "should populate the object when given a valid SlidePay response JSON" do
|
49
|
+
r = SlidePay::Response.new(successful_endpoint_response)
|
50
|
+
|
51
|
+
expect(r).to eq(successful_endpoint_response)
|
52
|
+
|
53
|
+
expect(r.success).to eq(true)
|
54
|
+
expect(r.custom).to eq(nil)
|
55
|
+
expect(r.operation).to eq("GET endpoint")
|
56
|
+
expect(r.endpoint).to eq("https://api.getcube.com:65532#{SlidePay::ENDPOINT_SUFFIX}")
|
57
|
+
expect(r.timezone).to eq(nil)
|
58
|
+
expect(r.method).to eq("GET")
|
59
|
+
expect(r.obj).to eq(nil)
|
60
|
+
expect(r.id).to eq(0)
|
61
|
+
expect(r.milliseconds).to eq("31.25")
|
62
|
+
expect(r.data).to eq("https://api.getcube.com:65532/rest.svc/API/")
|
63
|
+
expect(r.data_md5).to eq("15D13569C731E9D77ABDCB3348A2EBDD")
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should populate the data property of the response with an object when appropriate" do
|
67
|
+
r = SlidePay::Response.new(successful_token_detail_response)
|
68
|
+
|
69
|
+
response_object = object_from_response(successful_token_detail_response)
|
70
|
+
|
71
|
+
expect(r.data).to be_a(Hash)
|
72
|
+
expect(r.data).to eq(response_object["data"])
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should populate the data property of the response with an array when appropriate" do
|
76
|
+
r = SlidePay::Response.new(successful_array_response)
|
77
|
+
|
78
|
+
response_object = object_from_response(successful_array_response)
|
79
|
+
|
80
|
+
expect(r.data).to be_a(Array)
|
81
|
+
expect(r.data).to eq(response_object["data"])
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
describe "was_successful?" do
|
86
|
+
it "should always return a boolean" do
|
87
|
+
r = SlidePay::Response.new("{\"success\" : true}")
|
88
|
+
expect(r.was_successful?).to be_a(TrueClass)
|
89
|
+
|
90
|
+
r = SlidePay::Response.new("{\"success\" : false}")
|
91
|
+
expect(r.was_successful?).to be_a(FalseClass)
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should return true for a successful response" do
|
95
|
+
r = SlidePay::Response.new(successful_endpoint_response)
|
96
|
+
expect(r.was_successful?).to eq(true)
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should return false for an unsuccessful response" do
|
100
|
+
r = SlidePay::Response.new(failed_endpoint_response)
|
101
|
+
expect(r.was_successful?).to eq(false)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
describe "endpoint" do
|
106
|
+
it "should always include the SlidePay endpoint suffix" do
|
107
|
+
r = SlidePay::Response.new
|
108
|
+
expect(r.endpoint).to include(SlidePay::ENDPOINT_SUFFIX)
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should add the endpoint suffix to the endpoint value retrieved" do
|
112
|
+
r = SlidePay::Response.new(successful_token_detail_response)
|
113
|
+
response_object = object_from_response(successful_token_detail_response)
|
114
|
+
expect(r.endpoint).to eq("#{response_object["endpoint"]}#{SlidePay::ENDPOINT_SUFFIX}")
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
describe "error" do
|
119
|
+
it "should return nil for a successful response" do
|
120
|
+
r = SlidePay::Response.new(successful_token_detail_response)
|
121
|
+
expect(r.error).to eq(nil)
|
122
|
+
end
|
123
|
+
|
124
|
+
it "should return a Hash object for an unsuccessful response" do
|
125
|
+
r = SlidePay::Response.new(failed_token_detail_response)
|
126
|
+
expect(r.error).to be_a(Hash)
|
127
|
+
end
|
128
|
+
|
129
|
+
it "should return an object containing an error_code and error_text" do
|
130
|
+
r = SlidePay::Response.new(failed_token_detail_response)
|
131
|
+
expect(r.error).to include("error_text")
|
132
|
+
expect(r.error).to include("error_code")
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
@@ -0,0 +1,301 @@
|
|
1
|
+
require "slidepay"
|
2
|
+
require "spec_helper"
|
3
|
+
|
4
|
+
describe SlidePay do
|
5
|
+
def public_methods
|
6
|
+
[:get_auth_option, :request, :get, :post, :put, :delete]
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should have a version" do
|
10
|
+
expect(SlidePay::VERSION).not_to be_nil
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should have a global token variable that is nil" do
|
14
|
+
expect(SlidePay.token).to be_nil
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should have a global api_key variable that is nil" do
|
18
|
+
expect(SlidePay.api_key).to be_nil
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should have a default endpoint" do
|
22
|
+
expect(SlidePay.endpoint).not_to be_nil
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "configure" do
|
26
|
+
before(:each) do
|
27
|
+
clear_slidepay()
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should only configure an endpoint by default" do
|
31
|
+
SlidePay.configure
|
32
|
+
|
33
|
+
expect(SlidePay.token).to be_nil
|
34
|
+
expect(SlidePay.api_key).to be_nil
|
35
|
+
expect(SlidePay.endpoint).to eq(SlidePay::SUPERVISOR_URL)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should allow configuration of token, api_key, and endpoint" do
|
39
|
+
SlidePay.configure(endpoint: "TEST_ENDPOINT", token: "TEST_TOKEN", api_key: "TEST_API_KEY")
|
40
|
+
|
41
|
+
expect(SlidePay.token).to eq("TEST_TOKEN")
|
42
|
+
expect(SlidePay.api_key).to eq("TEST_API_KEY")
|
43
|
+
expect(SlidePay.endpoint).to eq("TEST_ENDPOINT")
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should allow a user to choose the development enpdoint" do
|
47
|
+
SlidePay.configure(development: true)
|
48
|
+
|
49
|
+
expect(SlidePay.endpoint).to eq(SlidePay::DEV_API_URL)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should have a bunch of public methods" do
|
54
|
+
actual_slidepay_methods = SlidePay.public_methods
|
55
|
+
public_methods.each do |method|
|
56
|
+
expect(actual_slidepay_methods).to include(method)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should have a bunch of configuration options" do
|
61
|
+
ENDPOINT_SUFFIX = '/rest.svc/API/'
|
62
|
+
SUPERVISOR_URL = 'https://supervisor.getcube.com:65532/rest.svc/API/'
|
63
|
+
PROD_API_URL = 'https://api.getcube.com:65532/rest.svc/API/'
|
64
|
+
DEV_API_URL = 'https://dev.getcube.com:65532/rest.svc/API/'
|
65
|
+
DEBUG = false
|
66
|
+
|
67
|
+
expect(SlidePay::ENDPOINT_SUFFIX).to eq(ENDPOINT_SUFFIX)
|
68
|
+
expect(SlidePay::SUPERVISOR_URL).to eq(SUPERVISOR_URL)
|
69
|
+
expect(SlidePay::PROD_API_URL).to eq(PROD_API_URL)
|
70
|
+
expect(SlidePay::DEV_API_URL).to eq(DEV_API_URL)
|
71
|
+
expect(SlidePay::DEBUG).to eq(DEBUG)
|
72
|
+
end
|
73
|
+
|
74
|
+
describe "get_endpoint_option" do
|
75
|
+
after(:each) do
|
76
|
+
clear_endpoint()
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should use the default endpoint if none is provided" do
|
80
|
+
set_global_endpoint()
|
81
|
+
|
82
|
+
endpoint = SlidePay.get_endpoint_option({})
|
83
|
+
expect(SlidePay.endpoint).to eq("TEST_ENDPOINT")
|
84
|
+
expect(endpoint).to eq("TEST_ENDPOINT")
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should use the endpoint passed in if there is no default" do
|
88
|
+
endpoint = SlidePay.get_endpoint_option(endpoint: "NEW_ENDPOINT")
|
89
|
+
expect(SlidePay.endpoint).to eq(nil)
|
90
|
+
expect(endpoint).to eq("NEW_ENDPOINT")
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should use the endpoint passed in over the default" do
|
94
|
+
set_global_endpoint()
|
95
|
+
|
96
|
+
endpoint = SlidePay.get_endpoint_option(endpoint: "NEW_ENDPOINT")
|
97
|
+
expect(SlidePay.endpoint).to eq("TEST_ENDPOINT")
|
98
|
+
expect(endpoint).to eq("NEW_ENDPOINT")
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
|
103
|
+
describe "get_auth_option" do
|
104
|
+
after(:each) do
|
105
|
+
clear_auth_data()
|
106
|
+
end
|
107
|
+
|
108
|
+
it "should use the default token over the default api_key if both are present" do
|
109
|
+
set_global_token()
|
110
|
+
set_global_api_key()
|
111
|
+
|
112
|
+
auth = SlidePay.get_auth_option({})
|
113
|
+
expect(SlidePay.token).to eq("TEST_TOKEN")
|
114
|
+
expect(SlidePay.api_key).to eq("TEST_API_KEY")
|
115
|
+
expect(auth).to eq({ "x-cube-token" => "TEST_TOKEN" })
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should use the default api_key when nothing else is given" do
|
119
|
+
set_global_api_key()
|
120
|
+
|
121
|
+
auth = SlidePay.get_auth_option({})
|
122
|
+
expect(SlidePay.token).to eq(nil)
|
123
|
+
expect(SlidePay.api_key).to eq("TEST_API_KEY")
|
124
|
+
expect(auth).to eq({ "x-cube-api-key" => "TEST_API_KEY" })
|
125
|
+
end
|
126
|
+
|
127
|
+
it "should use the default token when nothing else is given" do
|
128
|
+
set_global_token()
|
129
|
+
|
130
|
+
auth = SlidePay.get_auth_option({})
|
131
|
+
expect(SlidePay.token).to eq("TEST_TOKEN")
|
132
|
+
expect(SlidePay.api_key).to eq(nil)
|
133
|
+
expect(auth).to eq({ "x-cube-token" => "TEST_TOKEN" })
|
134
|
+
end
|
135
|
+
|
136
|
+
it "should use the provided api_key even when a default is present" do
|
137
|
+
set_global_api_key()
|
138
|
+
|
139
|
+
auth = SlidePay.get_auth_option(api_key: "PASSED_IN_API_KEY")
|
140
|
+
expect(SlidePay.token).to eq(nil)
|
141
|
+
expect(SlidePay.api_key).to eq("TEST_API_KEY")
|
142
|
+
expect(auth).to eq({ "x-cube-api-key" => "PASSED_IN_API_KEY" })
|
143
|
+
end
|
144
|
+
|
145
|
+
it "should use the provided token even when a default is present" do
|
146
|
+
set_global_token()
|
147
|
+
|
148
|
+
auth = SlidePay.get_auth_option(token: "PASSED_IN_TOKEN")
|
149
|
+
expect(SlidePay.token).to eq("TEST_TOKEN")
|
150
|
+
expect(SlidePay.api_key).to eq(nil)
|
151
|
+
expect(auth).to eq({ "x-cube-token" => "PASSED_IN_TOKEN" })
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
describe "request" do
|
156
|
+
before(:each) do
|
157
|
+
SlidePay.configure(development: true)
|
158
|
+
end
|
159
|
+
|
160
|
+
it "should return a SlidePay::Response object on a get" do
|
161
|
+
RestClient.should_receive(:get).and_return(failed_token_response)
|
162
|
+
r_get = SlidePay.request("GET", { :path => 'login'})
|
163
|
+
expect(r_get).to be_a(SlidePay::Response)
|
164
|
+
end
|
165
|
+
|
166
|
+
it "should return a SlidePay::Response object on a put" do
|
167
|
+
RestClient.should_receive(:put).and_return(failed_token_response)
|
168
|
+
r_put = SlidePay.request("PUT", { :path => 'login'})
|
169
|
+
expect(r_put).to be_a(SlidePay::Response)
|
170
|
+
end
|
171
|
+
|
172
|
+
it "should return a SlidePay::Response object on a post" do
|
173
|
+
RestClient.should_receive(:post).and_return(failed_token_response)
|
174
|
+
r_post = SlidePay.request("POST", { :path => 'login'})
|
175
|
+
expect(r_post).to be_a(SlidePay::Response)
|
176
|
+
end
|
177
|
+
|
178
|
+
it "should return a SlidePay::Response object on a delete" do
|
179
|
+
RestClient.should_receive(:delete).and_return(failed_token_response)
|
180
|
+
r_delete = SlidePay.request("DELETE", { :path => 'login'})
|
181
|
+
expect(r_delete).to be_a(SlidePay::Response)
|
182
|
+
end
|
183
|
+
|
184
|
+
it "should raise an error for invalid request types" do
|
185
|
+
expect { SlidePay.request("INVALID_TYPE", {}) }.to raise_error
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
describe "get" do
|
190
|
+
before(:all) do
|
191
|
+
SlidePay.configure(development: true)
|
192
|
+
set_global_api_key_from_env
|
193
|
+
end
|
194
|
+
|
195
|
+
it "should accept a string" do
|
196
|
+
SlidePay.should_receive(:request).with("GET", path: 'token/detail').and_return(a_response_object(successful_token_detail_response))
|
197
|
+
expect(SlidePay.get('token/detail')).to be_a(SlidePay::Response)
|
198
|
+
end
|
199
|
+
|
200
|
+
it "should accept a hash" do
|
201
|
+
SlidePay.should_receive(:request).with("GET", path: 'token/detail').and_return(a_response_object(successful_token_detail_response))
|
202
|
+
expect(SlidePay.get(path: 'token/detail')).to be_a(SlidePay::Response)
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
describe "delete" do
|
207
|
+
before(:all) do
|
208
|
+
SlidePay.configure(development: true)
|
209
|
+
set_global_api_key_from_env
|
210
|
+
end
|
211
|
+
|
212
|
+
it "should accept a string" do
|
213
|
+
SlidePay.should_receive(:request).with("DELETE", path: 'fictional_object/2').and_return(a_response_object(successful_deletion_response))
|
214
|
+
expect(SlidePay.delete('fictional_object/2')).to be_a(SlidePay::Response)
|
215
|
+
end
|
216
|
+
|
217
|
+
it "should accept a hash" do
|
218
|
+
SlidePay.should_receive(:request).with("DELETE", path: 'fictional_object/2').and_return(a_response_object(successful_deletion_response))
|
219
|
+
expect(SlidePay.delete(path: 'fictional_object/2')).to be_a(SlidePay::Response)
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
223
|
+
describe "retrieve_token" do
|
224
|
+
before(:all) do
|
225
|
+
clear_slidepay
|
226
|
+
SlidePay.configure(development: true)
|
227
|
+
end
|
228
|
+
|
229
|
+
it "should always return a SlidePay::Response" do
|
230
|
+
SlidePay.should_receive(:get).with(path: 'login', email: '', password: '').and_return(a_response_object(successful_token_response))
|
231
|
+
|
232
|
+
r = SlidePay.retrieve_token('','')
|
233
|
+
expect(r).to be_a(SlidePay::Response)
|
234
|
+
end
|
235
|
+
|
236
|
+
it "should return a token value on success" do
|
237
|
+
SlidePay.should_receive(:get).with(path: 'login', email: SlidePay::TEST_EMAIL, password: SlidePay::TEST_PASSWORD).and_return(a_response_object(successful_token_response))
|
238
|
+
r = SlidePay.retrieve_token(SlidePay::TEST_EMAIL,SlidePay::TEST_PASSWORD)
|
239
|
+
|
240
|
+
expect(r.data).to be_a(String)
|
241
|
+
expect(r.data).to eq("TOKEN_FROM_THE_BEYOND")
|
242
|
+
end
|
243
|
+
|
244
|
+
it "should return an error object on failure" do
|
245
|
+
SlidePay.should_receive(:get).with(path: 'login', email: '', password: '').and_return(a_response_object(failed_token_response))
|
246
|
+
r = SlidePay.retrieve_token('','')
|
247
|
+
|
248
|
+
expect(r.data).to be_a(Hash)
|
249
|
+
expect(r.error).to be_a(Hash)
|
250
|
+
end
|
251
|
+
end
|
252
|
+
|
253
|
+
describe "retrieve_endpoint" do
|
254
|
+
before(:all) do
|
255
|
+
clear_slidepay
|
256
|
+
SlidePay.configure()
|
257
|
+
end
|
258
|
+
|
259
|
+
it "should always return a string" do
|
260
|
+
SlidePay.should_receive(:get).with(path: 'endpoint', email: '').and_return(a_response_object(failed_endpoint_response))
|
261
|
+
r = SlidePay.retrieve_endpoint('')
|
262
|
+
expect(r).to be_a(SlidePay::Response)
|
263
|
+
end
|
264
|
+
|
265
|
+
it "should return an endpoint value on success" do
|
266
|
+
SlidePay.should_receive(:get).with(path: 'endpoint', email: 'matt+test@getcube.com').and_return(a_response_object(successful_token_response))
|
267
|
+
r = SlidePay.retrieve_endpoint('matt+test@getcube.com')
|
268
|
+
|
269
|
+
expect(r.data).to be_a(String)
|
270
|
+
expect(r.data).to eq("TOKEN_FROM_THE_BEYOND")
|
271
|
+
end
|
272
|
+
|
273
|
+
it "should return an error object on failure" do
|
274
|
+
SlidePay.should_receive(:get).with(path: 'endpoint', email: '').and_return(a_response_object(failed_token_response))
|
275
|
+
r = SlidePay.retrieve_endpoint('')
|
276
|
+
|
277
|
+
expect(r.data).to be_a(Hash)
|
278
|
+
expect(r.error).to be_a(Hash)
|
279
|
+
end
|
280
|
+
end
|
281
|
+
|
282
|
+
describe "authenticate" do
|
283
|
+
before(:each) do
|
284
|
+
clear_slidepay
|
285
|
+
SlidePay.configure(development: true)
|
286
|
+
end
|
287
|
+
|
288
|
+
it "should have a token after a successful authentication" do
|
289
|
+
SlidePay.should_receive(:get).with(path: 'login', email: SlidePay::TEST_EMAIL, password: SlidePay::TEST_PASSWORD).and_return(a_response_object(successful_token_response))
|
290
|
+
expect(SlidePay.authenticate(SlidePay::TEST_EMAIL, SlidePay::TEST_PASSWORD)).to eq(true)
|
291
|
+
expect(SlidePay.token).not_to eq(nil)
|
292
|
+
end
|
293
|
+
|
294
|
+
it "should not have a token after a successful authentication" do
|
295
|
+
SlidePay.should_receive(:get).with(path: 'login', email: '', password: '').and_return(a_response_object(failed_token_response))
|
296
|
+
expect(SlidePay.authenticate('','')).to eq(false)
|
297
|
+
expect(SlidePay.token).to eq(nil)
|
298
|
+
end
|
299
|
+
end
|
300
|
+
|
301
|
+
end
|