sendgrid4r 0.2.0 → 0.3.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 (61) hide show
  1. checksums.yaml +4 -4
  2. data/.env.example +5 -0
  3. data/.rubocop.yml +8 -8
  4. data/README.md +2 -0
  5. data/lib/auth.rb +5 -2
  6. data/lib/client.rb +4 -2
  7. data/lib/sendgrid4r/factory/version_factory.rb +1 -1
  8. data/lib/sendgrid4r/rest/api.rb +4 -0
  9. data/lib/sendgrid4r/rest/api_keys/api_keys.rb +73 -0
  10. data/lib/sendgrid4r/rest/asm/asm.rb +28 -0
  11. data/lib/sendgrid4r/rest/asm/global_suppressions.rb +12 -8
  12. data/lib/sendgrid4r/rest/asm/groups.rb +29 -22
  13. data/lib/sendgrid4r/rest/asm/suppressions.rb +25 -15
  14. data/lib/sendgrid4r/rest/categories/categories.rb +19 -9
  15. data/lib/sendgrid4r/rest/contacts/custom_fields.rb +14 -8
  16. data/lib/sendgrid4r/rest/contacts/lists.rb +32 -20
  17. data/lib/sendgrid4r/rest/contacts/recipients.rb +42 -31
  18. data/lib/sendgrid4r/rest/contacts/reserved_fields.rb +6 -2
  19. data/lib/sendgrid4r/rest/contacts/segments.rb +22 -12
  20. data/lib/sendgrid4r/rest/ips/addresses.rb +36 -22
  21. data/lib/sendgrid4r/rest/ips/pools.rb +31 -16
  22. data/lib/sendgrid4r/rest/ips/warmup.rb +34 -15
  23. data/lib/sendgrid4r/rest/request.rb +33 -19
  24. data/lib/sendgrid4r/rest/settings/enforced_tls.rb +12 -5
  25. data/lib/sendgrid4r/rest/stats/advanced.rb +73 -25
  26. data/lib/sendgrid4r/rest/stats/category.rb +11 -6
  27. data/lib/sendgrid4r/rest/stats/global.rb +6 -4
  28. data/lib/sendgrid4r/rest/stats/parse.rb +10 -4
  29. data/lib/sendgrid4r/rest/stats/stats.rb +13 -18
  30. data/lib/sendgrid4r/rest/stats/subuser.rb +10 -6
  31. data/lib/sendgrid4r/rest/templates/templates.rb +23 -16
  32. data/lib/sendgrid4r/rest/templates/versions.rb +39 -36
  33. data/lib/sendgrid4r/version.rb +1 -1
  34. data/spec/api_keys/api_keys_spec.rb +152 -0
  35. data/spec/asm/asm_spec.rb +33 -0
  36. data/spec/asm/global_suppressions_spec.rb +111 -45
  37. data/spec/asm/groups_spec.rb +172 -48
  38. data/spec/asm/suppressions_spec.rb +180 -54
  39. data/spec/categories/categories_spec.rb +81 -25
  40. data/spec/client_spec.rb +11 -4
  41. data/spec/contacts/custom_fields_spec.rb +135 -44
  42. data/spec/contacts/lists_spec.rb +314 -84
  43. data/spec/contacts/recipients_spec.rb +337 -92
  44. data/spec/contacts/reserved_fields_spec.rb +80 -60
  45. data/spec/contacts/segments_spec.rb +219 -88
  46. data/spec/factory/condition_factory_spec.rb +12 -12
  47. data/spec/factory/segment_factory_spec.rb +19 -19
  48. data/spec/factory/version_factory_spec.rb +6 -6
  49. data/spec/ips/addresses_spec.rb +177 -84
  50. data/spec/ips/pools_spec.rb +190 -34
  51. data/spec/ips/warmup_spec.rb +106 -38
  52. data/spec/settings/enforced_tls_spec.rb +76 -18
  53. data/spec/stats/advanced_spec.rb +373 -196
  54. data/spec/stats/category_spec.rb +133 -71
  55. data/spec/stats/global_spec.rb +74 -47
  56. data/spec/stats/parse_spec.rb +46 -29
  57. data/spec/stats/stats_spec.rb +246 -0
  58. data/spec/stats/subuser_spec.rb +99 -54
  59. data/spec/templates/templates_spec.rb +219 -54
  60. data/spec/templates/versions_spec.rb +171 -67
  61. metadata +10 -2
@@ -11,79 +11,127 @@ module SendGrid4r
11
11
  #
12
12
  module Advanced
13
13
  def get_geo_stats(
14
- start_date:, end_date: nil, aggregated_by: nil, country: nil)
14
+ start_date:,
15
+ end_date: nil,
16
+ aggregated_by: nil,
17
+ country: nil,
18
+ &block
19
+ )
15
20
  params = {
16
21
  start_date: start_date,
17
22
  end_date: end_date,
18
23
  aggregated_by: aggregated_by,
19
24
  country: country
20
25
  }
21
- resp_a = get(
22
- @auth, "#{SendGrid4r::Client::BASE_URL}/geo/stats", params)
23
- SendGrid4r::REST::Stats.create_top_stats(resp_a)
26
+ resp = get(
27
+ @auth, "#{SendGrid4r::Client::BASE_URL}/geo/stats", params, &block)
28
+ SendGrid4r::REST::Stats.create_top_stats(resp)
24
29
  end
25
30
 
26
- def get_devices_stats(start_date:, end_date: nil, aggregated_by: nil)
31
+ def get_devices_stats(
32
+ start_date:,
33
+ end_date: nil,
34
+ aggregated_by: nil,
35
+ &block
36
+ )
27
37
  params = {
28
38
  start_date: start_date,
29
39
  end_date: end_date,
30
40
  aggregated_by: aggregated_by
31
41
  }
32
- resp_a = get(
33
- @auth, "#{SendGrid4r::Client::BASE_URL}/devices/stats", params)
34
- SendGrid4r::REST::Stats.create_top_stats(resp_a)
42
+ resp = get(
43
+ @auth,
44
+ "#{SendGrid4r::Client::BASE_URL}/devices/stats",
45
+ params,
46
+ &block
47
+ )
48
+ SendGrid4r::REST::Stats.create_top_stats(resp)
35
49
  end
36
50
 
37
- def get_clients_stats(start_date:, end_date: nil, aggregated_by: nil)
51
+ def get_clients_stats(
52
+ start_date:,
53
+ end_date: nil,
54
+ aggregated_by: nil,
55
+ &block
56
+ )
38
57
  params = {
39
58
  start_date: start_date,
40
59
  end_date: end_date,
41
60
  aggregated_by: aggregated_by
42
61
  }
43
- resp_a = get(
44
- @auth, "#{SendGrid4r::Client::BASE_URL}/clients/stats", params)
45
- SendGrid4r::REST::Stats.create_top_stats(resp_a)
62
+ resp = get(
63
+ @auth,
64
+ "#{SendGrid4r::Client::BASE_URL}/clients/stats",
65
+ params,
66
+ &block
67
+ )
68
+ SendGrid4r::REST::Stats.create_top_stats(resp)
46
69
  end
47
70
 
48
71
  def get_clients_type_stats(
49
- start_date:, end_date: nil, aggregated_by: nil, client_type:)
72
+ start_date:,
73
+ end_date: nil,
74
+ aggregated_by: nil,
75
+ client_type:,
76
+ &block
77
+ )
50
78
  params = {
51
79
  start_date: start_date,
52
80
  end_date: end_date,
53
81
  aggregated_by: aggregated_by,
54
82
  client_type: client_type
55
83
  }
56
- resp_a = get(
84
+ resp = get(
57
85
  @auth,
58
86
  "#{SendGrid4r::Client::BASE_URL}/clients/#{client_type}/stats",
59
- params)
60
- SendGrid4r::REST::Stats.create_top_stats(resp_a)
87
+ params,
88
+ &block
89
+ )
90
+ SendGrid4r::REST::Stats.create_top_stats(resp)
61
91
  end
62
92
 
63
- def get_esp_stats(
64
- start_date:, end_date: nil, aggregated_by: nil, esps: nil)
93
+ def get_mailbox_providers_stats(
94
+ start_date:,
95
+ end_date: nil,
96
+ aggregated_by: nil,
97
+ esps: nil,
98
+ &block
99
+ )
65
100
  params = {
66
101
  start_date: start_date,
67
102
  end_date: end_date,
68
103
  aggregated_by: aggregated_by,
69
104
  esps: esps
70
105
  }
71
- resp_a = get(
72
- @auth, "#{SendGrid4r::Client::BASE_URL}/esp/stats", params)
73
- SendGrid4r::REST::Stats.create_top_stats(resp_a)
106
+ resp = get(
107
+ @auth,
108
+ "#{SendGrid4r::Client::BASE_URL}/mailbox_providers/stats",
109
+ params,
110
+ &block
111
+ )
112
+ SendGrid4r::REST::Stats.create_top_stats(resp)
74
113
  end
75
114
 
76
115
  def get_browsers_stats(
77
- start_date:, end_date: nil, aggregated_by: nil, browsers: nil)
116
+ start_date:,
117
+ end_date: nil,
118
+ aggregated_by: nil,
119
+ browsers: nil,
120
+ &block
121
+ )
78
122
  params = {
79
123
  start_date: start_date,
80
124
  end_date: end_date,
81
125
  aggregated_by: aggregated_by,
82
126
  browsers: browsers
83
127
  }
84
- resp_a = get(
85
- @auth, "#{SendGrid4r::Client::BASE_URL}/browsers/stats", params)
86
- SendGrid4r::REST::Stats.create_top_stats(resp_a)
128
+ resp = get(
129
+ @auth,
130
+ "#{SendGrid4r::Client::BASE_URL}/browsers/stats",
131
+ params,
132
+ &block
133
+ )
134
+ SendGrid4r::REST::Stats.create_top_stats(resp)
87
135
  end
88
136
  end
89
137
  end
@@ -11,21 +11,25 @@ module SendGrid4r
11
11
  #
12
12
  module Category
13
13
  def get_categories_stats(
14
- start_date:, end_date: nil, aggregated_by: nil, categories:)
14
+ start_date:, end_date: nil, aggregated_by: nil, categories:, &block)
15
15
  params = {
16
16
  start_date: start_date,
17
17
  end_date: end_date,
18
18
  aggregated_by: aggregated_by,
19
19
  categories: categories
20
20
  }
21
- resp_a = get(
22
- @auth, "#{SendGrid4r::Client::BASE_URL}/categories/stats", params)
23
- SendGrid4r::REST::Stats.create_top_stats(resp_a)
21
+ resp = get(
22
+ @auth,
23
+ "#{SendGrid4r::Client::BASE_URL}/categories/stats",
24
+ params,
25
+ &block
26
+ )
27
+ SendGrid4r::REST::Stats.create_top_stats(resp)
24
28
  end
25
29
 
26
30
  def get_categories_stats_sums(
27
31
  start_date:, end_date: nil, sort_by_metric: nil,
28
- sort_by_direction: nil, limit: nil, offset: nil)
32
+ sort_by_direction: nil, limit: nil, offset: nil, &block)
29
33
  params = {
30
34
  start_date: start_date,
31
35
  end_date: end_date,
@@ -37,7 +41,8 @@ module SendGrid4r
37
41
  resp = get(
38
42
  @auth,
39
43
  "#{SendGrid4r::Client::BASE_URL}/categories/stats/sums",
40
- params)
44
+ params,
45
+ &block)
41
46
  SendGrid4r::REST::Stats.create_top_stat(resp)
42
47
  end
43
48
  end
@@ -10,15 +10,17 @@ module SendGrid4r
10
10
  # SendGrid Web API v3 Stats - Global
11
11
  #
12
12
  module Global
13
- def get_global_stats(start_date:, end_date: nil, aggregated_by: nil)
13
+ def get_global_stats(
14
+ start_date:, end_date: nil, aggregated_by: nil, &block
15
+ )
14
16
  params = {
15
17
  start_date: start_date,
16
18
  end_date: end_date,
17
19
  aggregated_by: aggregated_by
18
20
  }
19
- resp_a = get(
20
- @auth, "#{SendGrid4r::Client::BASE_URL}/stats", params)
21
- SendGrid4r::REST::Stats.create_top_stats(resp_a)
21
+ resp = get(
22
+ @auth, "#{SendGrid4r::Client::BASE_URL}/stats", params, &block)
23
+ SendGrid4r::REST::Stats.create_top_stats(resp)
22
24
  end
23
25
  end
24
26
  end
@@ -10,15 +10,21 @@ module SendGrid4r
10
10
  # SendGrid Web API v3 Stats - Parse
11
11
  #
12
12
  module Parse
13
- def get_parse_stats(start_date:, end_date: nil, aggregated_by: nil)
13
+ def get_parse_stats(
14
+ start_date:, end_date: nil, aggregated_by: nil, &block
15
+ )
14
16
  params = {
15
17
  start_date: start_date,
16
18
  end_date: end_date,
17
19
  aggregated_by: aggregated_by
18
20
  }
19
- resp_a = get(
20
- @auth, "#{SendGrid4r::Client::BASE_URL}/parse/stats", params)
21
- SendGrid4r::REST::Stats.create_top_stats(resp_a)
21
+ resp = get(
22
+ @auth,
23
+ "#{SendGrid4r::Client::BASE_URL}/user/webhooks/parse/stats",
24
+ params,
25
+ &block
26
+ )
27
+ SendGrid4r::REST::Stats.create_top_stats(resp)
22
28
  end
23
29
  end
24
30
  end
@@ -42,6 +42,7 @@ module SendGrid4r
42
42
  )
43
43
 
44
44
  def self.create_top_stat(resp)
45
+ return resp if resp.nil?
45
46
  stats = []
46
47
  resp['stats'].each do |stat|
47
48
  stats.push(SendGrid4r::REST::Stats.create_stat(stat))
@@ -50,34 +51,28 @@ module SendGrid4r
50
51
  end
51
52
 
52
53
  def self.create_stat(resp)
54
+ return resp if resp.nil?
53
55
  stat = SendGrid4r::REST::Stats.create_metric(resp['metrics'])
54
56
  Stat.new(stat, resp['name'], resp['type'])
55
57
  end
56
58
 
57
59
  def self.create_metric(resp)
60
+ return resp if resp.nil?
58
61
  Metric.new(
59
- resp['blocks'],
60
- resp['bounce_drops'],
61
- resp['bounces'],
62
- resp['clicks'],
63
- resp['deferred'],
64
- resp['delivered'],
65
- resp['drops'],
66
- resp['invalid_emails'],
67
- resp['opens'],
68
- resp['processed'],
69
- resp['requests'],
70
- resp['spam_report_drops'],
71
- resp['spam_reports'],
72
- resp['unique_clicks'],
73
- resp['unique_opens'],
74
- resp['unsubscribe_drops'],
75
- resp['unsubscribes'],
76
- resp['received']
62
+ resp['blocks'], resp['bounce_drops'],
63
+ resp['bounces'], resp['clicks'],
64
+ resp['deferred'], resp['delivered'],
65
+ resp['drops'], resp['invalid_emails'],
66
+ resp['opens'], resp['processed'],
67
+ resp['requests'], resp['spam_report_drops'],
68
+ resp['spam_reports'], resp['unique_clicks'],
69
+ resp['unique_opens'], resp['unsubscribe_drops'],
70
+ resp['unsubscribes'], resp['received']
77
71
  )
78
72
  end
79
73
 
80
74
  def self.create_top_stats(resp_a)
75
+ return resp_a if resp_a.nil?
81
76
  top_stats = []
82
77
  resp_a.each do |resp|
83
78
  top_stats.push(SendGrid4r::REST::Stats.create_top_stat(resp))
@@ -11,21 +11,24 @@ module SendGrid4r
11
11
  #
12
12
  module Subuser
13
13
  def get_subusers_stats(
14
- start_date:, end_date: nil, aggregated_by: nil, subusers:)
14
+ start_date:, end_date: nil, aggregated_by: nil, subusers:, &block)
15
15
  params = {
16
16
  start_date: start_date,
17
17
  end_date: end_date,
18
18
  aggregated_by: aggregated_by,
19
19
  subusers: subusers
20
20
  }
21
- resp_a = get(
22
- @auth, "#{SendGrid4r::Client::BASE_URL}/subusers/stats", params)
23
- SendGrid4r::REST::Stats.create_top_stats(resp_a)
21
+ resp = get(
22
+ @auth,
23
+ "#{SendGrid4r::Client::BASE_URL}/subusers/stats",
24
+ params,
25
+ &block)
26
+ SendGrid4r::REST::Stats.create_top_stats(resp)
24
27
  end
25
28
 
26
29
  def get_subusers_stats_sums(
27
30
  start_date:, end_date: nil, sort_by_metric: nil,
28
- sort_by_direction: nil, limit: nil, offset: nil)
31
+ sort_by_direction: nil, limit: nil, offset: nil, &block)
29
32
  params = {
30
33
  start_date: start_date,
31
34
  end_date: end_date,
@@ -37,7 +40,8 @@ module SendGrid4r
37
40
  resp = get(
38
41
  @auth,
39
42
  "#{SendGrid4r::Client::BASE_URL}/subusers/stats/sums",
40
- params
43
+ params,
44
+ &block
41
45
  )
42
46
  SendGrid4r::REST::Stats.create_top_stat(resp)
43
47
  end
@@ -12,6 +12,7 @@ module SendGrid4r
12
12
  module Templates
13
13
  include SendGrid4r::REST::Request
14
14
 
15
+ Templates = Struct.new(:templates)
15
16
  Template = Struct.new(:id, :name, :versions)
16
17
 
17
18
  def self.url(temp_id = nil)
@@ -20,41 +21,47 @@ module SendGrid4r
20
21
  url
21
22
  end
22
23
 
24
+ def self.create_templates(resp)
25
+ return resp if resp.nil?
26
+ tmps = []
27
+ resp['templates'].each do |template|
28
+ tmps.push(SendGrid4r::REST::Templates.create_template(template))
29
+ end
30
+ Templates.new(tmps)
31
+ end
32
+
23
33
  def self.create_template(resp)
34
+ return resp if resp.nil?
24
35
  vers = []
25
36
  resp['versions'].each do |ver|
26
- vers.push(SendGrid4r::REST::Templates.create_version(ver))
37
+ vers.push(SendGrid4r::REST::Templates::Versions.create_version(ver))
27
38
  end
28
39
  Template.new(resp['id'], resp['name'], vers)
29
40
  end
30
41
 
31
- def post_template(name)
32
- resp = post(@auth, SendGrid4r::REST::Templates.url, 'name' => name)
42
+ def post_template(name, &block)
43
+ resp = post(@auth, SendGrid4r::REST::Templates.url, name: name, &block)
33
44
  SendGrid4r::REST::Templates.create_template(resp)
34
45
  end
35
46
 
36
- def get_templates
37
- resp_a = get(@auth, SendGrid4r::REST::Templates.url)
38
- tmps = []
39
- resp_a['templates'].each do |resp|
40
- tmps.push(SendGrid4r::REST::Templates.create_template(resp))
41
- end
42
- tmps
47
+ def get_templates(&block)
48
+ resp = get(@auth, SendGrid4r::REST::Templates.url, &block)
49
+ SendGrid4r::REST::Templates.create_templates(resp)
43
50
  end
44
51
 
45
- def get_template(temp_id)
46
- resp = get(@auth, SendGrid4r::REST::Templates.url(temp_id))
52
+ def get_template(temp_id, &block)
53
+ resp = get(@auth, SendGrid4r::REST::Templates.url(temp_id), &block)
47
54
  SendGrid4r::REST::Templates.create_template(resp)
48
55
  end
49
56
 
50
- def patch_template(temp_id, name)
57
+ def patch_template(temp_id, name, &block)
51
58
  resp = patch(
52
- @auth, SendGrid4r::REST::Templates.url(temp_id), 'name' => name)
59
+ @auth, SendGrid4r::REST::Templates.url(temp_id), name: name, &block)
53
60
  SendGrid4r::REST::Templates.create_template(resp)
54
61
  end
55
62
 
56
- def delete_template(temp_id)
57
- delete(@auth, SendGrid4r::REST::Templates.url(temp_id))
63
+ def delete_template(temp_id, &block)
64
+ delete(@auth, SendGrid4r::REST::Templates.url(temp_id), &block)
58
65
  end
59
66
  end
60
67
  end
@@ -9,73 +9,76 @@ module SendGrid4r
9
9
  # SendGrid Web API v3 Template Engine - Templates
10
10
  #
11
11
  module Templates
12
- Version = Struct.new(
13
- :id, :user_id, :template_id, :active, :name, :html_content,
14
- :plain_content, :subject, :updated_at)
15
-
16
- def self.create_version(resp)
17
- Version.new(
18
- resp['id'],
19
- resp['user_id'],
20
- resp['template_id'],
21
- resp['active'],
22
- resp['name'],
23
- resp['html_content'],
24
- resp['plain_content'],
25
- resp['subject'],
26
- resp['updated_at'])
27
- end
28
-
29
12
  #
30
13
  # SendGrid Web API v3 Template Engine - Versions
31
14
  #
32
15
  module Versions
33
16
  include SendGrid4r::REST::Request
34
17
 
18
+ Version = Struct.new(
19
+ :id, :user_id, :template_id, :active, :name, :html_content,
20
+ :plain_content, :subject, :updated_at)
21
+
22
+ def self.create_version(resp)
23
+ return resp if resp.nil?
24
+ Version.new(
25
+ resp['id'],
26
+ resp['user_id'],
27
+ resp['template_id'],
28
+ resp['active'],
29
+ resp['name'],
30
+ resp['html_content'],
31
+ resp['plain_content'],
32
+ resp['subject'],
33
+ resp['updated_at'])
34
+ end
35
+
35
36
  def self.url(temp_id, ver_id = nil)
36
37
  url = "#{SendGrid4r::Client::BASE_URL}/templates/#{temp_id}/versions"
37
38
  url = "#{url}/#{ver_id}" unless ver_id.nil?
38
39
  url
39
40
  end
40
41
 
41
- def post_version(temp_id, version)
42
+ def post_version(temp_id, version, &block)
42
43
  resp = post(
43
44
  @auth,
44
- "#{SendGrid4r::REST::Templates::Versions.url(temp_id)}",
45
- remove_uneditable_keys(version.to_h)
45
+ SendGrid4r::REST::Templates::Versions.url(temp_id),
46
+ remove_uneditable_keys(version.to_h),
47
+ &block
46
48
  )
47
- SendGrid4r::REST::Templates.create_version(resp)
49
+ SendGrid4r::REST::Templates::Versions.create_version(resp)
48
50
  end
49
51
 
50
- def activate_version(temp_id, ver_id)
52
+ def activate_version(temp_id, ver_id, &block)
51
53
  url = SendGrid4r::REST::Templates::Versions.url(temp_id, ver_id)
52
- resp = post(
53
- @auth,
54
- "#{url}/activate"
55
- )
56
- SendGrid4r::REST::Templates.create_version(resp)
54
+ resp = post(@auth, "#{url}/activate", &block)
55
+ SendGrid4r::REST::Templates::Versions.create_version(resp)
57
56
  end
58
57
 
59
- def get_version(temp_id, ver_id)
58
+ def get_version(temp_id, ver_id, &block)
60
59
  resp = get(
61
60
  @auth,
62
- "#{SendGrid4r::REST::Templates::Versions.url(temp_id, ver_id)}")
63
- SendGrid4r::REST::Templates.create_version(resp)
61
+ SendGrid4r::REST::Templates::Versions.url(temp_id, ver_id),
62
+ &block
63
+ )
64
+ SendGrid4r::REST::Templates::Versions.create_version(resp)
64
65
  end
65
66
 
66
- def patch_version(temp_id, ver_id, version)
67
+ def patch_version(temp_id, ver_id, version, &block)
67
68
  resp = patch(
68
69
  @auth,
69
- "#{SendGrid4r::REST::Templates::Versions.url(temp_id, ver_id)}",
70
- remove_uneditable_keys(version.to_h)
70
+ SendGrid4r::REST::Templates::Versions.url(temp_id, ver_id),
71
+ remove_uneditable_keys(version.to_h),
72
+ &block
71
73
  )
72
- SendGrid4r::REST::Templates.create_version(resp)
74
+ SendGrid4r::REST::Templates::Versions.create_version(resp)
73
75
  end
74
76
 
75
- def delete_version(temp_id, ver_id)
77
+ def delete_version(temp_id, ver_id, &block)
76
78
  delete(
77
79
  @auth,
78
- "#{SendGrid4r::REST::Templates::Versions.url(temp_id, ver_id)}"
80
+ SendGrid4r::REST::Templates::Versions.url(temp_id, ver_id),
81
+ &block
79
82
  )
80
83
  end
81
84
 
@@ -2,5 +2,5 @@
2
2
  # SendGrid API v3 wrapper implementation.
3
3
  #
4
4
  module SendGrid4r
5
- VERSION = '0.2.0'
5
+ VERSION = '0.3.0'
6
6
  end
@@ -0,0 +1,152 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/../spec_helper'
3
+
4
+ describe SendGrid4r::REST::ApiKeys do
5
+ describe 'integration test' do
6
+ before do
7
+ begin
8
+ Dotenv.load
9
+ @client = SendGrid4r::Client.new(api_key: ENV['API_KEY'])
10
+ @name1 = 'api_key_name1'
11
+ @name2 = 'api_key_name2'
12
+ @name1e = 'api_key_name1_edit'
13
+
14
+ # celan up test env(lists)
15
+ api_keys = @client.get_api_keys
16
+ api_keys.result.each do |api_key|
17
+ @client.delete_api_key(api_key.api_key_id) if api_key.name == @name1
18
+ @client.delete_api_key(api_key.api_key_id) if api_key.name == @name2
19
+ @client.delete_api_key(api_key.api_key_id) if api_key.name == @name1e
20
+ end
21
+
22
+ # post api_key
23
+ @api_key1 = @client.post_api_key(@name1)
24
+ rescue => e
25
+ puts e.inspect
26
+ raise e
27
+ end
28
+ end
29
+
30
+ context 'without block call' do
31
+ it '#get_api_keys' do
32
+ begin
33
+ api_keys = @client.get_api_keys
34
+ expect(api_keys).to be_a(SendGrid4r::REST::ApiKeys::ApiKeys)
35
+ expect(api_keys.result).to be_a(Array)
36
+ rescue => e
37
+ puts e.inspect
38
+ raise e
39
+ end
40
+ end
41
+
42
+ it '#post_api_key' do
43
+ begin
44
+ api_key2 = @client.post_api_key(@name2)
45
+ expect(api_key2).to be_a(SendGrid4r::REST::ApiKeys::ApiKey)
46
+ expect(api_key2.name).to eq(@name2)
47
+ expect(api_key2.api_key_id).to be_a(String)
48
+ expect(api_key2.api_key).to be_a(String)
49
+ expect(api_key2.scope_set_id).to be_a(String)
50
+ rescue => e
51
+ puts e.inspect
52
+ raise e
53
+ end
54
+ end
55
+
56
+ it '#delete_api_key' do
57
+ begin
58
+ @client.delete_api_key(@api_key1.api_key_id)
59
+ rescue => e
60
+ puts e.inspect
61
+ raise e
62
+ end
63
+ end
64
+
65
+ it '#patch_api_key' do
66
+ begin
67
+ edit_api_key = @client.patch_api_key(@api_key1.api_key_id, @name1e)
68
+ expect(edit_api_key.api_key_id).to eq(@api_key1.api_key_id)
69
+ expect(edit_api_key.name).to eq(@name1e)
70
+ rescue => e
71
+ puts e.inspect
72
+ raise e
73
+ end
74
+ end
75
+ end
76
+
77
+ context 'with block call' do
78
+ it '#get_api_keys' do
79
+ @client.get_api_keys do |resp, req, res|
80
+ resp =
81
+ SendGrid4r::REST::ApiKeys.create_api_keys(JSON.parse(resp))
82
+ expect(resp).to be_a(SendGrid4r::REST::ApiKeys::ApiKeys)
83
+ expect(req).to be_a(RestClient::Request)
84
+ expect(res).to be_a(Net::HTTPOK)
85
+ end
86
+ end
87
+
88
+ it '#post_api_key' do
89
+ @client.post_api_key(@name2) do |resp, req, res|
90
+ resp =
91
+ SendGrid4r::REST::ApiKeys.create_api_key(JSON.parse(resp))
92
+ expect(resp).to be_a(SendGrid4r::REST::ApiKeys::ApiKey)
93
+ expect(req).to be_a(RestClient::Request)
94
+ expect(res).to be_a(Net::HTTPCreated)
95
+ end
96
+ end
97
+
98
+ it '#delete_api_key' do
99
+ @client.delete_api_key(@api_key1.api_key_id) do |resp, req, res|
100
+ expect(resp).to eq('')
101
+ expect(req).to be_a(RestClient::Request)
102
+ expect(res).to be_a(Net::HTTPNoContent)
103
+ end
104
+ end
105
+
106
+ it '#patch_api_key' do
107
+ @client.patch_api_key(@api_key1.api_key_id, @name1e) do |resp, req, res|
108
+ resp =
109
+ SendGrid4r::REST::ApiKeys.create_api_key(JSON.parse(resp))
110
+ expect(resp).to be_a(SendGrid4r::REST::ApiKeys::ApiKey)
111
+ expect(req).to be_a(RestClient::Request)
112
+ expect(res).to be_a(Net::HTTPOK)
113
+ end
114
+ end
115
+ end
116
+ end
117
+
118
+ describe 'unit test' do
119
+ it 'creates api_key instance' do
120
+ json =
121
+ '{'\
122
+ '"api_key_id": "qfTQ6KG0QBiwWdJ0-pCLCA",'\
123
+ '"name": "A New Hope"'\
124
+ '}'
125
+ hash = JSON.parse(json)
126
+ actual = SendGrid4r::REST::ApiKeys.create_api_key(hash)
127
+ expect(actual).to be_a(SendGrid4r::REST::ApiKeys::ApiKey)
128
+ expect(actual.api_key_id).to eq('qfTQ6KG0QBiwWdJ0-pCLCA')
129
+ expect(actual.name).to eq('A New Hope')
130
+ end
131
+
132
+ it 'creates api_keys instance' do
133
+ json =
134
+ '{'\
135
+ '"result": ['\
136
+ '{'\
137
+ '"name": "A New Hope",'\
138
+ '"api_key_id": "xxxxxxxx"'\
139
+ '}'\
140
+ ']'\
141
+ '}'
142
+ hash = JSON.parse(json)
143
+ actual = SendGrid4r::REST::ApiKeys.create_api_keys(hash)
144
+ expect(actual).to be_a(SendGrid4r::REST::ApiKeys::ApiKeys)
145
+ expect(actual.result).to be_a(Array)
146
+ actual.result.each do |api_key|
147
+ expect(api_key.name).to eq('A New Hope')
148
+ expect(api_key.api_key_id).to eq('xxxxxxxx')
149
+ end
150
+ end
151
+ end
152
+ end