activeforce 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +15 -0
- data/Gemfile.lock +128 -0
- data/LICENSE.txt +20 -0
- data/README.md +112 -0
- data/Rakefile +47 -0
- data/VERSION +1 -0
- data/activeforce.gemspec +151 -0
- data/app/models/salesforce/account.rb +4 -0
- data/app/models/salesforce/activity_history.rb +4 -0
- data/app/models/salesforce/approval.rb +4 -0
- data/app/models/salesforce/campaign.rb +4 -0
- data/app/models/salesforce/campaign_feed.rb +4 -0
- data/app/models/salesforce/campaign_member.rb +4 -0
- data/app/models/salesforce/case.rb +4 -0
- data/app/models/salesforce/case_comment.rb +4 -0
- data/app/models/salesforce/case_contact_role.rb +4 -0
- data/app/models/salesforce/case_feed.rb +4 -0
- data/app/models/salesforce/case_history.rb +4 -0
- data/app/models/salesforce/case_share.rb +4 -0
- data/app/models/salesforce/case_solution.rb +4 -0
- data/app/models/salesforce/case_status.rb +4 -0
- data/app/models/salesforce/case_team_member.rb +4 -0
- data/app/models/salesforce/community.rb +4 -0
- data/app/models/salesforce/contact.rb +4 -0
- data/app/models/salesforce/contact_feed.rb +4 -0
- data/app/models/salesforce/contact_history.rb +4 -0
- data/app/models/salesforce/contract.rb +4 -0
- data/app/models/salesforce/document.rb +4 -0
- data/app/models/salesforce/event.rb +4 -0
- data/app/models/salesforce/feed_item.rb +4 -0
- data/app/models/salesforce/group.rb +4 -0
- data/app/models/salesforce/group_member.rb +4 -0
- data/app/models/salesforce/idea.rb +4 -0
- data/app/models/salesforce/lead.rb +4 -0
- data/app/models/salesforce/lead_status.rb +4 -0
- data/app/models/salesforce/name.rb +4 -0
- data/app/models/salesforce/note.rb +4 -0
- data/app/models/salesforce/open_activity.rb +4 -0
- data/app/models/salesforce/opportunity.rb +4 -0
- data/app/models/salesforce/organization.rb +4 -0
- data/app/models/salesforce/partner.rb +4 -0
- data/app/models/salesforce/period.rb +4 -0
- data/app/models/salesforce/product2.rb +4 -0
- data/app/models/salesforce/product2_feed.rb +4 -0
- data/app/models/salesforce/profile.rb +4 -0
- data/app/models/salesforce/quote.rb +4 -0
- data/app/models/salesforce/solution.rb +4 -0
- data/app/models/salesforce/task.rb +4 -0
- data/app/models/salesforce/task_feed.rb +4 -0
- data/app/models/salesforce/task_priority.rb +4 -0
- data/app/models/salesforce/task_status.rb +4 -0
- data/app/models/salesforce/user.rb +4 -0
- data/app/models/salesforce/user_role.rb +4 -0
- data/app/models/salesforce/vote.rb +4 -0
- data/lib/activeforce.rb +29 -0
- data/lib/salesforce/attributes.rb +13 -0
- data/lib/salesforce/authentication.rb +25 -0
- data/lib/salesforce/base.rb +240 -0
- data/lib/salesforce/bulk/batch.rb +77 -0
- data/lib/salesforce/bulk/job.rb +103 -0
- data/lib/salesforce/bulk/operations.rb +25 -0
- data/lib/salesforce/bulk/update_job.rb +24 -0
- data/lib/salesforce/column.rb +98 -0
- data/lib/salesforce/columns.rb +60 -0
- data/lib/salesforce/config.rb +110 -0
- data/lib/salesforce/connection.rb +33 -0
- data/lib/salesforce/connection/async.rb +36 -0
- data/lib/salesforce/connection/conversion.rb +37 -0
- data/lib/salesforce/connection/http_methods.rb +72 -0
- data/lib/salesforce/connection/rest_api.rb +52 -0
- data/lib/salesforce/connection/soap_api.rb +74 -0
- data/lib/salesforce/engine.rb +6 -0
- data/lib/salesforce/errors.rb +33 -0
- data/test/salesforce/authentication_test.rb +52 -0
- data/test/salesforce/base_test.rb +440 -0
- data/test/salesforce/bulk/batch_test.rb +79 -0
- data/test/salesforce/bulk/update_job_test.rb +125 -0
- data/test/salesforce/column_test.rb +115 -0
- data/test/salesforce/config_test.rb +163 -0
- data/test/salesforce/connection/async_test.rb +138 -0
- data/test/salesforce/connection/http_methods_test.rb +242 -0
- data/test/salesforce/connection/rest_api_test.rb +61 -0
- data/test/salesforce/connection/soap_api_test.rb +148 -0
- data/test/salesforce/connection_test.rb +148 -0
- data/test/test_helper.rb +79 -0
- metadata +295 -0
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class Salesforce::Bulk::BatchTest < ActiveSupport::TestCase
|
4
|
+
setup :clear_columns_for_bulk_table
|
5
|
+
setup :setup_columns_for_bulk_table
|
6
|
+
setup :setup_job
|
7
|
+
teardown :clear_file
|
8
|
+
|
9
|
+
def test_initialize
|
10
|
+
assert_equal @job, @batch.job
|
11
|
+
assert !@batch.filename.nil?
|
12
|
+
assert !@batch.csv.nil?
|
13
|
+
@batch.csv.close
|
14
|
+
content = File.read(@batch.filename)
|
15
|
+
assert_equal "Id,Name__c,dob__c,Car__c\n", content
|
16
|
+
assert_equal [ 'Id', "Name__c", "dob__c", "Car__c"], @batch.send(:csv_header)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_record__from_hash
|
20
|
+
@batch.csv.expects(:<<).with([ 'recordid', 'record name', "2008-10-14", 'record car'])
|
21
|
+
@batch.record :id => "recordid", :name => "record name", :car => "record car", :dob => Date.parse("10/14/2008")
|
22
|
+
|
23
|
+
@batch.csv.expects(:<<).with([ 'recordid', 'record name', "2008-10-14", 'record car'])
|
24
|
+
@batch.record :id => "recordid", :name => "record name", :car => "record car", :dob => "10/14/2008"
|
25
|
+
|
26
|
+
@batch.csv.expects(:<<).with([ 'recordid', '', '', 'record car'])
|
27
|
+
@batch.record :id => "recordid", :car => "record car"
|
28
|
+
|
29
|
+
@batch.csv.expects(:<<).with([ 'recordid', '', '', ''])
|
30
|
+
@batch.record :id => "recordid"
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_record__from_object
|
34
|
+
bulk_table = Salesforce::BulkTable.new("Id" => "btid", :name => "name", "Car__c" => 'car', :dob => "10/14/2008")
|
35
|
+
@batch.csv.expects(:<<).with([ 'btid', "name", "2008-10-14", "car"])
|
36
|
+
@batch.record bulk_table
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_create
|
40
|
+
@batch.csv.expects(:close)
|
41
|
+
File.expects(:read).returns("csv_contents")
|
42
|
+
Salesforce.connection.expects(:async_post).with("job/#{@job.id}/batch", "csv_contents", :format => :xml, :content_type => "text/csv").returns("id" => "batchid", "state" => "In Progress")
|
43
|
+
@batch.create!
|
44
|
+
assert_equal "batchid", @batch.id
|
45
|
+
assert @batch.in_progress?
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_update_status
|
49
|
+
Salesforce.connection.expects(:async_get).with("job/#{@job.id}/batch/#{@batch.id}", :format => :xml).returns(:state => "Not Processed")
|
50
|
+
@batch.update_status
|
51
|
+
assert @batch.not_processed?
|
52
|
+
|
53
|
+
Salesforce.connection.expects(:async_get).with("job/#{@job.id}/batch/#{@batch.id}", :format => :xml).returns(:state => "Completed")
|
54
|
+
@batch.update_status
|
55
|
+
assert @batch.completed?
|
56
|
+
|
57
|
+
Salesforce.connection.expects(:async_get).never
|
58
|
+
@batch.update_status
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_results
|
62
|
+
csv = "Id,Success,Created,Errors\n1,true,no,\n2,true,yes,"
|
63
|
+
Salesforce.connection.expects(:async_get).with("job/#{@job.id}/batch/#{@batch.id}/result").returns(csv)
|
64
|
+
assert_equal 2, @batch.results.size
|
65
|
+
end
|
66
|
+
|
67
|
+
private
|
68
|
+
|
69
|
+
def setup_job
|
70
|
+
@job = Salesforce::Bulk::UpdateJob.new(Salesforce::BulkTable)
|
71
|
+
@batch = @job.batch do
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def clear_file
|
76
|
+
FileUtils.rm_rf(@batch.filename) if @batch.filename.present?
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
@@ -0,0 +1,125 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class Salesforce::Bulk::UpdateJobTest < ActiveSupport::TestCase
|
4
|
+
|
5
|
+
setup :setup_columns_for_bulk_table
|
6
|
+
setup :setup_columns_for_account
|
7
|
+
|
8
|
+
|
9
|
+
def test_initialize
|
10
|
+
job = Salesforce::Bulk::UpdateJob.new(Salesforce::Account)
|
11
|
+
assert_equal Salesforce::Account, job.object_type
|
12
|
+
assert_equal 'update', job.operation
|
13
|
+
assert_equal 'Parallel', job.concurrency_mode
|
14
|
+
assert_equal 'Account', job.object
|
15
|
+
assert_equal 'Id,City,Address,Name,Type,State', job.send(:csv_header).join(',')
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_initialize__with_columns
|
19
|
+
job = Salesforce::Bulk::UpdateJob.new(Salesforce::Account, [:name, :state])
|
20
|
+
assert_equal Salesforce::Account, job.object_type
|
21
|
+
assert_equal 'update', job.operation
|
22
|
+
assert_equal 'Parallel', job.concurrency_mode
|
23
|
+
assert_equal 'Account', job.object
|
24
|
+
assert_equal 'Id,Name,State', job.send(:csv_header).join(',')
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_initialize__with_all
|
28
|
+
job = Salesforce::Bulk::UpdateJob.new(Salesforce::Account, :all)
|
29
|
+
assert_equal Salesforce::Account, job.object_type
|
30
|
+
assert_equal 'update', job.operation
|
31
|
+
assert_equal 'Parallel', job.concurrency_mode
|
32
|
+
assert_equal 'Account', job.object
|
33
|
+
assert_equal 'Id,City,Address,Name,Type,State', job.send(:csv_header).join(',')
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_csv_columns__unrecognized_column
|
37
|
+
assert_raises Salesforce::UnrecognizedColumn do
|
38
|
+
Salesforce::Bulk::UpdateJob.new(Salesforce::Account, [ :ssn ]).csv_columns
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_bulk_update
|
43
|
+
Salesforce::Bulk::UpdateJob.any_instance.expects(:process!)
|
44
|
+
|
45
|
+
job = Salesforce::BulkTable.bulk_update do
|
46
|
+
serial!
|
47
|
+
batch do
|
48
|
+
record({})
|
49
|
+
record({})
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
assert_equal Salesforce::BulkTable, job.object_type
|
54
|
+
assert_equal 'update', job.operation
|
55
|
+
assert_equal 'Serial', job.concurrency_mode
|
56
|
+
assert_equal 'BulkTable__c', job.object
|
57
|
+
assert_equal 1, job.batches.size
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_process
|
61
|
+
job = Salesforce::Bulk::UpdateJob.new(Salesforce::Account)
|
62
|
+
job.expects(:create_job!)
|
63
|
+
job.expects(:create_batches!)
|
64
|
+
job.expects(:close_job!)
|
65
|
+
job.process!
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_create_job
|
69
|
+
job = Salesforce::Bulk::UpdateJob.new(Salesforce::Account)
|
70
|
+
xml = anything
|
71
|
+
Salesforce.connection.expects(:async_post).with("job", xml, :format => :xml).returns({ "id" => 3})
|
72
|
+
job.send :create_job!
|
73
|
+
assert_equal 3, job.id
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_completed
|
77
|
+
job_with_batches
|
78
|
+
@batch_1.stubs(:update_status)
|
79
|
+
@batch_2.stubs(:update_status)
|
80
|
+
@batch_1.expects(:completed?).returns(false)
|
81
|
+
@batch_1.expects(:failed?).returns(false)
|
82
|
+
assert_equal false, @job.completed?
|
83
|
+
|
84
|
+
@batch_1.expects(:completed?).returns(true)
|
85
|
+
@batch_2.expects(:completed?).returns(false)
|
86
|
+
@batch_2.expects(:failed?).returns(false)
|
87
|
+
assert_equal false, @job.completed?
|
88
|
+
|
89
|
+
@batch_1.expects(:completed?).returns(true)
|
90
|
+
@batch_2.expects(:completed?).returns(false)
|
91
|
+
@batch_2.expects(:failed?).returns(true)
|
92
|
+
assert @job.completed?
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_results
|
96
|
+
job_with_batches
|
97
|
+
@batch_1.expects(:results).returns([ :result_1, :result_2])
|
98
|
+
@batch_2.expects(:results).returns([ :result_3, :result_4])
|
99
|
+
assert_equal [ :result_1, :result_2, :result_3, :result_4 ], @job.results
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_close_job
|
103
|
+
Salesforce::Authentication.stubs(:session_id).returns('session_id')
|
104
|
+
job_with_batches
|
105
|
+
Salesforce.connection.expects(:async_post).with("job/jobId", includes("<state>Closed</state>"), :format => :xml).returns("state" => "Closed", "number_batches_total" => 2)
|
106
|
+
@job.send(:close_job!)
|
107
|
+
assert_equal 2, @job.number_batches_total
|
108
|
+
assert @job.closed?
|
109
|
+
end
|
110
|
+
|
111
|
+
private
|
112
|
+
|
113
|
+
def job_with_batches
|
114
|
+
Salesforce::Authentication.stubs(:session_id).returns('session_id')
|
115
|
+
|
116
|
+
@job = Salesforce::Bulk::UpdateJob.new(Salesforce::Account)
|
117
|
+
@job.id = "jobId"
|
118
|
+
@batch_1 = Salesforce::Bulk::Batch.new(@job)
|
119
|
+
@batch_2 = Salesforce::Bulk::Batch.new(@job)
|
120
|
+
@job.batches << @batch_1
|
121
|
+
@job.batches << @batch_2
|
122
|
+
end
|
123
|
+
|
124
|
+
|
125
|
+
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class Salesforce::ColumnTest < ActiveSupport::TestCase
|
4
|
+
def test_initializer
|
5
|
+
col = Salesforce::Column.new("name" => "Name", "type" => "string", "updateable" => true)
|
6
|
+
assert_equal "name", col.name
|
7
|
+
assert_equal "Name", col.original_name
|
8
|
+
assert_equal :string, col.type
|
9
|
+
assert col.editable?
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_initializer__custom
|
13
|
+
col = Salesforce::Column.new("name" => "Name__c", "type" => "string", "updateable" => true)
|
14
|
+
assert_equal "name", col.name
|
15
|
+
assert_equal "Name__c", col.original_name
|
16
|
+
assert_equal :string, col.type
|
17
|
+
assert col.editable?
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_initializer__not_editable
|
21
|
+
col = Salesforce::Column.new("name" => "Name__c", "type" => "string", "updateable" => false, "createable" => false)
|
22
|
+
assert_equal "name", col.name
|
23
|
+
assert_equal "Name__c", col.original_name
|
24
|
+
assert_equal :string, col.type
|
25
|
+
assert_equal false, col.editable?
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_initializer__editable
|
29
|
+
col = Salesforce::Column.new("name" => "Name__c", "type" => "string", "updateable" => true, "createable" => false)
|
30
|
+
assert_equal "name", col.name
|
31
|
+
assert_equal "Name__c", col.original_name
|
32
|
+
assert_equal :string, col.type
|
33
|
+
assert col.editable?
|
34
|
+
assert col.updateable?
|
35
|
+
assert_equal false, col.createable?
|
36
|
+
col.updateable = false
|
37
|
+
col.createable = true
|
38
|
+
assert col.editable?
|
39
|
+
assert col.createable?
|
40
|
+
assert_equal false, col.updateable?
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_to_soql_value
|
44
|
+
assert_equal "'string'", Salesforce::Column.to_soql_value('string')
|
45
|
+
assert_equal "TRUE", Salesforce::Column.to_soql_value(true)
|
46
|
+
assert_equal "FALSE", Salesforce::Column.to_soql_value(false)
|
47
|
+
assert_equal "NULL", Salesforce::Column.to_soql_value(nil)
|
48
|
+
assert_equal "2012-01-02", Salesforce::Column.to_soql_value(Date.parse('01/02/2012'))
|
49
|
+
assert_equal "2012-01-02T18:40:00-08:00", Salesforce::Column.to_soql_value(Time.zone.parse('01/02/2012 06:40PM'))
|
50
|
+
assert_equal "1", Salesforce::Column.to_soql_value(1)
|
51
|
+
assert_equal "1.0", Salesforce::Column.to_soql_value(1.0)
|
52
|
+
assert_equal "1.04", Salesforce::Column.to_soql_value(BigDecimal.new("1.04"))
|
53
|
+
assert_equal "'col'", Salesforce::Column.to_soql_value(:col)
|
54
|
+
assert_equal "('string1','string2','string3')", Salesforce::Column.to_soql_value(['string1','string2','string3'])
|
55
|
+
assert_equal "('string1',1,2012-01-02)", Salesforce::Column.to_soql_value(['string1',1,Date.parse("01/02/2012")])
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_to_csv_value
|
59
|
+
assert_equal "string", Salesforce::Column.to_csv_value('string')
|
60
|
+
assert_equal "TRUE", Salesforce::Column.to_csv_value(true)
|
61
|
+
assert_equal "FALSE", Salesforce::Column.to_csv_value(false)
|
62
|
+
assert_equal "", Salesforce::Column.to_csv_value(nil)
|
63
|
+
assert_equal "2012-01-02", Salesforce::Column.to_csv_value(Date.parse('01/02/2012'))
|
64
|
+
assert_equal "2012-01-02T18:40:00-08:00", Salesforce::Column.to_csv_value(Time.zone.parse('01/02/2012 06:40PM'))
|
65
|
+
assert_equal "1", Salesforce::Column.to_csv_value(1)
|
66
|
+
assert_equal "1.0", Salesforce::Column.to_csv_value(1.0)
|
67
|
+
assert_equal "1.04", Salesforce::Column.to_csv_value(BigDecimal.new("1.04"))
|
68
|
+
assert_equal "col", Salesforce::Column.to_csv_value(:col)
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_typecast
|
72
|
+
assert_equal "123456789012345", Salesforce::Column.typecast(:id, "123456789012345")
|
73
|
+
assert_equal "123456789012345", Salesforce::Column.typecast(:id, "123456789012345123")
|
74
|
+
assert_equal "123456789012345", Salesforce::Column.typecast(:reference, "123456789012345")
|
75
|
+
assert_equal "123456789012345", Salesforce::Column.typecast(:reference, "123456789012345123")
|
76
|
+
assert_equal Date.parse("08/31/2011"), Salesforce::Column.typecast(:date, "2011-08-31")
|
77
|
+
assert_equal Date.parse("08/31/2011"), Salesforce::Column.typecast(:date, Date.parse("08/31/2011"))
|
78
|
+
assert_equal nil, Salesforce::Column.typecast(:date, nil)
|
79
|
+
assert_equal nil, Salesforce::Column.typecast(:date, 'nil')
|
80
|
+
|
81
|
+
assert_equal Time.zone.parse('01/02/2012 06:40PM'), Salesforce::Column.typecast(:datetime, "2012-01-02T18:40:00-08:00")
|
82
|
+
assert_equal Time.zone.parse('01/02/2012 06:40PM'), Salesforce::Column.typecast(:datetime, Time.zone.parse('01/02/2012 06:40PM'))
|
83
|
+
assert_equal nil, Salesforce::Column.typecast(:datetime, nil)
|
84
|
+
assert_equal Time.now.to_s, Salesforce::Column.typecast(:datetime, 'nil').to_s
|
85
|
+
|
86
|
+
assert_equal BigDecimal("2012"), Salesforce::Column.typecast(:double, "2012")
|
87
|
+
assert_equal BigDecimal("2012.33"), Salesforce::Column.typecast(:double, "2012.33")
|
88
|
+
assert_equal BigDecimal("1"), Salesforce::Column.typecast(:double, 1)
|
89
|
+
assert_equal BigDecimal("1.2"), Salesforce::Column.typecast(:double, 1.2)
|
90
|
+
assert_equal 0, Salesforce::Column.typecast(:double, nil)
|
91
|
+
assert_equal 0, Salesforce::Column.typecast(:double, 'nil')
|
92
|
+
|
93
|
+
assert_equal true, Salesforce::Column.typecast(:boolean, true)
|
94
|
+
assert_equal false, Salesforce::Column.typecast(:boolean, false)
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_typecast__using_full_length_ids
|
98
|
+
Salesforce::Config.instance.use_full_length_ids
|
99
|
+
assert_equal "123456789012345", Salesforce::Column.typecast(:id, "123456789012345")
|
100
|
+
assert_equal "123456789012345123", Salesforce::Column.typecast(:id, "123456789012345123")
|
101
|
+
assert_equal "123456789012345", Salesforce::Column.typecast(:reference, "123456789012345")
|
102
|
+
assert_equal "123456789012345123", Salesforce::Column.typecast(:reference, "123456789012345123")
|
103
|
+
end
|
104
|
+
|
105
|
+
def test_equals
|
106
|
+
col1 = Salesforce::Column.new("name" => "Name", "type" => "string", "updateable" => true)
|
107
|
+
col2 = Salesforce::Column.new("name" => "Name", "type" => "string", "updateable" => false)
|
108
|
+
col3 = Salesforce::Column.new("name" => "Name__c", "type" => "string", "updateable" => true)
|
109
|
+
|
110
|
+
assert col1 == col2
|
111
|
+
assert col2 != col3
|
112
|
+
assert col1 != col3
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
@@ -0,0 +1,163 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class Salesforce::ConfigTest < ActiveSupport::TestCase
|
4
|
+
|
5
|
+
setup :clean_config
|
6
|
+
|
7
|
+
def test_configure
|
8
|
+
Salesforce.configure do
|
9
|
+
username "foo"
|
10
|
+
password "bar"
|
11
|
+
end
|
12
|
+
assert_equal "foo", Salesforce::Config.username
|
13
|
+
assert_equal "bar", Salesforce::Config.password
|
14
|
+
assert_equal '22.0', Salesforce::Config.api_version
|
15
|
+
assert_equal false, Salesforce::Config.use_sandbox?
|
16
|
+
assert_equal false, Salesforce::Config.use_full_length_ids?
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_configure__username__password_can_be_blocks
|
20
|
+
user_count = 0
|
21
|
+
password_count = 4
|
22
|
+
|
23
|
+
Salesforce.configure do
|
24
|
+
username { user_count = user_count + 1 }
|
25
|
+
password { password_count = password_count + 1 }
|
26
|
+
end
|
27
|
+
|
28
|
+
assert_equal 1, Salesforce::Config.username
|
29
|
+
assert_equal 2, Salesforce::Config.username
|
30
|
+
assert_equal 3, Salesforce::Config.username
|
31
|
+
assert_equal 4, Salesforce::Config.username
|
32
|
+
|
33
|
+
assert_equal 5, Salesforce::Config.password
|
34
|
+
assert_equal 6, Salesforce::Config.password
|
35
|
+
assert_equal 7, Salesforce::Config.password
|
36
|
+
assert_equal 8, Salesforce::Config.password
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_config__on_login_failure
|
40
|
+
assert_nil Salesforce::Config.on_login_failure
|
41
|
+
|
42
|
+
@my_stuff = 0
|
43
|
+
|
44
|
+
Salesforce.configure do
|
45
|
+
on_login_failure { @my_stuff = @my_stuff + 1 }
|
46
|
+
end
|
47
|
+
|
48
|
+
Salesforce::Config.on_login_failure
|
49
|
+
assert_equal 1, @my_stuff
|
50
|
+
Salesforce::Config.on_login_failure
|
51
|
+
|
52
|
+
assert_equal 2, @my_stuff
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_config__specific_api_version
|
56
|
+
Salesforce.configure do
|
57
|
+
username "foo"
|
58
|
+
password "bar"
|
59
|
+
api_version 21
|
60
|
+
end
|
61
|
+
assert_equal "foo", Salesforce::Config.username
|
62
|
+
assert_equal "bar", Salesforce::Config.password
|
63
|
+
assert_equal '21.0', Salesforce::Config.api_version
|
64
|
+
assert_equal false, Salesforce::Config.use_sandbox?
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_config__sandbox
|
68
|
+
Salesforce.configure do
|
69
|
+
username "foo"
|
70
|
+
password "bar"
|
71
|
+
use_sandbox
|
72
|
+
end
|
73
|
+
|
74
|
+
assert_equal "foo", Salesforce::Config.username
|
75
|
+
assert_equal "bar", Salesforce::Config.password
|
76
|
+
assert Salesforce::Config.use_sandbox?
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_login_url__regular
|
80
|
+
Salesforce.configure do
|
81
|
+
username "foo"
|
82
|
+
password "bar"
|
83
|
+
api_version 21
|
84
|
+
end
|
85
|
+
|
86
|
+
assert_equal "https://login.salesforce.com/services/Soap/c/21.0", Salesforce::Config.login_url
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_login_url__sandbox
|
90
|
+
Salesforce.configure do
|
91
|
+
username "foo"
|
92
|
+
password "bar"
|
93
|
+
use_sandbox
|
94
|
+
end
|
95
|
+
|
96
|
+
assert_equal "https://test.salesforce.com/services/Soap/c/22.0", Salesforce::Config.login_url
|
97
|
+
end
|
98
|
+
|
99
|
+
def test_passthrough_methods
|
100
|
+
config = Salesforce::Config.instance
|
101
|
+
config.username "username"
|
102
|
+
assert_equal "username", Salesforce::Config.username
|
103
|
+
config.password "password"
|
104
|
+
assert_equal "password", Salesforce::Config.password
|
105
|
+
config.api_version "23"
|
106
|
+
assert_equal "23.0", Salesforce::Config.api_version
|
107
|
+
config.use_sandbox
|
108
|
+
assert Salesforce::Config.use_sandbox?
|
109
|
+
assert_equal config.login_url, Salesforce::Config.login_url
|
110
|
+
config.session_id "session_id"
|
111
|
+
assert_equal "session_id", Salesforce::Config.session_id
|
112
|
+
|
113
|
+
config.server_instance "na99"
|
114
|
+
assert_equal "na99", Salesforce::Config.server_instance
|
115
|
+
|
116
|
+
config.user_id "user_id"
|
117
|
+
assert_equal "user_id", Salesforce::Config.user_id
|
118
|
+
assert_equal config.server_url, Salesforce::Config.server_url
|
119
|
+
end
|
120
|
+
|
121
|
+
def test_server_url__and_server_host
|
122
|
+
config = Salesforce::Config.instance
|
123
|
+
config.server_instance "sa2"
|
124
|
+
config.api_version 99
|
125
|
+
assert_equal "https://sa2.salesforce.com/services/data/v99.0", Salesforce::Config.server_url
|
126
|
+
assert_equal "https://sa2.salesforce.com", Salesforce::Config.server_host
|
127
|
+
end
|
128
|
+
|
129
|
+
def test_configured
|
130
|
+
config = Salesforce::Config.instance
|
131
|
+
assert_equal false, config.configured?
|
132
|
+
|
133
|
+
config.username "username"
|
134
|
+
assert_equal false, config.configured?
|
135
|
+
|
136
|
+
config.password "password"
|
137
|
+
assert config.configured?
|
138
|
+
|
139
|
+
config.username nil
|
140
|
+
assert_equal false, config.configured?
|
141
|
+
end
|
142
|
+
|
143
|
+
def test_soap_enterprise_namespace
|
144
|
+
assert_equal "urn:enterprise.soap.sforce.com", Salesforce::Config.soap_enterprise_namespace
|
145
|
+
assert_equal "urn:enterprise.soap.sforce.com", Salesforce::Config.instance.soap_enterprise_namespace
|
146
|
+
end
|
147
|
+
|
148
|
+
def test_use_full_length_ids?
|
149
|
+
|
150
|
+
Salesforce.configure do
|
151
|
+
use_full_length_ids
|
152
|
+
end
|
153
|
+
|
154
|
+
assert Salesforce::Config.use_full_length_ids?
|
155
|
+
end
|
156
|
+
|
157
|
+
private
|
158
|
+
|
159
|
+
def clean_config
|
160
|
+
Salesforce::Config.instance_variable_set(:@instance, nil)
|
161
|
+
end
|
162
|
+
|
163
|
+
end
|