activeforce 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. data/Gemfile +15 -0
  2. data/Gemfile.lock +128 -0
  3. data/LICENSE.txt +20 -0
  4. data/README.md +112 -0
  5. data/Rakefile +47 -0
  6. data/VERSION +1 -0
  7. data/activeforce.gemspec +151 -0
  8. data/app/models/salesforce/account.rb +4 -0
  9. data/app/models/salesforce/activity_history.rb +4 -0
  10. data/app/models/salesforce/approval.rb +4 -0
  11. data/app/models/salesforce/campaign.rb +4 -0
  12. data/app/models/salesforce/campaign_feed.rb +4 -0
  13. data/app/models/salesforce/campaign_member.rb +4 -0
  14. data/app/models/salesforce/case.rb +4 -0
  15. data/app/models/salesforce/case_comment.rb +4 -0
  16. data/app/models/salesforce/case_contact_role.rb +4 -0
  17. data/app/models/salesforce/case_feed.rb +4 -0
  18. data/app/models/salesforce/case_history.rb +4 -0
  19. data/app/models/salesforce/case_share.rb +4 -0
  20. data/app/models/salesforce/case_solution.rb +4 -0
  21. data/app/models/salesforce/case_status.rb +4 -0
  22. data/app/models/salesforce/case_team_member.rb +4 -0
  23. data/app/models/salesforce/community.rb +4 -0
  24. data/app/models/salesforce/contact.rb +4 -0
  25. data/app/models/salesforce/contact_feed.rb +4 -0
  26. data/app/models/salesforce/contact_history.rb +4 -0
  27. data/app/models/salesforce/contract.rb +4 -0
  28. data/app/models/salesforce/document.rb +4 -0
  29. data/app/models/salesforce/event.rb +4 -0
  30. data/app/models/salesforce/feed_item.rb +4 -0
  31. data/app/models/salesforce/group.rb +4 -0
  32. data/app/models/salesforce/group_member.rb +4 -0
  33. data/app/models/salesforce/idea.rb +4 -0
  34. data/app/models/salesforce/lead.rb +4 -0
  35. data/app/models/salesforce/lead_status.rb +4 -0
  36. data/app/models/salesforce/name.rb +4 -0
  37. data/app/models/salesforce/note.rb +4 -0
  38. data/app/models/salesforce/open_activity.rb +4 -0
  39. data/app/models/salesforce/opportunity.rb +4 -0
  40. data/app/models/salesforce/organization.rb +4 -0
  41. data/app/models/salesforce/partner.rb +4 -0
  42. data/app/models/salesforce/period.rb +4 -0
  43. data/app/models/salesforce/product2.rb +4 -0
  44. data/app/models/salesforce/product2_feed.rb +4 -0
  45. data/app/models/salesforce/profile.rb +4 -0
  46. data/app/models/salesforce/quote.rb +4 -0
  47. data/app/models/salesforce/solution.rb +4 -0
  48. data/app/models/salesforce/task.rb +4 -0
  49. data/app/models/salesforce/task_feed.rb +4 -0
  50. data/app/models/salesforce/task_priority.rb +4 -0
  51. data/app/models/salesforce/task_status.rb +4 -0
  52. data/app/models/salesforce/user.rb +4 -0
  53. data/app/models/salesforce/user_role.rb +4 -0
  54. data/app/models/salesforce/vote.rb +4 -0
  55. data/lib/activeforce.rb +29 -0
  56. data/lib/salesforce/attributes.rb +13 -0
  57. data/lib/salesforce/authentication.rb +25 -0
  58. data/lib/salesforce/base.rb +240 -0
  59. data/lib/salesforce/bulk/batch.rb +77 -0
  60. data/lib/salesforce/bulk/job.rb +103 -0
  61. data/lib/salesforce/bulk/operations.rb +25 -0
  62. data/lib/salesforce/bulk/update_job.rb +24 -0
  63. data/lib/salesforce/column.rb +98 -0
  64. data/lib/salesforce/columns.rb +60 -0
  65. data/lib/salesforce/config.rb +110 -0
  66. data/lib/salesforce/connection.rb +33 -0
  67. data/lib/salesforce/connection/async.rb +36 -0
  68. data/lib/salesforce/connection/conversion.rb +37 -0
  69. data/lib/salesforce/connection/http_methods.rb +72 -0
  70. data/lib/salesforce/connection/rest_api.rb +52 -0
  71. data/lib/salesforce/connection/soap_api.rb +74 -0
  72. data/lib/salesforce/engine.rb +6 -0
  73. data/lib/salesforce/errors.rb +33 -0
  74. data/test/salesforce/authentication_test.rb +52 -0
  75. data/test/salesforce/base_test.rb +440 -0
  76. data/test/salesforce/bulk/batch_test.rb +79 -0
  77. data/test/salesforce/bulk/update_job_test.rb +125 -0
  78. data/test/salesforce/column_test.rb +115 -0
  79. data/test/salesforce/config_test.rb +163 -0
  80. data/test/salesforce/connection/async_test.rb +138 -0
  81. data/test/salesforce/connection/http_methods_test.rb +242 -0
  82. data/test/salesforce/connection/rest_api_test.rb +61 -0
  83. data/test/salesforce/connection/soap_api_test.rb +148 -0
  84. data/test/salesforce/connection_test.rb +148 -0
  85. data/test/test_helper.rb +79 -0
  86. metadata +295 -0
@@ -0,0 +1,148 @@
1
+ require 'test_helper'
2
+
3
+ class Salesforce::ConnectionTest < ActiveSupport::TestCase
4
+ def test_query__less_than_2000_records
5
+ Salesforce.connection.expects(:get).with("query.json?q=SELECT+Id+FROM+Account", :format => :json).returns({ "records" => [{ :record => 1, "attributes" => 'foo'}], "done" => true, "totalSize" => 1999})
6
+ assert_equal [{ :record => 1 }], Salesforce.connection.soql("SELECT Id FROM Account")
7
+ end
8
+
9
+ def test_query__more_than_2000_records
10
+ Salesforce.connection.expects(:get).with("query.json?q=SELECT+Id+FROM+Account", :format => :json).returns({
11
+ "records" => [ { :record => 1, "attributes" => "foo" } ], "done" => false, "totalSize" => 4999, "nextRecordsUrl" =>"/services/data/v22.0/query/01g8000000L9FSmAAN-2000"})
12
+
13
+ Salesforce.connection.expects(:get).with("/services/data/v22.0/query/01g8000000L9FSmAAN-2000.json", :format => :json).returns({
14
+ "records" => [ { :record => 2, "attributes" => "foo" } ], "done" => false, "totalSize" => 4999, "nextRecordsUrl" =>"/services/data/v22.0/query/01g8000000L9FSmAAN-4000"})
15
+
16
+ Salesforce.connection.expects(:get).with("/services/data/v22.0/query/01g8000000L9FSmAAN-4000.json", :format => :json).returns({
17
+ "records" => [ { :record => 3, "attributes" => "foo" } ], "done" => true, "totalSize" => 4999})
18
+
19
+ assert_equal [{ :record => 1}, { :record => 2}, { :record => 3}], Salesforce.connection.soql("SELECT Id FROM Account")
20
+ end
21
+
22
+ def test_as_logged_in_user__login_succeeded__calls_block
23
+ Salesforce::Authentication.expects(:session_id)
24
+ results = Salesforce.connection.as_logged_in_user do
25
+ :results
26
+ end
27
+ assert_equal :results, results
28
+ end
29
+
30
+ def test_as_logged_in_user__logged_out__recovers
31
+ flag = nil
32
+ Salesforce::Authentication.expects(:session_id).twice
33
+ Salesforce::Authentication.expects(:logout)
34
+ error = RestClient::Request::Unauthorized.new
35
+ results = Salesforce.connection.as_logged_in_user do
36
+ unless flag
37
+ flag = true
38
+ raise error
39
+ end
40
+ :results
41
+ end
42
+ assert_equal :results, results
43
+ end
44
+
45
+ def test_as_logged_in_user__authorization_failure
46
+ flag = nil
47
+ Salesforce::Authentication.expects(:session_id).times(2)
48
+ Salesforce::Authentication.expects(:logout)
49
+ error = RestClient::Request::Unauthorized.new
50
+ assert_raises RestClient::Request::Unauthorized do
51
+ Salesforce.connection.as_logged_in_user do
52
+ raise error
53
+ end
54
+ end
55
+ end
56
+
57
+ def test_as_logged_in_user__invalid_username_password__recovers
58
+ @on_login_failure_called = false
59
+
60
+ Salesforce.configure do
61
+ on_login_failure { @on_login_failure_called = true }
62
+ end
63
+
64
+ xml = <<-XML
65
+ <?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><soapenv:Fault xmlns:fns="http://fault.api.zuora.com/"><faultcode>sf:INVALID_LOGIN</faultcode><faultstring>INVALID_LOGIN: Invalid username, password, security token; or user locked out.</faultstring><detail><fns:LoginFault><fns:FaultCode>INVALID_LOGIN</fns:FaultCode><fns:FaultMessage>Invalid username, password, security token; or user locked out.</fns:FaultMessage></fns:LoginFault></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope>
66
+ XML
67
+
68
+ error = Savon::SOAP::Fault.new(stub(:body => xml))
69
+
70
+ flag = nil
71
+ Salesforce::Authentication.expects(:session_id).twice
72
+ Salesforce::Authentication.expects(:logout)
73
+ results = Salesforce.connection.as_logged_in_user do
74
+ unless flag
75
+ flag = true
76
+ raise error
77
+ end
78
+ :results
79
+ end
80
+
81
+ assert_equal :results, results
82
+ assert @on_login_failure_called, "Salesforce::Config.on_login_failure was not called upon login failure"
83
+ end
84
+
85
+ def test_as_logged_in_user__invalid_username_password__doesnt_recover
86
+ @on_login_failure_called = 0
87
+
88
+ Salesforce.configure do
89
+ on_login_failure { @on_login_failure_called += 1 }
90
+ end
91
+
92
+ xml = <<-XML
93
+ <?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><soapenv:Fault xmlns:fns="http://fault.api.zuora.com/"><faultcode>sf:INVALID_LOGIN</faultcode><faultstring>INVALID_LOGIN: Invalid username, password, security token; or user locked out.</faultstring><detail><fns:LoginFault><fns:FaultCode>INVALID_LOGIN</fns:FaultCode><fns:FaultMessage>Invalid username, password, security token; or user locked out.</fns:FaultMessage></fns:LoginFault></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope>
94
+ XML
95
+
96
+ error = Savon::SOAP::Fault.new(stub(:body => xml))
97
+
98
+ flag = nil
99
+ Salesforce::Authentication.expects(:session_id).twice
100
+ Salesforce::Authentication.expects(:logout)
101
+
102
+ assert_raises Savon::SOAP::Fault do
103
+ Salesforce.connection.as_logged_in_user do
104
+ raise error
105
+ end
106
+ end
107
+
108
+ assert_equal 1, @on_login_failure_called, "Salesforce::Config.on_login_failure was not called upon login failure"
109
+ end
110
+
111
+ def test_as_logged_in_user__invalid_username_password__recovers__no_on_login_failure_hook
112
+ xml = <<-XML
113
+ <?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><soapenv:Fault xmlns:fns="http://fault.api.zuora.com/"><faultcode>sf:INVALID_LOGIN</faultcode><faultstring>INVALID_LOGIN: Invalid username, password, security token; or user locked out.</faultstring><detail><fns:LoginFault><fns:FaultCode>INVALID_LOGIN</fns:FaultCode><fns:FaultMessage>Invalid username, password, security token; or user locked out.</fns:FaultMessage></fns:LoginFault></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope>
114
+ XML
115
+
116
+ error = Savon::SOAP::Fault.new(stub(:body => xml))
117
+
118
+ flag = nil
119
+ Salesforce::Authentication.expects(:session_id).twice
120
+ Salesforce::Authentication.expects(:logout)
121
+ results = Salesforce.connection.as_logged_in_user do
122
+ unless flag
123
+ flag = true
124
+ raise error
125
+ end
126
+ :results
127
+ end
128
+
129
+ assert_equal :results, results
130
+ end
131
+
132
+ def test_as_logged_in_user__other_failure
133
+ Salesforce::Authentication.stubs(:session_id)
134
+ Salesforce::Authentication.stubs(:logout)
135
+
136
+ expects(:my_method).twice.raises(RestClient::Request::Unauthorized.new).then.raises(StandardError.new("some other error"))
137
+
138
+ assert_raises StandardError do
139
+ Salesforce.connection.as_logged_in_user do
140
+ my_method
141
+ end
142
+ end
143
+ end
144
+
145
+ def test_convert
146
+ assert_equal "str", Salesforce.connection.convert("str", {})
147
+ end
148
+ end
@@ -0,0 +1,79 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'test/unit'
11
+
12
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
13
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
+ require 'activeforce'
15
+ Dir.glob(File.expand_path('../../app/models/salesforce/**.rb', __FILE__)).each { |file| require(file) }
16
+
17
+ class Test::Unit::TestCase
18
+ end
19
+
20
+ Time.zone = 'America/Los_Angeles'
21
+
22
+ class ActiveSupport::TestCase
23
+ setup :clean_configuration
24
+ setup :stub_soap
25
+
26
+ class ::Salesforce::BulkTable < Salesforce::Base
27
+ self.custom_object = true
28
+ end
29
+
30
+ def clean_configuration
31
+ Salesforce::Config.instance_variable_set(:@instance, nil)
32
+ end
33
+
34
+ def stub_soap
35
+ Savon::Client.any_instance.stubs(:request)
36
+ end
37
+
38
+ def clear_columns_for_bulk_table
39
+ Salesforce::BulkTable.cached_columns = nil
40
+ end
41
+
42
+ def clear_columns_for_account
43
+ Salesforce::Account.cached_columns = nil
44
+ end
45
+
46
+ def setup_columns_for_bulk_table
47
+ clear_columns_for_bulk_table
48
+ columns_hash = [
49
+ { "name" => "Id", "type" => "id", "createable" => false, "updateable" => false},
50
+ { "name" => "Account__c", "type" => "reference", "createable" => true, "updateable" => false, "custom" => true },
51
+ { "name" => "Car__c", "type" => "reference", "createable" => false, "updateable" => true, "custom" => true},
52
+ { "name" => "Name__c", "type" => "string", "createable" => true, "updateable" => true, "custom" => true},
53
+ { "name" => "dob__c", "type" => "date", "createable" => true, "updateable" => true, "custom" => true}
54
+ ]
55
+
56
+ Salesforce.connection.stubs(:fields).with("BulkTable__c").returns(columns_hash).twice
57
+ columns = Salesforce::Columns.new("BulkTable__c")
58
+ assert_equal columns, Salesforce::BulkTable.columns
59
+ end
60
+
61
+ def setup_columns_for_account
62
+ clear_columns_for_account
63
+ columns_hash = [
64
+ { "name" => "Id", "type" => "id", "createable" => false, "updateable" => false},
65
+ { "name" => "Name", "type" => "string", "createable" => true, "updateable" => true},
66
+ { "name" => "Type", "type" => "string", "createable" => true, "updateable" => true},
67
+ { "name" => "Address", "type" => "string", "createable" => true, "updateable" => true},
68
+ { "name" => "City", "type" => "string", "createable" => true, "updateable" => true},
69
+ { "name" => "State", "type" => "string", "createable" => true, "updateable" => true},
70
+ { "name" => "Number", "type" => "string", "createable" => true, "updateable" => false}
71
+ ]
72
+
73
+ Salesforce.connection.stubs(:fields).with("Account").returns(columns_hash).twice
74
+ columns = Salesforce::Columns.new("Account")
75
+ assert_equal columns, Salesforce::Account.columns
76
+ end
77
+
78
+
79
+ end
metadata ADDED
@@ -0,0 +1,295 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: activeforce
3
+ version: !ruby/object:Gem::Version
4
+ hash: 3
5
+ prerelease:
6
+ segments:
7
+ - 1
8
+ - 5
9
+ - 0
10
+ version: 1.5.0
11
+ platform: ruby
12
+ authors:
13
+ - Tushar Ranka
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2012-06-29 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ type: :runtime
22
+ requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ hash: 3
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ version_requirements: *id001
32
+ name: rails
33
+ prerelease: false
34
+ - !ruby/object:Gem::Dependency
35
+ type: :runtime
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ hash: 3
42
+ segments:
43
+ - 0
44
+ version: "0"
45
+ version_requirements: *id002
46
+ name: savon
47
+ prerelease: false
48
+ - !ruby/object:Gem::Dependency
49
+ type: :runtime
50
+ requirement: &id003 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ hash: 3
56
+ segments:
57
+ - 0
58
+ version: "0"
59
+ version_requirements: *id003
60
+ name: blockenspiel
61
+ prerelease: false
62
+ - !ruby/object:Gem::Dependency
63
+ type: :runtime
64
+ requirement: &id004 !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ hash: 3
70
+ segments:
71
+ - 0
72
+ version: "0"
73
+ version_requirements: *id004
74
+ name: rest-client
75
+ prerelease: false
76
+ - !ruby/object:Gem::Dependency
77
+ type: :runtime
78
+ requirement: &id005 !ruby/object:Gem::Requirement
79
+ none: false
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ hash: 3
84
+ segments:
85
+ - 0
86
+ version: "0"
87
+ version_requirements: *id005
88
+ name: fastercsv
89
+ prerelease: false
90
+ - !ruby/object:Gem::Dependency
91
+ type: :development
92
+ requirement: &id006 !ruby/object:Gem::Requirement
93
+ none: false
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ hash: 3
98
+ segments:
99
+ - 0
100
+ version: "0"
101
+ version_requirements: *id006
102
+ name: mocha
103
+ prerelease: false
104
+ - !ruby/object:Gem::Dependency
105
+ type: :development
106
+ requirement: &id007 !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ~>
110
+ - !ruby/object:Gem::Version
111
+ hash: 7
112
+ segments:
113
+ - 0
114
+ - 6
115
+ - 0
116
+ version: 0.6.0
117
+ version_requirements: *id007
118
+ name: yard
119
+ prerelease: false
120
+ - !ruby/object:Gem::Dependency
121
+ type: :development
122
+ requirement: &id008 !ruby/object:Gem::Requirement
123
+ none: false
124
+ requirements:
125
+ - - ~>
126
+ - !ruby/object:Gem::Version
127
+ hash: 23
128
+ segments:
129
+ - 1
130
+ - 0
131
+ - 0
132
+ version: 1.0.0
133
+ version_requirements: *id008
134
+ name: bundler
135
+ prerelease: false
136
+ - !ruby/object:Gem::Dependency
137
+ type: :development
138
+ requirement: &id009 !ruby/object:Gem::Requirement
139
+ none: false
140
+ requirements:
141
+ - - ~>
142
+ - !ruby/object:Gem::Version
143
+ hash: 7
144
+ segments:
145
+ - 1
146
+ - 6
147
+ - 4
148
+ version: 1.6.4
149
+ version_requirements: *id009
150
+ name: jeweler
151
+ prerelease: false
152
+ - !ruby/object:Gem::Dependency
153
+ type: :development
154
+ requirement: &id010 !ruby/object:Gem::Requirement
155
+ none: false
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ hash: 3
160
+ segments:
161
+ - 0
162
+ version: "0"
163
+ version_requirements: *id010
164
+ name: rcov
165
+ prerelease: false
166
+ description: " Activeforce provides a simple to use and extend interface to Salesforce using the REST API"
167
+ email: tusharranka@gmail.com
168
+ executables: []
169
+
170
+ extensions: []
171
+
172
+ extra_rdoc_files:
173
+ - LICENSE.txt
174
+ - README.md
175
+ files:
176
+ - Gemfile
177
+ - Gemfile.lock
178
+ - LICENSE.txt
179
+ - README.md
180
+ - Rakefile
181
+ - VERSION
182
+ - activeforce.gemspec
183
+ - app/models/salesforce/account.rb
184
+ - app/models/salesforce/activity_history.rb
185
+ - app/models/salesforce/approval.rb
186
+ - app/models/salesforce/campaign.rb
187
+ - app/models/salesforce/campaign_feed.rb
188
+ - app/models/salesforce/campaign_member.rb
189
+ - app/models/salesforce/case.rb
190
+ - app/models/salesforce/case_comment.rb
191
+ - app/models/salesforce/case_contact_role.rb
192
+ - app/models/salesforce/case_feed.rb
193
+ - app/models/salesforce/case_history.rb
194
+ - app/models/salesforce/case_share.rb
195
+ - app/models/salesforce/case_solution.rb
196
+ - app/models/salesforce/case_status.rb
197
+ - app/models/salesforce/case_team_member.rb
198
+ - app/models/salesforce/community.rb
199
+ - app/models/salesforce/contact.rb
200
+ - app/models/salesforce/contact_feed.rb
201
+ - app/models/salesforce/contact_history.rb
202
+ - app/models/salesforce/contract.rb
203
+ - app/models/salesforce/document.rb
204
+ - app/models/salesforce/event.rb
205
+ - app/models/salesforce/feed_item.rb
206
+ - app/models/salesforce/group.rb
207
+ - app/models/salesforce/group_member.rb
208
+ - app/models/salesforce/idea.rb
209
+ - app/models/salesforce/lead.rb
210
+ - app/models/salesforce/lead_status.rb
211
+ - app/models/salesforce/name.rb
212
+ - app/models/salesforce/note.rb
213
+ - app/models/salesforce/open_activity.rb
214
+ - app/models/salesforce/opportunity.rb
215
+ - app/models/salesforce/organization.rb
216
+ - app/models/salesforce/partner.rb
217
+ - app/models/salesforce/period.rb
218
+ - app/models/salesforce/product2.rb
219
+ - app/models/salesforce/product2_feed.rb
220
+ - app/models/salesforce/profile.rb
221
+ - app/models/salesforce/quote.rb
222
+ - app/models/salesforce/solution.rb
223
+ - app/models/salesforce/task.rb
224
+ - app/models/salesforce/task_feed.rb
225
+ - app/models/salesforce/task_priority.rb
226
+ - app/models/salesforce/task_status.rb
227
+ - app/models/salesforce/user.rb
228
+ - app/models/salesforce/user_role.rb
229
+ - app/models/salesforce/vote.rb
230
+ - lib/activeforce.rb
231
+ - lib/salesforce/attributes.rb
232
+ - lib/salesforce/authentication.rb
233
+ - lib/salesforce/base.rb
234
+ - lib/salesforce/bulk/batch.rb
235
+ - lib/salesforce/bulk/job.rb
236
+ - lib/salesforce/bulk/operations.rb
237
+ - lib/salesforce/bulk/update_job.rb
238
+ - lib/salesforce/column.rb
239
+ - lib/salesforce/columns.rb
240
+ - lib/salesforce/config.rb
241
+ - lib/salesforce/connection.rb
242
+ - lib/salesforce/connection/async.rb
243
+ - lib/salesforce/connection/conversion.rb
244
+ - lib/salesforce/connection/http_methods.rb
245
+ - lib/salesforce/connection/rest_api.rb
246
+ - lib/salesforce/connection/soap_api.rb
247
+ - lib/salesforce/engine.rb
248
+ - lib/salesforce/errors.rb
249
+ - test/salesforce/authentication_test.rb
250
+ - test/salesforce/base_test.rb
251
+ - test/salesforce/bulk/batch_test.rb
252
+ - test/salesforce/bulk/update_job_test.rb
253
+ - test/salesforce/column_test.rb
254
+ - test/salesforce/config_test.rb
255
+ - test/salesforce/connection/async_test.rb
256
+ - test/salesforce/connection/http_methods_test.rb
257
+ - test/salesforce/connection/rest_api_test.rb
258
+ - test/salesforce/connection/soap_api_test.rb
259
+ - test/salesforce/connection_test.rb
260
+ - test/test_helper.rb
261
+ homepage: http://github.com/appfolio/activeforce
262
+ licenses:
263
+ - MIT
264
+ post_install_message:
265
+ rdoc_options: []
266
+
267
+ require_paths:
268
+ - lib
269
+ required_ruby_version: !ruby/object:Gem::Requirement
270
+ none: false
271
+ requirements:
272
+ - - ">="
273
+ - !ruby/object:Gem::Version
274
+ hash: 3
275
+ segments:
276
+ - 0
277
+ version: "0"
278
+ required_rubygems_version: !ruby/object:Gem::Requirement
279
+ none: false
280
+ requirements:
281
+ - - ">="
282
+ - !ruby/object:Gem::Version
283
+ hash: 3
284
+ segments:
285
+ - 0
286
+ version: "0"
287
+ requirements: []
288
+
289
+ rubyforge_project:
290
+ rubygems_version: 1.8.12
291
+ signing_key:
292
+ specification_version: 3
293
+ summary: A Simple gem to interact with the Salesforce REST API
294
+ test_files: []
295
+