statraptor 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
- ## 0.1.0 (February 13, 2012)
1
+ ## 0.1.0 (February 24, 2012)
2
2
 
3
- Features:
3
+ * Added support for User, Project, and Graph resources
4
4
 
5
- - added support for User, Project, and Graph resources
5
+
6
+ ## 0.2.0 (February 28, 2012)
7
+
8
+ * Added support for listing users with `client.get_users`
9
+ * Added StatRaptor.disable\_ssl\_peer\_verification config option
10
+ * Implemented StatRaptor.timeout config option
11
+ * Improve how errors are raised
12
+ * A 404 is now properly raised as a StatRaptor::Error::NotFound
13
+ * A 401 is now properly raised as a StatRaptor::Error::Unauthorized
14
+ * All other errors are raised as a generic StatRaptor::Error
15
+ * Errors now include a nice parsed error message if one exists in the StatRaptor response
16
+ * All public methods now return a hash on success instead of JSON
data/README.md CHANGED
@@ -17,6 +17,7 @@ client = StatRaptor::Client.new
17
17
  # Manage users
18
18
  client.create_user(:email => "timmy@example.com", :chargify_api_key => "XYZ456")
19
19
  client.delete_user("akskd8328389281728918")
20
+ client.get_users
20
21
 
21
22
  # Manage projects
22
23
  client.create_project(:user_credentials => "3892839akslje",
@@ -1,27 +1,26 @@
1
1
  module StatRaptor
2
2
  class Client
3
3
  module Graphs
4
- def get_revenue_graph_data(params={})
4
+ def get_revenue_graph_data(params = {})
5
5
  graph_data("revenue", params)
6
6
  end
7
7
 
8
- def get_subscribers_graph_data(params={})
8
+ def get_subscribers_graph_data(params = {})
9
9
  graph_data("subscribers", params)
10
10
  end
11
11
 
12
- def get_average_lifetime_value_graph_data(params={})
12
+ def get_average_lifetime_value_graph_data(params = {})
13
13
  graph_data("average_lifetime_value", params)
14
14
  end
15
15
 
16
- def get_churn_graph_data(params={})
16
+ def get_churn_graph_data(params = {})
17
17
  graph_data("churn", params)
18
18
  end
19
19
 
20
20
  private
21
21
 
22
- def graph_data(type, params={})
23
- response = Typhoeus::Request.get("#{StatRaptor.endpoint}/graphs/#{type}", :params => params)
24
- response.body
22
+ def graph_data(type, params = {})
23
+ get("/graphs/#{type}.json", params)
25
24
  end
26
25
  end
27
26
  end
@@ -1,14 +1,12 @@
1
1
  module StatRaptor
2
2
  class Client
3
3
  module Projects
4
- def create_project(params={})
5
- response = Typhoeus::Request.post("#{StatRaptor.endpoint}/projects", :params => {:platform_credentials => StatRaptor.platform_credentials, :user_credentials => params[:user_credentials], :project => params[:project]})
6
- response.body
4
+ def create_project(params = {})
5
+ post("/projects", params)
7
6
  end
8
7
 
9
- def delete_project(params={})
10
- response = Typhoeus::Request.delete("#{StatRaptor.endpoint}/projects/#{params[:subdomain]}", :params => {:platform_credentials => StatRaptor.platform_credentials, :user_credentials => params[:user_credentials]})
11
- handle_response(response)
8
+ def delete_project(params = {})
9
+ delete("/projects/#{params[:subdomain]}", :user_credentials => params[:user_credentials])
12
10
  end
13
11
  end
14
12
  end
@@ -1,16 +1,16 @@
1
- require 'statraptor/error/not_found'
2
-
3
1
  module StatRaptor
4
2
  class Client
5
3
  module Users
6
- def create_user(params={})
7
- response = Typhoeus::Request.post("#{StatRaptor.endpoint}/users", :params => {:platform_credentials => StatRaptor.platform_credentials, :user => params })
8
- response.body
4
+ def create_user(params = {})
5
+ post("/users.json", :user => params)
9
6
  end
10
7
 
11
8
  def delete_user(user_credentials)
12
- response = Typhoeus::Request.delete("#{StatRaptor.endpoint}/users/#{user_credentials}", :params => {:platform_credentials => StatRaptor.platform_credentials})
13
- handle_response(response)
9
+ delete("/users/#{user_credentials}.json")
10
+ end
11
+
12
+ def get_users
13
+ get("/users.json")
14
14
  end
15
15
  end
16
16
  end
@@ -1,5 +1,7 @@
1
1
  require 'statraptor/config'
2
2
  require 'statraptor/error'
3
+ require 'statraptor/error/not_found'
4
+ require 'statraptor/error/unauthorized'
3
5
 
4
6
  module StatRaptor
5
7
  class Client
@@ -26,15 +28,65 @@ module StatRaptor
26
28
  end
27
29
  end
28
30
 
31
+ private
32
+
33
+ def get(url, params = {})
34
+ request_and_parse :get, url, params
35
+ end
36
+
37
+ def post(url, params = {})
38
+ request_and_parse :post, url, params
39
+ end
40
+
41
+ def put(url, params = {})
42
+ request_and_parse :put, url, params
43
+ end
44
+
45
+ def delete(url, params = {})
46
+ request_and_parse :delete, url, params
47
+ end
48
+
49
+ def request_and_parse(method, url, params = {})
50
+ response = request_api_response(method, url, params)
51
+ handle_response(response)
52
+ parse_response(response)
53
+ end
54
+
55
+ def request_api_response(method, url, params = {})
56
+ params.merge!(:platform_credentials => StatRaptor.platform_credentials)
57
+
58
+ Typhoeus::Request.run(
59
+ "#{StatRaptor.endpoint}/api/v1#{url}",
60
+ :method => method,
61
+ :params => params,
62
+ :disable_ssl_peer_verification => StatRaptor.disable_ssl_peer_verification,
63
+ :timeout => StatRaptor.timeout
64
+ )
65
+ end
66
+
67
+ def parse_response(response)
68
+ JSON.parse(response.body)
69
+ rescue JSON::ParserError
70
+ {}
71
+ end
72
+
29
73
  def handle_response(response)
30
74
  case response.code
31
75
  when 200
32
76
  return true
33
- when 422
34
- message = JSON.parse(response.body)["errors"].join(",")
35
- raise StatRaptor::Error::NotFound.new(message)
77
+ when 404
78
+ raise StatRaptor::Error::NotFound.new(format_error(response))
79
+ when 401
80
+ raise StatRaptor::Error::Unauthorized.new(format_error(response))
81
+ else
82
+ raise StatRaptor::Error.new(format_error(response))
36
83
  end
37
84
  end
38
85
 
86
+ def format_error(response)
87
+ parsed_response = parse_response(response)
88
+ parsed_response["errors"] ? parsed_response["errors"].join(", ") : ''
89
+ end
90
+
39
91
  end
40
92
  end
@@ -11,18 +11,23 @@ module StatRaptor
11
11
  # The value sent in the 'User-Agent' header if none is set
12
12
  DEFAULT_USER_AGENT = "StatRaptor Ruby Gem #{StatRaptor::VERSION}"
13
13
 
14
- # The timeout in seconds that will be used if none is set
15
- DEFAULT_TIMEOUT = 2
14
+ # The timeout (in milliseconds) that will be used if none is set
15
+ DEFAULT_TIMEOUT = 5000 # 5 seconds
16
16
 
17
17
  # The default platform_credentials if none are set
18
18
  DEFAULT_PLATFORM_CREDENTIALS = nil
19
19
 
20
+ # If you’re hitting a non-verifiable SSL server
21
+ # then you’ll have to disable peer verification to make SSL work
22
+ DEFAULT_DISABLE_SSL_PEER_VERIFICATION = false
23
+
20
24
  # An array of valid keys in the options hash when configuring a {StatRaptor::Client}
21
25
  VALID_OPTIONS_KEYS = [
22
26
  :endpoint,
23
27
  :user_agent,
24
28
  :timeout,
25
- :platform_credentials
29
+ :platform_credentials,
30
+ :disable_ssl_peer_verification
26
31
  ]
27
32
 
28
33
  attr_accessor *VALID_OPTIONS_KEYS
@@ -47,10 +52,11 @@ module StatRaptor
47
52
 
48
53
  # Reset all configuration options to defaults
49
54
  def reset
50
- self.endpoint = DEFAULT_ENDPOINT
51
- self.user_agent = DEFAULT_USER_AGENT
52
- self.timeout = DEFAULT_TIMEOUT
53
- self.platform_credentials = DEFAULT_PLATFORM_CREDENTIALS
55
+ self.endpoint = DEFAULT_ENDPOINT
56
+ self.user_agent = DEFAULT_USER_AGENT
57
+ self.timeout = DEFAULT_TIMEOUT
58
+ self.platform_credentials = DEFAULT_PLATFORM_CREDENTIALS
59
+ self.disable_ssl_peer_verification = DEFAULT_DISABLE_SSL_PEER_VERIFICATION
54
60
  self
55
61
  end
56
62
  end
@@ -0,0 +1,5 @@
1
+ module StatRaptor
2
+ # Raised when StatRaptor returns the HTTP status code 401
3
+ class Error::Unauthorized < StatRaptor::Error
4
+ end
5
+ end
@@ -1,3 +1,3 @@
1
1
  module StatRaptor
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
data/spec/spec_helper.rb CHANGED
@@ -24,6 +24,8 @@ RSpec.configure do |config|
24
24
  config.before(:all) do
25
25
  StatRaptor.configure do |config|
26
26
  config.platform_credentials = platform_credentials
27
+ config.endpoint = statraptor_endpoint
28
+ config.disable_ssl_peer_verification = true
27
29
  end
28
30
  end
29
31
  end
@@ -32,7 +34,7 @@ VCR.configure do |config|
32
34
  config.hook_into :webmock
33
35
  config.cassette_library_dir = 'spec/cassettes'
34
36
  config.configure_rspec_metadata!
35
- config.default_cassette_options = {:record => :new_episodes, :match_requests_on => [:uri, :body, :headers]}
37
+ config.default_cassette_options = {:record => :once, :match_requests_on => [:uri, :body, :headers]}
36
38
  end
37
39
 
38
40
  def platform_credentials
@@ -51,6 +53,10 @@ def user_credentials
51
53
  remote_configuration["user_credentials"]
52
54
  end
53
55
 
56
+ def statraptor_endpoint
57
+ remote_configuration["endpoint"]
58
+ end
59
+
54
60
  private
55
61
 
56
62
  def remote_configuration
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe StatRaptor::Client::Graphs, :vcr do
4
+ let(:client) { StatRaptor::Client.new }
5
+
6
+ ["revenue", "subscribers", "average_lifetime_value", "churn"].each do |graph_name|
7
+ context "#get_#{graph_name}_graph_data" do
8
+ it "should return a hash of #{graph_name} graph data" do
9
+ graph = client.send("get_#{graph_name}_graph_data", :user_credentials => user_credentials, :subdomain => chargify_subdomain)
10
+ graph.should be_a(Hash)
11
+ graph["graph_data"].keys.should include("actual", "projected", "x_labels")
12
+ end
13
+ end
14
+ end
15
+
16
+ end
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ describe StatRaptor::Client::Projects do
4
+ let(:client) { StatRaptor::Client.new }
5
+
6
+ context "#create_project", :vcr do
7
+ before do
8
+ @user = client.create_user(:email => "tommy@example.com", :chargify_api_key => "ABC123")
9
+ @user["user_credentials"].should_not be_nil
10
+ end
11
+
12
+ it "returns a project hash on success" do
13
+ project = client.create_project(:user_credentials => @user["user_credentials"], :project => {
14
+ :name => "Zippy Sunday", :subdomain => "zippy-sunday", :component => "basic"
15
+ })
16
+
17
+ project["name"].should == "Zippy Sunday"
18
+ project["subdomain"].should == "zippy-sunday"
19
+ project["component"].should == "basic"
20
+ end
21
+ end
22
+
23
+ context "#delete_project", :vcr do
24
+ it "returns the project hash on success" do
25
+ user = client.create_user(:email => "sammy@example.com", :chargify_api_key => "ABC123")
26
+ project = client.create_project(:user_credentials => user["user_credentials"], :project => {
27
+ :name => "Modern Marvels", :subdomain => "modern-marvels", :component => "advanced"
28
+ })
29
+
30
+ deleted_project = client.delete_project(:user_credentials => user["user_credentials"], :subdomain => "modern-marvels")
31
+ deleted_project["name"].should == "Modern Marvels"
32
+ deleted_project["subdomain"].should == "modern-marvels"
33
+ deleted_project["component"].should == "advanced"
34
+ end
35
+
36
+ it "raises an unauthorized exception if the user credentials are incorrect" do
37
+ lambda {
38
+ client.delete_project(:user_credentials => "abc123", :subdomain => "modern-marvels")
39
+ }.should raise_error(StatRaptor::Error::Unauthorized, "Invalid user API key specified")
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe StatRaptor::Client::Users do
4
+ let(:client) { StatRaptor::Client.new }
5
+
6
+ context "#create", :vcr do
7
+ it "returns a user hash on success" do
8
+ user = client.create_user(:email => "austin@example.com", :chargify_api_key => "ABC123")
9
+ user["user_credentials"].should_not be_nil
10
+ user["chargify_api_key"].should == "ABC123"
11
+ user["email"].should == "austin@example.com"
12
+ end
13
+ end
14
+
15
+ context "#delete_user", :vcr do
16
+ it "returns the user hash on success" do
17
+ user = client.create_user(:email => "leroy@example.com", :chargify_api_key => "XYZ123")
18
+ deleted_user = client.delete_user(user["user_credentials"])
19
+ deleted_user["user_credentials"].should == user["user_credentials"]
20
+ deleted_user["chargify_api_key"].should == "XYZ123"
21
+ deleted_user["email"].should == "leroy@example.com"
22
+ end
23
+ end
24
+
25
+ context "#get_users", :vcr do
26
+ it "returns an array of hashes" do
27
+ users = client.get_users
28
+ users.count.should > 1
29
+ users.should be_a(Array)
30
+ users.first.should be_a(Hash)
31
+ end
32
+ end
33
+ end
@@ -33,7 +33,8 @@ describe StatRaptor::Client do
33
33
  :endpoint => "http://example.com",
34
34
  :timeout => 300,
35
35
  :platform_credentials => "ABC12345",
36
- :user_agent => "Fu Manchu Ruby Gem 2.0.0"
36
+ :user_agent => "Fu Manchu Ruby Gem 2.0.0",
37
+ :disable_ssl_peer_verification => true
37
38
  }
38
39
  end
39
40
 
@@ -1,6 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe StatRaptor do
4
+ before do
5
+ StatRaptor.reset
6
+ end
7
+
4
8
  after do
5
9
  StatRaptor.reset
6
10
  end
@@ -51,12 +55,28 @@ describe StatRaptor do
51
55
  end
52
56
 
53
57
  describe ".timeout=" do
54
- it "should return the timeout" do
58
+ it "should set the timeout" do
55
59
  StatRaptor.timeout = 15
56
60
  StatRaptor.timeout.should == 15
57
61
  end
58
62
  end
59
63
 
64
+ describe ".disable_ssl_peer_verification" do
65
+ it "should return the default setting" do
66
+ StatRaptor.disable_ssl_peer_verification.should == StatRaptor::Config::DEFAULT_DISABLE_SSL_PEER_VERIFICATION
67
+ end
68
+ end
69
+
70
+ describe ".disable_ssl_peer_verification=" do
71
+ it "should set the disable_ssl_peer_verification option" do
72
+ StatRaptor.disable_ssl_peer_verification = true
73
+ StatRaptor.disable_ssl_peer_verification.should be_true
74
+
75
+ StatRaptor.disable_ssl_peer_verification = false
76
+ StatRaptor.disable_ssl_peer_verification.should be_false
77
+ end
78
+ end
79
+
60
80
  describe ".configure" do
61
81
  StatRaptor::Config::VALID_OPTIONS_KEYS.each do |key|
62
82
  it "should set the #{key}" do
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe StatRaptor::Error do
4
+ context "#initialize" do
5
+ it "returns an instance of StatRaptor::Error" do
6
+ StatRaptor::Error.new("message").should be_a(StatRaptor::Error)
7
+ end
8
+
9
+ it "is a subclass of StandardError" do
10
+ StatRaptor::Error.superclass.should == StandardError
11
+ end
12
+ end
13
+ end
data/statraptor.gemspec CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
8
8
  s.name = "statraptor"
9
9
  s.version = StatRaptor::VERSION
10
10
  s.platform = Gem::Platform::RUBY
11
- s.date = "2012-02-24"
11
+ s.date = "2012-02-28"
12
12
  s.authors = ["Shay Frendt"]
13
13
  s.email = "shay.frendt@gmail.com"
14
14
  s.homepage = "http://github.com/chargify/statraptor"
data/todo.taskpaper ADDED
@@ -0,0 +1,3 @@
1
+ StatRaptor Todo:
2
+ - Raise an error on a timeout
3
+ - Set the user_agent for all HTTP calls
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: statraptor
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 1
8
+ - 2
9
9
  - 0
10
- version: 0.1.0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Shay Frendt
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-02-24 00:00:00 -05:00
18
+ date: 2012-02-28 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -106,7 +106,7 @@ dependencies:
106
106
  requirements:
107
107
  - - "="
108
108
  - !ruby/object:Gem::Version
109
- hash: 3424234125
109
+ hash: -2355515322
110
110
  segments:
111
111
  - 2
112
112
  - 0
@@ -206,15 +206,18 @@ files:
206
206
  - lib/statraptor/config.rb
207
207
  - lib/statraptor/error.rb
208
208
  - lib/statraptor/error/not_found.rb
209
+ - lib/statraptor/error/unauthorized.rb
209
210
  - lib/statraptor/version.rb
210
- - spec/client/graphs_spec.rb
211
- - spec/client/projects_spec.rb
212
- - spec/client/user_spec.rb
213
- - spec/client_spec.rb
214
- - spec/config_spec.rb
215
211
  - spec/spec.opts
216
212
  - spec/spec_helper.rb
213
+ - spec/statrapator/client/graphs_spec.rb
214
+ - spec/statrapator/client/projects_spec.rb
215
+ - spec/statrapator/client/user_spec.rb
216
+ - spec/statrapator/client_spec.rb
217
+ - spec/statrapator/config_spec.rb
218
+ - spec/statrapator/error_spec.rb
217
219
  - statraptor.gemspec
220
+ - todo.taskpaper
218
221
  has_rdoc: true
219
222
  homepage: http://github.com/chargify/statraptor
220
223
  licenses: []
@@ -252,10 +255,11 @@ signing_key:
252
255
  specification_version: 3
253
256
  summary: A StatRaptor API wrapper for Ruby
254
257
  test_files:
255
- - spec/client/graphs_spec.rb
256
- - spec/client/projects_spec.rb
257
- - spec/client/user_spec.rb
258
- - spec/client_spec.rb
259
- - spec/config_spec.rb
260
258
  - spec/spec.opts
261
259
  - spec/spec_helper.rb
260
+ - spec/statrapator/client/graphs_spec.rb
261
+ - spec/statrapator/client/projects_spec.rb
262
+ - spec/statrapator/client/user_spec.rb
263
+ - spec/statrapator/client_spec.rb
264
+ - spec/statrapator/config_spec.rb
265
+ - spec/statrapator/error_spec.rb
@@ -1,41 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe StatRaptor::Client::Graphs, :vcr do
4
- let(:client) { StatRaptor::Client.new }
5
-
6
- context "#get_revenue_graph_data" do
7
- it "returns the revenue graph json" do
8
- graph_json = client.get_revenue_graph_data(:user_credentials => user_credentials, :subdomain => chargify_subdomain)
9
- graph_json.should == "{\"graph_data\":{\"actual\":[0,0,557,353,360,460,460,552,512,582,282,282,null,null,null,null],\"projected\":[null,null,null,null,null,null,null,null,null,null,null,282,282,282,282,282],\"x_labels\":[\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\",\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\"]}}"
10
- end
11
-
12
- it "raises an exception if the graph data is not found"
13
- end
14
-
15
- context "#get_subscribers_graph_data" do
16
- it "returns the subscribers graph json" do
17
- graph_json = client.get_subscribers_graph_data(:user_credentials => user_credentials, :subdomain => chargify_subdomain)
18
- graph_json.should == "{\"graph_data\":{\"actual\":[0,0,8,8,8,10,10,13,14,16,9,6,null,null,null,null],\"projected\":[null,null,null,null,null,null,null,null,null,null,null,6,4,4,4,4],\"x_labels\":[\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\",\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\"]}}"
19
- end
20
-
21
- it "raises an exception if the graph data is not found"
22
- end
23
-
24
- context "#get_average_lifetime_value_graph_data" do
25
- it "returns the average lifetime value graph json" do
26
- graph_json = client.get_average_lifetime_value_graph_data(:user_credentials => user_credentials, :subdomain => chargify_subdomain)
27
- graph_json.should == "{\"graph_data\":{\"actual\":[0,0,79,102,143,160,202,214,255,244,466,747,null,null,null,null],\"projected\":[null,null,null,null,null,null,null,null,null,null,null,747,1028,1309,1590,1871],\"x_labels\":[\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\",\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\"]}}"
28
- end
29
-
30
- it "raises an exception if the graph data is not found"
31
- end
32
-
33
- context "#get_churn_graph_data" do
34
- it "returns the churn graph json" do
35
- graph_json = client.get_churn_graph_data(:user_credentials => user_credentials, :subdomain => chargify_subdomain)
36
- graph_json.should == "{\"graph_data\":{\"actual\":[0,0,20,0,0,33,0,0,50,0,200,200,null,null,null,null],\"projected\":[null,null,null,null,null,null,null,null,null,null,null,200,200,200,200,200],\"x_labels\":[\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\",\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\"]}}"
37
- end
38
-
39
- it "raises an exception if the graph data is not found"
40
- end
41
- end
@@ -1,42 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe StatRaptor::Client::Projects do
4
- let(:client) { StatRaptor::Client.new }
5
-
6
- context "#create_project", :vcr do
7
- it "returns the project json on success" do
8
- user_json = client.create_user(:email => "zippy@example.com", :chargify_api_key => chargify_api_key)
9
- user_hash = JSON.parse(user_json)
10
-
11
- project_json = client.create_project(:user_credentials => user_hash["user_credentials"], :project => {
12
- :name => "Zippy Sunday", :subdomain => "zippy-sunday", :component => "basic"
13
- })
14
-
15
- project_hash = JSON.parse(project_json)
16
- project_hash["name"].should == "Zippy Sunday"
17
- project_hash["subdomain"].should == "zippy-sunday"
18
- project_hash["component"].should == "basic"
19
- end
20
-
21
- it "raises an exception if the project was not created"
22
- end
23
-
24
- context "#delete_project", :vcr do
25
- it "returns true on success" do
26
- user_json = client.create_user(:email => "sammy@example.com", :chargify_api_key => chargify_api_key)
27
- user_hash = JSON.parse(user_json)
28
-
29
- project_json = client.create_project(:user_credentials => user_hash["user_credentials"], :project => {
30
- :name => "Modern Marvels", :subdomain => "modern-marvels", :component => "advanced"
31
- })
32
-
33
- client.delete_project(:user_credentials => user_hash["user_credentials"], :subdomain => "modern-marvels").should be_true
34
- end
35
-
36
- it "raises an exception if the project was not deleted" do
37
- lambda {
38
- client.delete_project(:user_credentials => "abc123", :subdomain => "modern-marvels")
39
- }.should raise_error(StatRaptor::Error::NotFound)
40
- end
41
- end
42
- end
@@ -1,31 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe StatRaptor::Client::Users do
4
- let(:client) { StatRaptor::Client.new }
5
-
6
- context "#create", :vcr do
7
- it "returns the user json on success" do
8
- user_json = client.create_user(:email => "timmy@example.com", :chargify_api_key => chargify_api_key)
9
- user_hash = JSON.parse(user_json)
10
- user_hash["user_credentials"].should_not be_nil
11
- user_hash["chargify_api_key"].should == chargify_api_key
12
- user_hash["email"].should == "timmy@example.com"
13
- end
14
-
15
- it "raises an exception if the user was not created"
16
- end
17
-
18
- context "#delete_user", :vcr do
19
- it "returns true on success" do
20
- user_json = client.create_user(:email => "ronny@example.com", :chargify_api_key => chargify_api_key)
21
- user_hash = JSON.parse(user_json)
22
- client.delete_user(user_hash["user_credentials"]).should be_true
23
- end
24
-
25
- it "raises an NotFound exception if the user does not exist" do
26
- lambda {
27
- client.delete_user("abc123")
28
- }.should raise_error(StatRaptor::Error::NotFound)
29
- end
30
- end
31
- end