ruby-pardot 1.3.2 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.rubocop.yml +9 -0
  4. data/Gemfile +3 -1
  5. data/Gemfile.lock +5 -5
  6. data/README.rdoc +19 -17
  7. data/Rakefile +2 -3
  8. data/lib/pardot/authentication.rb +23 -12
  9. data/lib/pardot/client.rb +17 -6
  10. data/lib/pardot/error.rb +6 -2
  11. data/lib/pardot/http.rb +47 -44
  12. data/lib/pardot/objects/custom_fields.rb +13 -17
  13. data/lib/pardot/objects/emails.rb +9 -14
  14. data/lib/pardot/objects/list_memberships.rb +8 -12
  15. data/lib/pardot/objects/lists.rb +20 -25
  16. data/lib/pardot/objects/opportunities.rb +21 -26
  17. data/lib/pardot/objects/prospect_accounts.rb +6 -7
  18. data/lib/pardot/objects/prospects.rb +26 -30
  19. data/lib/pardot/objects/users.rb +17 -21
  20. data/lib/pardot/objects/visitor_activities.rb +15 -19
  21. data/lib/pardot/objects/visitors.rb +17 -21
  22. data/lib/pardot/objects/visits.rb +15 -19
  23. data/lib/pardot/version.rb +1 -1
  24. data/ruby-pardot.gemspec +14 -12
  25. data/spec/pardot/authentication_spec.rb +78 -44
  26. data/spec/pardot/client_spec.rb +50 -15
  27. data/spec/pardot/error_spec.rb +6 -4
  28. data/spec/pardot/http_spec.rb +83 -92
  29. data/spec/pardot/objects/custom_fields_spec.rb +48 -53
  30. data/spec/pardot/objects/emails_spec.rb +34 -36
  31. data/spec/pardot/objects/lists_spec.rb +34 -38
  32. data/spec/pardot/objects/opportunities_spec.rb +58 -61
  33. data/spec/pardot/objects/prospect_accounts_spec.rb +72 -75
  34. data/spec/pardot/objects/prospects_spec.rb +56 -56
  35. data/spec/pardot/objects/users_spec.rb +58 -61
  36. data/spec/pardot/objects/visitor_activities_spec.rb +57 -61
  37. data/spec/pardot/objects/visitors_spec.rb +56 -61
  38. data/spec/pardot/objects/visits_spec.rb +56 -61
  39. data/spec/spec_helper.rb +2 -0
  40. data/spec/support/client_support.rb +40 -4
  41. data/spec/support/fakeweb.rb +13 -8
  42. metadata +8 -7
@@ -1,65 +1,61 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
4
 
3
5
  describe Pardot::Objects::VisitorActivities do
4
-
5
- before do
6
- @client = create_client
7
- end
8
-
9
- describe "query" do
10
-
11
- def sample_results
12
- %(<?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="ok" version="1.0">
13
- <result>
14
- <total_results>2</total_results>
15
- <visitorActivity>
16
- <type_name>Read</type_name>
17
- <details>Some details</details>
18
- </visitorActivity>
19
- <visitorActivity>
20
- <type_name>Write</type_name>
21
- <details>More details</details>
22
- </visitorActivity>
23
- </result>
24
- </rsp>)
25
- end
26
-
27
- before do
28
- @client = create_client
29
- end
30
-
31
- it "should take in some arguments" do
32
- fake_get "/api/visitorActivity/version/3/do/query?id_greater_than=200&format=simple", sample_results
33
-
34
- expect(@client.visitor_activities.query(:id_greater_than => 200)).to eq({"total_results" => 2,
35
- "visitorActivity"=>[
36
- {"type_name"=>"Read", "details"=>"Some details"},
37
- {"type_name"=>"Write", "details"=>"More details"}
38
- ]})
39
- assert_authorization_header
40
- end
41
-
42
- end
43
-
44
- describe "read" do
45
-
46
- def sample_results
47
- %(<?xml version="1.0" encoding="UTF-8"?>
48
- <rsp stat="ok" version="1.0">
49
- <visitorActivity>
50
- <type_name>Write</type_name>
51
- <details>More details</details>
52
- </visitorActivity>
53
- </rsp>)
54
- end
55
-
56
- it "should return the prospect" do
57
- fake_post "/api/visitorActivity/version/3/do/read/id/10?format=simple", sample_results
58
-
59
- expect(@client.visitor_activities.read(10)).to eq({"details"=>"More details", "type_name"=>"Write"})
60
- assert_authorization_header
6
+ create_auth_managers.each do |auth_manager|
7
+ context auth_manager.test_name_suffix do
8
+ let(:client) { auth_manager.create_client }
9
+
10
+ describe 'query' do
11
+ def sample_results
12
+ %(<?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="ok" version="1.0">
13
+ <result>
14
+ <total_results>2</total_results>
15
+ <visitorActivity>
16
+ <type_name>Read</type_name>
17
+ <details>Some details</details>
18
+ </visitorActivity>
19
+ <visitorActivity>
20
+ <type_name>Write</type_name>
21
+ <details>More details</details>
22
+ </visitorActivity>
23
+ </result>
24
+ </rsp>)
25
+ end
26
+
27
+ it 'should take in some arguments' do
28
+ fake_get '/api/visitorActivity/version/3/do/query?id_greater_than=200&format=simple', sample_results
29
+
30
+ expect(client.visitor_activities.query(id_greater_than: 200)).to eq({ 'total_results' => 2,
31
+ 'visitorActivity' => [
32
+ { 'type_name' => 'Read',
33
+ 'details' => 'Some details' },
34
+ { 'type_name' => 'Write',
35
+ 'details' => 'More details' }
36
+ ] })
37
+ assert_authorization_header auth_manager
38
+ end
39
+ end
40
+
41
+ describe 'read' do
42
+ def sample_results
43
+ %(<?xml version="1.0" encoding="UTF-8"?>
44
+ <rsp stat="ok" version="1.0">
45
+ <visitorActivity>
46
+ <type_name>Write</type_name>
47
+ <details>More details</details>
48
+ </visitorActivity>
49
+ </rsp>)
50
+ end
51
+
52
+ it 'should return the prospect' do
53
+ fake_post '/api/visitorActivity/version/3/do/read/id/10?format=simple', sample_results
54
+
55
+ expect(client.visitor_activities.read(10)).to eq({ 'details' => 'More details', 'type_name' => 'Write' })
56
+ assert_authorization_header auth_manager
57
+ end
58
+ end
61
59
  end
62
-
63
60
  end
64
-
65
- end
61
+ end
@@ -1,65 +1,60 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
4
 
3
5
  describe Pardot::Objects::Visitors do
4
-
5
- before do
6
- @client = create_client
7
- end
8
-
9
- describe "query" do
10
-
11
- def sample_results
12
- %(<?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="ok" version="1.0">
13
- <result>
14
- <total_results>2</total_results>
15
- <visitor>
16
- <browser>Firefox</browser>
17
- <language>en</language>
18
- </visitor>
19
- <visitor>
20
- <browser>Chrome</browser>
21
- <language>es</language>
22
- </visitor>
23
- </result>
24
- </rsp>)
25
- end
26
-
27
- before do
28
- @client = create_client
29
- end
30
-
31
- it "should take in some arguments" do
32
- fake_get "/api/visitor/version/3/do/query?id_greater_than=200&format=simple", sample_results
33
-
34
- expect(@client.visitors.query(:id_greater_than => 200)).to eq({"total_results" => 2,
35
- "visitor"=>[
36
- {"browser"=>"Firefox", "language"=>"en"},
37
- {"browser"=>"Chrome", "language"=>"es"}
38
- ]})
39
- assert_authorization_header
40
- end
41
-
42
- end
43
-
44
- describe "assign" do
45
-
46
- def sample_results
47
- %(<?xml version="1.0" encoding="UTF-8"?>
48
- <rsp stat="ok" version="1.0">
49
- <visitor>
50
- <browser>Chrome</browser>
51
- <language>es</language>
52
- </visitor>
53
- </rsp>)
54
- end
55
-
56
- it "should return the prospect" do
57
- fake_post "/api/visitor/version/3/do/assign/id/10?type=Good&format=simple&name=Jim", sample_results
58
-
59
- expect(@client.visitors.assign(10, :name => "Jim", :type => "Good")).to eq({"browser"=>"Chrome", "language"=>"es"})
60
- assert_authorization_header
6
+ create_auth_managers.each do |auth_manager|
7
+ context auth_manager.test_name_suffix do
8
+ let(:client) { auth_manager.create_client }
9
+ describe 'query' do
10
+ def sample_results
11
+ %(<?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="ok" version="1.0">
12
+ <result>
13
+ <total_results>2</total_results>
14
+ <visitor>
15
+ <browser>Firefox</browser>
16
+ <language>en</language>
17
+ </visitor>
18
+ <visitor>
19
+ <browser>Chrome</browser>
20
+ <language>es</language>
21
+ </visitor>
22
+ </result>
23
+ </rsp>)
24
+ end
25
+
26
+ it 'should take in some arguments' do
27
+ fake_get '/api/visitor/version/3/do/query?id_greater_than=200&format=simple', sample_results
28
+
29
+ expect(client.visitors.query(id_greater_than: 200)).to eq({ 'total_results' => 2,
30
+ 'visitor' => [
31
+ { 'browser' => 'Firefox',
32
+ 'language' => 'en' },
33
+ { 'browser' => 'Chrome', 'language' => 'es' }
34
+ ] })
35
+ assert_authorization_header auth_manager
36
+ end
37
+ end
38
+
39
+ describe 'assign' do
40
+ def sample_results
41
+ %(<?xml version="1.0" encoding="UTF-8"?>
42
+ <rsp stat="ok" version="1.0">
43
+ <visitor>
44
+ <browser>Chrome</browser>
45
+ <language>es</language>
46
+ </visitor>
47
+ </rsp>)
48
+ end
49
+
50
+ it 'should return the prospect' do
51
+ fake_post '/api/visitor/version/3/do/assign/id/10?type=Good&format=simple&name=Jim', sample_results
52
+
53
+ expect(client.visitors.assign(10, name: 'Jim',
54
+ type: 'Good')).to eq({ 'browser' => 'Chrome', 'language' => 'es' })
55
+ assert_authorization_header auth_manager
56
+ end
57
+ end
61
58
  end
62
-
63
59
  end
64
-
65
- end
60
+ end
@@ -1,65 +1,60 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
4
 
3
5
  describe Pardot::Objects::Visits do
4
-
5
- before do
6
- @client = create_client
7
- end
8
-
9
- describe "query" do
10
-
11
- def sample_results
12
- %(<?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="ok" version="1.0">
13
- <result>
14
- <total_results>2</total_results>
15
- <visit>
16
- <duration_in_seconds>50</duration_in_seconds>
17
- <visitor_page_view_count>3</visitor_page_view_count>
18
- </visit>
19
- <visit>
20
- <duration_in_seconds>10</duration_in_seconds>
21
- <visitor_page_view_count>1</visitor_page_view_count>
22
- </visit>
23
- </result>
24
- </rsp>)
25
- end
26
-
27
- before do
28
- @client = create_client
29
- end
30
-
31
- it "should take in some arguments" do
32
- fake_get "/api/visit/version/3/do/query?id_greater_than=200&format=simple", sample_results
33
-
34
- expect(@client.visits.query(:id_greater_than => 200)).to eq({"total_results" => 2,
35
- "visit"=>[
36
- {"duration_in_seconds"=>"50", "visitor_page_view_count"=>"3"},
37
- {"duration_in_seconds"=>"10", "visitor_page_view_count"=>"1"}
38
- ]})
39
- assert_authorization_header
40
- end
41
-
42
- end
43
-
44
- describe "read" do
45
-
46
- def sample_results
47
- %(<?xml version="1.0" encoding="UTF-8"?>
48
- <rsp stat="ok" version="1.0">
49
- <visit>
50
- <duration_in_seconds>10</duration_in_seconds>
51
- <visitor_page_view_count>1</visitor_page_view_count>
52
- </visit>
53
- </rsp>)
54
- end
55
-
56
- it "should return the prospect" do
57
- fake_post "/api/visit/version/3/do/read/id/10?format=simple", sample_results
58
-
59
- expect(@client.visits.read(10)).to eq({"visitor_page_view_count"=>"1", "duration_in_seconds"=>"10"})
60
- assert_authorization_header
6
+ create_auth_managers.each do |auth_manager|
7
+ context auth_manager.test_name_suffix do
8
+ let(:client) { auth_manager.create_client }
9
+ describe 'query' do
10
+ def sample_results
11
+ %(<?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="ok" version="1.0">
12
+ <result>
13
+ <total_results>2</total_results>
14
+ <visit>
15
+ <duration_in_seconds>50</duration_in_seconds>
16
+ <visitor_page_view_count>3</visitor_page_view_count>
17
+ </visit>
18
+ <visit>
19
+ <duration_in_seconds>10</duration_in_seconds>
20
+ <visitor_page_view_count>1</visitor_page_view_count>
21
+ </visit>
22
+ </result>
23
+ </rsp>)
24
+ end
25
+
26
+ it 'should take in some arguments' do
27
+ fake_get '/api/visit/version/3/do/query?id_greater_than=200&format=simple', sample_results
28
+
29
+ expect(client.visits.query(id_greater_than: 200)).to eq({ 'total_results' => 2,
30
+ 'visit' => [
31
+ { 'duration_in_seconds' => '50',
32
+ 'visitor_page_view_count' => '3' },
33
+ { 'duration_in_seconds' => '10',
34
+ 'visitor_page_view_count' => '1' }
35
+ ] })
36
+ assert_authorization_header auth_manager
37
+ end
38
+ end
39
+
40
+ describe 'read' do
41
+ def sample_results
42
+ %(<?xml version="1.0" encoding="UTF-8"?>
43
+ <rsp stat="ok" version="1.0">
44
+ <visit>
45
+ <duration_in_seconds>10</duration_in_seconds>
46
+ <visitor_page_view_count>1</visitor_page_view_count>
47
+ </visit>
48
+ </rsp>)
49
+ end
50
+
51
+ it 'should return the prospect' do
52
+ fake_post '/api/visit/version/3/do/read/id/10?format=simple', sample_results
53
+
54
+ expect(client.visits.read(10)).to eq({ 'visitor_page_view_count' => '1', 'duration_in_seconds' => '10' })
55
+ assert_authorization_header auth_manager
56
+ end
57
+ end
61
58
  end
62
-
63
59
  end
64
-
65
- end
60
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rubygems'
2
4
  require 'cgi'
3
5
  require 'tempfile'
@@ -1,6 +1,42 @@
1
+ # frozen_string_literal: true
1
2
 
2
- def create_client
3
- @client = Pardot::Client.new "user@test.com", "foo", "bar"
4
- @client.api_key = "my_api_key"
5
- @client
3
+ def create_auth_managers
4
+ [UsernamePasswordAuthManager.new, SalesforceAccessTokenAuthManager.new]
5
+ end
6
+
7
+ class UsernamePasswordAuthManager
8
+ attr_accessor :test_name_suffix, :expected_authorization_header
9
+
10
+ def initialize
11
+ @test_name_suffix = 'With UsernamePassword Auth'
12
+ @expected_authorization_header = 'Pardot api_key=my_api_key, user_key=bar'
13
+ end
14
+
15
+ def create_client
16
+ client = Pardot::Client.new 'user@test.com', 'foo', 'bar'
17
+ client.api_key = 'my_api_key'
18
+ client
19
+ end
20
+
21
+ def has_business_unit_id_header?
22
+ false
23
+ end
24
+ end
25
+
26
+ class SalesforceAccessTokenAuthManager
27
+ attr_accessor :test_name_suffix, :expected_authorization_header, :expected_business_unit_id_header
28
+
29
+ def initialize
30
+ @test_name_suffix = 'With Salesforce OAuth'
31
+ @expected_authorization_header = 'Bearer access_token_value'
32
+ @expected_business_unit_id_header = '0Uv000000000001CAA'
33
+ end
34
+
35
+ def create_client
36
+ Pardot::Client.new nil, nil, nil, 3, 'access_token_value', '0Uv000000000001CAA'
37
+ end
38
+
39
+ def has_business_unit_id_header?
40
+ false
41
+ end
6
42
  end
@@ -1,18 +1,23 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'fakeweb'
2
4
  FakeWeb.allow_net_connect = false
3
5
 
4
- def fake_post path, response
5
- FakeWeb.register_uri(:post, "https://pi.pardot.com#{path}", :body => response)
6
+ def fake_post(path, response)
7
+ FakeWeb.register_uri(:post, "https://pi.pardot.com#{path}", body: response)
6
8
  end
7
9
 
8
- def fake_get path, response
9
- FakeWeb.register_uri(:get, "https://pi.pardot.com#{path}", :body => response)
10
+ def fake_get(path, response)
11
+ FakeWeb.register_uri(:get, "https://pi.pardot.com#{path}", body: response)
10
12
  end
11
13
 
12
- def fake_authenticate client, api_key
14
+ def fake_authenticate(client, api_key)
13
15
  client.api_key = api_key
14
16
  end
15
17
 
16
- def assert_authorization_header
17
- expect(FakeWeb.last_request[:authorization]).to eq('Pardot api_key=my_api_key, user_key=bar')
18
- end
18
+ def assert_authorization_header(auth_manager)
19
+ expect(FakeWeb.last_request[:authorization]).to eq(auth_manager.expected_authorization_header)
20
+ if auth_manager.has_business_unit_id_header?
21
+ expect(FakeWeb.last_request['Business-Unit-Id']).to eq(auth_manager.expected_business_unit_id_header)
22
+ end
23
+ end