sendgrid4r 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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