diff --git a/lib/stripe.rb b/lib/stripe.rb index 5ac4d2df..fe9f1f99 100644 --- a/lib/stripe.rb +++ b/lib/stripe.rb @@ -55,6 +55,7 @@ require 'stripe/sku' require 'stripe/order' require 'stripe/order_return' require 'stripe/alipay_account' +require 'stripe/three_d_secure' # Errors require 'stripe/errors/stripe_error' diff --git a/lib/stripe/three_d_secure.rb b/lib/stripe/three_d_secure.rb new file mode 100644 index 00000000..b2a03a24 --- /dev/null +++ b/lib/stripe/three_d_secure.rb @@ -0,0 +1,13 @@ +module Stripe + class ThreeDSecure < APIResource + extend Stripe::APIOperations::Create + + def self.resource_url + "/v1/3d_secure" + end + + def self.retrieve(id, opts=nil) + raise NotImplementedError.new("3D Secure objects cannot be retrieved") + end + end +end diff --git a/lib/stripe/util.rb b/lib/stripe/util.rb index f95a784d..60e46b8f 100644 --- a/lib/stripe/util.rb +++ b/lib/stripe/util.rb @@ -53,6 +53,7 @@ module Stripe 'sku' => SKU, 'order' => Order, 'order_return' => OrderReturn, + 'three_d_secure' => ThreeDSecure, } end diff --git a/test/stripe/three_d_secure_test.rb b/test/stripe/three_d_secure_test.rb new file mode 100644 index 00000000..128891c1 --- /dev/null +++ b/test/stripe/three_d_secure_test.rb @@ -0,0 +1,16 @@ +require File.expand_path('../../test_helper', __FILE__) + +module Stripe + class ThreeDSecureTest < Test::Unit::TestCase + should "create should return a new 3D Secure object" do + @mock.expects(:post).once.returns(make_response(make_three_d_secure)) + tds = Stripe::ThreeDSecure.create( + :card => "tok_test", + :amount => 1500, + :currency => "usd", + :return_url => "https://example.org/3d-secure-result" + ) + assert_equal "tdsrc_test", tds.id + end + end +end diff --git a/test/test_data.rb b/test/test_data.rb index 4c464dad..4f082c5a 100644 --- a/test/test_data.rb +++ b/test/test_data.rb @@ -833,5 +833,20 @@ module Stripe ] } end + + def make_three_d_secure(params={}) + { + :id => 'tdsrc_test', + :object => 'three_d_secure', + :amount => 1500, + :authenticate => true, + :card => make_card, + :created => 1456908210, + :currency => 'usd', + :livemode => false, + :redirect_url => nil, + :status => 'succeeded', + }.merge(params) + end end end