From 24dcd8707e80ad0f2fb377f59cf6e816b2ae5739 Mon Sep 17 00:00:00 2001 From: Greg Brockman Date: Mon, 30 May 2011 11:05:12 -0700 Subject: [PATCH] Raise InvalidRequestError if no id provided --- lib/stripe.rb | 6 +++++- test/test_stripe.rb | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/stripe.rb b/lib/stripe.rb index 81458910..4033a5cd 100644 --- a/lib/stripe.rb +++ b/lib/stripe.rb @@ -260,7 +260,11 @@ module Stripe shortname = self.name.split('::')[-1] "/#{CGI.escape(shortname.downcase)}s" end - def url; "#{self.class.url}/#{CGI.escape(id)}"; end + def url + id = self['id'] + raise InvalidRequestError.new("Could not determine which URL to request: #{self.class} instance has invalid ID: #{id.inspect}", 'id') unless id + "#{self.class.url}/#{CGI.escape(id)}" + end def refresh response, api_key = Stripe.request(:get, url, @api_key) diff --git a/test/test_stripe.rb b/test/test_stripe.rb index 2fd0f04a..d0546e4e 100644 --- a/test/test_stripe.rb +++ b/test/test_stripe.rb @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- require File.dirname(__FILE__) + '/test_helper.rb' require 'test/unit' require 'context' @@ -76,6 +77,11 @@ class TestStripeRuby < Test::Unit::TestCase assert_raises(Stripe::InvalidRequestError) { c.refresh } end + test "requesting with no ID shuold result in an InvalidRequestError with no request" do + c = Stripe::Customer.new + assert_raises(Stripe::InvalidRequestError) { c.refresh } + end + test "loading an object should issue a GET request" do @mock.expects(:get).once.returns(test_response(test_customer)) c = Stripe::Customer.new("test_customer")