mailroute 0.0.1

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 (190) hide show
  1. data/.gitignore +18 -0
  2. data/.ruby-gemset +1 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +4 -0
  5. data/Gemfile +6 -0
  6. data/Gemfile.lock +87 -0
  7. data/Guardfile +11 -0
  8. data/LICENSE.txt +22 -0
  9. data/README.md +57 -0
  10. data/Rakefile +42 -0
  11. data/lib/mailroute.rb +34 -0
  12. data/lib/mailroute/check_connection.rb +21 -0
  13. data/lib/mailroute/configuration.rb +24 -0
  14. data/lib/mailroute/extensions/active_resource/better_connection_error.rb +10 -0
  15. data/lib/mailroute/extensions/active_resource/formats.rb +19 -0
  16. data/lib/mailroute/extensions/active_resource/has_many.rb +13 -0
  17. data/lib/mailroute/extensions/active_resource/has_one.rb +13 -0
  18. data/lib/mailroute/extensions/active_resource/meta_information.rb +20 -0
  19. data/lib/mailroute/extensions/active_resource/urls_without_json_extension.rb +29 -0
  20. data/lib/mailroute/extensions/object.rb +3 -0
  21. data/lib/mailroute/extensions/relation.rb +59 -0
  22. data/lib/mailroute/models/admin.rb +21 -0
  23. data/lib/mailroute/models/base.rb +193 -0
  24. data/lib/mailroute/models/branding_info.rb +5 -0
  25. data/lib/mailroute/models/customer.rb +10 -0
  26. data/lib/mailroute/models/customer_contact.rb +6 -0
  27. data/lib/mailroute/models/domain.rb +56 -0
  28. data/lib/mailroute/models/domain_alias.rb +6 -0
  29. data/lib/mailroute/models/domain_contact.rb +6 -0
  30. data/lib/mailroute/models/email_account.rb +53 -0
  31. data/lib/mailroute/models/email_account_contact.rb +6 -0
  32. data/lib/mailroute/models/mail_server.rb +6 -0
  33. data/lib/mailroute/models/notification_account_task.rb +24 -0
  34. data/lib/mailroute/models/notification_domain_task.rb +6 -0
  35. data/lib/mailroute/models/outbound_server.rb +6 -0
  36. data/lib/mailroute/models/policy_domain.rb +6 -0
  37. data/lib/mailroute/models/policy_user.rb +6 -0
  38. data/lib/mailroute/models/reseller.rb +10 -0
  39. data/lib/mailroute/models/reseller_contact.rb +6 -0
  40. data/lib/mailroute/models/wblist.rb +7 -0
  41. data/lib/mailroute/version.rb +3 -0
  42. data/mailroute.gemspec +33 -0
  43. data/spec/lib/check_connection_spec.rb +43 -0
  44. data/spec/lib/configuration_spec.rb +17 -0
  45. data/spec/lib/mailroute/models/admin_spec.rb +13 -0
  46. data/spec/lib/mailroute/models/base_spec.rb +21 -0
  47. data/spec/lib/mailroute/models/customer_contact_spec.rb +32 -0
  48. data/spec/lib/mailroute/models/customer_spec.rb +244 -0
  49. data/spec/lib/mailroute/models/domain_alias_spec.rb +27 -0
  50. data/spec/lib/mailroute/models/domain_contact_spec.rb +32 -0
  51. data/spec/lib/mailroute/models/domain_spec.rb +215 -0
  52. data/spec/lib/mailroute/models/email_account_contact_spec.rb +32 -0
  53. data/spec/lib/mailroute/models/email_account_spec.rb +123 -0
  54. data/spec/lib/mailroute/models/mail_server_spec.rb +27 -0
  55. data/spec/lib/mailroute/models/notification_account_task_spec.rb +36 -0
  56. data/spec/lib/mailroute/models/notification_domain_task_spec.rb +19 -0
  57. data/spec/lib/mailroute/models/outbound_server_spec.rb +24 -0
  58. data/spec/lib/mailroute/models/reseller_contact_spec.rb +32 -0
  59. data/spec/lib/mailroute/models/reseller_spec.rb +297 -0
  60. data/spec/lib/mailroute/models/wblist_spec.rb +46 -0
  61. data/spec/spec_helper.rb +26 -0
  62. data/spec/support/custom_matchers.rb +5 -0
  63. data/spec/support/mailroute_configuration_helper.rb +9 -0
  64. data/spec/vcr_cassettes/Mailroute/_check_connection/when_configured_with_correct_credentials/should_return_true.yml +41 -0
  65. data/spec/vcr_cassettes/Mailroute/_check_connection/when_configured_with_incorrect_credentials/should_raise_Unauthorized_error.yml +38 -0
  66. data/spec/vcr_cassettes/Mailroute_Admin/basic_operations/should_perform_basic_read_operations.yml +38 -0
  67. data/spec/vcr_cassettes/Mailroute_Customer/_admins/should_return_a_list_of_its_admins.yml +41 -0
  68. data/spec/vcr_cassettes/Mailroute_Customer/_branding_info/should_return_its_branding_info.yml +79 -0
  69. data/spec/vcr_cassettes/Mailroute_Customer/_contacts/should_return_a_list_of_its_contacts.yml +41 -0
  70. data/spec/vcr_cassettes/Mailroute_Customer/_create_admin/.yml +80 -0
  71. data/spec/vcr_cassettes/Mailroute_Customer/_create_admin/should_be_in_the_list_of_the_customer_s_admins.yml +118 -0
  72. data/spec/vcr_cassettes/Mailroute_Customer/_create_admin/should_have_an_id.yml +80 -0
  73. data/spec/vcr_cassettes/Mailroute_Customer/_create_contact/.yml +80 -0
  74. data/spec/vcr_cassettes/Mailroute_Customer/_create_contact/should_have_a_link_to_the_customer.yml +118 -0
  75. data/spec/vcr_cassettes/Mailroute_Customer/_create_contact/should_save_a_new_contact.yml +118 -0
  76. data/spec/vcr_cassettes/Mailroute_Customer/_create_contact/should_save_the_attributes.yml +118 -0
  77. data/spec/vcr_cassettes/Mailroute_Customer/_create_domain/.yml +80 -0
  78. data/spec/vcr_cassettes/Mailroute_Customer/_create_domain/should_have_a_link_to_the_customer.yml +118 -0
  79. data/spec/vcr_cassettes/Mailroute_Customer/_create_domain/should_save_a_new_domain.yml +118 -0
  80. data/spec/vcr_cassettes/Mailroute_Customer/_create_domain/should_save_the_attributes.yml +118 -0
  81. data/spec/vcr_cassettes/Mailroute_Customer/_create_with_reseller/when_reseller_is_a_reseller_object/should_be_created_with_reseller.yml +118 -0
  82. data/spec/vcr_cassettes/Mailroute_Customer/_create_with_reseller/when_reseller_is_a_reseller_object/should_have_id.yml +80 -0
  83. data/spec/vcr_cassettes/Mailroute_Customer/_create_with_reseller/when_reseller_is_referenced_via_id/should_be_created_with_reseller.yml +118 -0
  84. data/spec/vcr_cassettes/Mailroute_Customer/_create_with_reseller/when_reseller_is_referenced_via_id/should_have_id.yml +80 -0
  85. data/spec/vcr_cassettes/Mailroute_Customer/_create_with_reseller/when_reseller_is_referenced_via_name/should_be_created_with_reseller.yml +156 -0
  86. data/spec/vcr_cassettes/Mailroute_Customer/_create_with_reseller/when_reseller_is_referenced_via_name/should_have_id.yml +118 -0
  87. data/spec/vcr_cassettes/Mailroute_Customer/_delete_admin/when_deleting_an_existing_admin/should_not_be_in_the_list_of_the_customer_s_admins.yml +152 -0
  88. data/spec/vcr_cassettes/Mailroute_Customer/_delete_admin/when_deleting_an_existing_admin/should_not_delete_all_admins.yml +152 -0
  89. data/spec/vcr_cassettes/Mailroute_Customer/_delete_admin/when_trying_to_delete_admin_which_do_not_exist/should_not_fail.yml +79 -0
  90. data/spec/vcr_cassettes/Mailroute_Customer/_domains/should_return_a_list_of_its_domains.yml +79 -0
  91. data/spec/vcr_cassettes/Mailroute_Customer/_filter/by_name/should_return_cusomers_with_a_given_name.yml +41 -0
  92. data/spec/vcr_cassettes/Mailroute_Customer/_filter/by_name__startswith/should_return_cusomers_with_names_starting_with_given_prefix.yml +41 -0
  93. data/spec/vcr_cassettes/Mailroute_Customer/_filter/by_reseller/should_return_all_customers_of_the_given_reseller.yml +41 -0
  94. data/spec/vcr_cassettes/Mailroute_Customer/_get/id/.yml +41 -0
  95. data/spec/vcr_cassettes/Mailroute_Customer/_get/name/.yml +41 -0
  96. data/spec/vcr_cassettes/Mailroute_Customer/_reseller/should_return_the_customer_s_reseller.yml +79 -0
  97. data/spec/vcr_cassettes/Mailroute_Customer/basic_operations/should_perform_basic_read_operations.yml +41 -0
  98. data/spec/vcr_cassettes/Mailroute_Customer/total_count/should_return_number_of_customer_which_matches_search_criteria.yml +41 -0
  99. data/spec/vcr_cassettes/Mailroute_Customer/total_count/should_return_number_of_customer_which_matches_search_criteria3.yml +41 -0
  100. data/spec/vcr_cassettes/Mailroute_Customer/total_count/should_return_total_count_of_customers.yml +41 -0
  101. data/spec/vcr_cassettes/Mailroute_CustomerContact/CRUD/should_create_read_update_and_delete_customer_contacts.yml +340 -0
  102. data/spec/vcr_cassettes/Mailroute_Domain/_create/should_have_an_id.yml +80 -0
  103. data/spec/vcr_cassettes/Mailroute_Domain/_create/should_save_all_attributes.yml +80 -0
  104. data/spec/vcr_cassettes/Mailroute_Domain/_domain_aliases/should_return_a_list_of_its_domain_aliases.yml +155 -0
  105. data/spec/vcr_cassettes/Mailroute_Domain/black_white_list/should_blacklist_and_whitelist_emails.yml +386 -0
  106. data/spec/vcr_cassettes/Mailroute_Domain/has_a_notification_task/should_have_notification_task.yml +249 -0
  107. data/spec/vcr_cassettes/Mailroute_Domain/has_a_policy/should_have_policy.yml +79 -0
  108. data/spec/vcr_cassettes/Mailroute_Domain/has_many_aliases/should_list_create_and_delete_domain_aliases.yml +195 -0
  109. data/spec/vcr_cassettes/Mailroute_Domain/has_many_contacts/should_list_create_and_delete_contacts.yml +379 -0
  110. data/spec/vcr_cassettes/Mailroute_Domain/has_many_email_accounts/should_be_possible_to_bulk_create_email_accounts.yml +192 -0
  111. data/spec/vcr_cassettes/Mailroute_Domain/has_many_email_accounts/should_list_and_create_email_accounts.yml +411 -0
  112. data/spec/vcr_cassettes/Mailroute_Domain/has_many_mail_servers/should_list_create_and_delete_mail_servers.yml +306 -0
  113. data/spec/vcr_cassettes/Mailroute_Domain/has_many_outbound_servers/should_list_create_and_delete_outbound_servers.yml +306 -0
  114. data/spec/vcr_cassettes/Mailroute_Domain/move_to_customer/should_move_domain_to_another_customer.yml +230 -0
  115. data/spec/vcr_cassettes/Mailroute_DomainAlias/should_be_possible_to_create_read_update_and_delete_domain_aliases.yml +532 -0
  116. data/spec/vcr_cassettes/Mailroute_DomainContact/CRUD/should_create_read_update_and_delete_domain_contacts.yml +340 -0
  117. data/spec/vcr_cassettes/Mailroute_EmailAccount/_get/by_id/should_return_an_account.yml +41 -0
  118. data/spec/vcr_cassettes/Mailroute_EmailAccount/_get/by_localpart_and_domain/should_return_an_account.yml +79 -0
  119. data/spec/vcr_cassettes/Mailroute_EmailAccount/_get/by_localpart_and_domain_id/should_return_an_account.yml +41 -0
  120. data/spec/vcr_cassettes/Mailroute_EmailAccount/_get/by_localpart_and_domain_name/should_return_an_account.yml +171 -0
  121. data/spec/vcr_cassettes/Mailroute_EmailAccount/_set_password/should_set_the_password.yml +78 -0
  122. data/spec/vcr_cassettes/Mailroute_EmailAccount/black_white_list/should_blacklist_and_whitelist_emails.yml +194 -0
  123. data/spec/vcr_cassettes/Mailroute_EmailAccount/has_contact/should_have_contact.yml +79 -0
  124. data/spec/vcr_cassettes/Mailroute_EmailAccount/has_domain/should_have_domain.yml +79 -0
  125. data/spec/vcr_cassettes/Mailroute_EmailAccount/has_notification_task/should_have_notification_task.yml +79 -0
  126. data/spec/vcr_cassettes/Mailroute_EmailAccount/has_policy/should_have_policy.yml +79 -0
  127. data/spec/vcr_cassettes/Mailroute_EmailAccount/should_be_possible_to_create_read_update_and_delete_email_accounts.yml +532 -0
  128. data/spec/vcr_cassettes/Mailroute_EmailAccountContact/CRUD/should_create_read_update_and_delete_email_account_contacts.yml +302 -0
  129. data/spec/vcr_cassettes/Mailroute_MailServer/should_be_possible_to_create_read_update_and_delete_mail_servers.yml +532 -0
  130. data/spec/vcr_cassettes/Mailroute_NotificationAccountTask/RU/should_read_and_update_tasks.yml +116 -0
  131. data/spec/vcr_cassettes/Mailroute_NotificationAccountTask/priorities/should_change_the_priority_of_a_task.yml +344 -0
  132. data/spec/vcr_cassettes/Mailroute_NotificationDomainTask/RU/should_read_and_update_tasks.yml +116 -0
  133. data/spec/vcr_cassettes/Mailroute_OutboundServer/CRUD/should_create_read_update_and_delete_outbound_servers.yml +229 -0
  134. data/spec/vcr_cassettes/Mailroute_Reseller/_admins/should_return_a_list_of_its_admins.yml +77 -0
  135. data/spec/vcr_cassettes/Mailroute_Reseller/_all/should_accept_limit_keyword.yml +39 -0
  136. data/spec/vcr_cassettes/Mailroute_Reseller/_all/should_accept_offset_keyword.yml +75 -0
  137. data/spec/vcr_cassettes/Mailroute_Reseller/_all/should_return_a_list_of_resellers.yml +39 -0
  138. data/spec/vcr_cassettes/Mailroute_Reseller/_bulk_create/should_create_several_resellers.yml +158 -0
  139. data/spec/vcr_cassettes/Mailroute_Reseller/_contacts/should_return_a_list_of_its_contacts.yml +41 -0
  140. data/spec/vcr_cassettes/Mailroute_Reseller/_create/should_create_a_new_reseller.yml +80 -0
  141. data/spec/vcr_cassettes/Mailroute_Reseller/_create_admin/.yml +6718 -0
  142. data/spec/vcr_cassettes/Mailroute_Reseller/_create_admin/should_be_in_the_list_of_the_reseller_s_admins.yml +118 -0
  143. data/spec/vcr_cassettes/Mailroute_Reseller/_create_admin/should_have_an_id.yml +80 -0
  144. data/spec/vcr_cassettes/Mailroute_Reseller/_create_admin/should_have_send_welcome_field_.yml +80 -0
  145. data/spec/vcr_cassettes/Mailroute_Reseller/_create_contact/.yml +80 -0
  146. data/spec/vcr_cassettes/Mailroute_Reseller/_create_contact/address/.yml +80 -0
  147. data/spec/vcr_cassettes/Mailroute_Reseller/_create_contact/city/.yml +80 -0
  148. data/spec/vcr_cassettes/Mailroute_Reseller/_create_contact/email/.yml +80 -0
  149. data/spec/vcr_cassettes/Mailroute_Reseller/_create_contact/should_have_a_link_to_the_reseller.yml +118 -0
  150. data/spec/vcr_cassettes/Mailroute_Reseller/_create_contact/should_save_a_new_contact.yml +118 -0
  151. data/spec/vcr_cassettes/Mailroute_Reseller/_create_contact/should_save_the_attributes.yml +118 -0
  152. data/spec/vcr_cassettes/Mailroute_Reseller/_create_customer/.yml +118 -0
  153. data/spec/vcr_cassettes/Mailroute_Reseller/_create_customer/allow_branding/.yml +118 -0
  154. data/spec/vcr_cassettes/Mailroute_Reseller/_create_customer/name/.yml +118 -0
  155. data/spec/vcr_cassettes/Mailroute_Reseller/_create_customer/should_have_a_link_to_the_reseller.yml +156 -0
  156. data/spec/vcr_cassettes/Mailroute_Reseller/_create_customer/should_save_a_new_contact.yml +118 -0
  157. data/spec/vcr_cassettes/Mailroute_Reseller/_create_customer/should_save_the_attributes.yml +118 -0
  158. data/spec/vcr_cassettes/Mailroute_Reseller/_customers/should_return_a_list_of_its_customers.yml +41 -0
  159. data/spec/vcr_cassettes/Mailroute_Reseller/_delete/should_bulk_delete_a_list_of_resellers.yml +368 -0
  160. data/spec/vcr_cassettes/Mailroute_Reseller/_delete/should_delete_the_reseller.yml +112 -0
  161. data/spec/vcr_cassettes/Mailroute_Reseller/_delete_admin/when_deleting_an_existing_admin/should_not_be_in_the_list_of_the_reseller_s_admins.yml +225 -0
  162. data/spec/vcr_cassettes/Mailroute_Reseller/_delete_admin/when_deleting_an_existing_admin/should_not_delete_all_admins.yml +152 -0
  163. data/spec/vcr_cassettes/Mailroute_Reseller/_delete_admin/when_trying_to_delete_admin_which_do_not_exist/should_not_fail.yml +79 -0
  164. data/spec/vcr_cassettes/Mailroute_Reseller/_filter/should_return_a_list_of_resellers_which_match_the_filter_query.yml +39 -0
  165. data/spec/vcr_cassettes/Mailroute_Reseller/_find/should_raise_error_if_reseller_not_found.yml +37 -0
  166. data/spec/vcr_cassettes/Mailroute_Reseller/_find/should_return_the_reseller.yml +37 -0
  167. data/spec/vcr_cassettes/Mailroute_Reseller/_find/should_return_the_reseller_if_it_exists.yml +39 -0
  168. data/spec/vcr_cassettes/Mailroute_Reseller/_find/should_return_the_reseller_if_it_present.yml +37 -0
  169. data/spec/vcr_cassettes/Mailroute_Reseller/_find/should_return_the_reseller_if_it_preset.yml +73 -0
  170. data/spec/vcr_cassettes/Mailroute_Reseller/_find/should_set_the_name.yml +37 -0
  171. data/spec/vcr_cassettes/Mailroute_Reseller/_limit/should_limit_the_number_of_resellers_returned.yml +79 -0
  172. data/spec/vcr_cassettes/Mailroute_Reseller/_list/should_accept_limit_keyword.yml +39 -0
  173. data/spec/vcr_cassettes/Mailroute_Reseller/_list/should_return_a_list_of_resellers.yml +39 -0
  174. data/spec/vcr_cassettes/Mailroute_Reseller/_offset/should_return_different_pages.yml +75 -0
  175. data/spec/vcr_cassettes/Mailroute_Reseller/_order_by/ascending_order/should_return_ordered_result.yml +41 -0
  176. data/spec/vcr_cassettes/Mailroute_Reseller/_order_by/descending_order/should_return_ordered_result.yml +41 -0
  177. data/spec/vcr_cassettes/Mailroute_Reseller/_save/should_save_the_changes.yml +116 -0
  178. data/spec/vcr_cassettes/Mailroute_Reseller/_search/should_return_a_list_of_resellers_which_match_the_search_query.yml +41 -0
  179. data/spec/vcr_cassettes/Mailroute_Reseller/it_should_retrieve_branding_info/branding_info/.yml +75 -0
  180. data/spec/vcr_cassettes/Mailroute_Reseller/it_should_retrieve_branding_info_/branding_info/.yml +39 -0
  181. data/spec/vcr_cassettes/Mailroute_Reseller/it_should_retrieve_branding_info_ix_/branding_info/.yml +2605 -0
  182. data/spec/vcr_cassettes/Mailroute_Reseller/it_should_retrieve_branding_info_x_/branding_info/.yml +37 -0
  183. data/spec/vcr_cassettes/Mailroute_Reseller/it_should_retrieve_branding_info_xix_/branding_info/.yml +75 -0
  184. data/spec/vcr_cassettes/Mailroute_ResellerContact/CRUD/should_create_read_update_and_delete_reseller_contacts.yml +340 -0
  185. data/spec/vcr_cassettes/Mailroute_WBList/WBList/with_domain/should_create_read_and_update_and_delete_wblists.yml +415 -0
  186. data/spec/vcr_cassettes/Mailroute_WBList/WBList/with_email_account/should_create_read_and_update_and_delete_wblists.yml +267 -0
  187. data/spec/vcr_cassettes/Valid_Reseller.yml +37 -0
  188. data/spec/vcr_cassettes/Valid_Reseller_.yml +39 -0
  189. data/spec/vcr_cassettes/Valid_Reseller_with_Branding_Info.yml +75 -0
  190. metadata +553 -0
@@ -0,0 +1,24 @@
1
+ module Mailroute
2
+ class NotificationAccountTask < Base
3
+ self.collection_name = 'notification_account_task'
4
+ has_one :email_account
5
+
6
+ def is_active
7
+ self.priority > domain_task.priority
8
+ end
9
+
10
+ def use_self_notification
11
+ ap self.priority
12
+ self.priority = domain_task.priority + 1
13
+ ap self.priority
14
+ self.save!
15
+ ap self.priority
16
+ end
17
+
18
+ private
19
+
20
+ def domain_task
21
+ email_account.domain.notification_task
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,6 @@
1
+ module Mailroute
2
+ class NotificationDomainTask < Base
3
+ self.collection_name = 'notification_domain_task'
4
+ has_one :domain
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ module Mailroute
2
+ class OutboundServer < Base
3
+ self.collection_name = 'outbound_server'
4
+ has_one :domain
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ module Mailroute
2
+ class PolicyDomain < Base
3
+ self.collection_name = 'policy_domain'
4
+ has_one :domain
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ module Mailroute
2
+ class PolicyUser < Base
3
+ self.collection_name = 'policy_user'
4
+ has_one :email_account
5
+ end
6
+ end
@@ -0,0 +1,10 @@
1
+ module Mailroute
2
+ class Reseller < Base
3
+ self.collection_name = 'reseller'
4
+
5
+ has_one :branding_info
6
+ has_many :customers
7
+ has_many :contacts, :class => Mailroute::ResellerContact
8
+ has_admins :class => Mailroute::Admin
9
+ end
10
+ end
@@ -0,0 +1,6 @@
1
+ module Mailroute
2
+ class ResellerContact < Base
3
+ self.collection_name = 'contact_reseller'
4
+ has_one :reseller
5
+ end
6
+ end
@@ -0,0 +1,7 @@
1
+ module Mailroute
2
+ class WBList < Base
3
+ self.collection_name = 'wblist'
4
+ has_one :domain
5
+ has_one :email_account
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ module Mailroute
2
+ VERSION = "0.0.1"
3
+ end
data/mailroute.gemspec ADDED
@@ -0,0 +1,33 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'mailroute/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "mailroute"
8
+ spec.version = Mailroute::VERSION
9
+ spec.authors = ["Viktar Basharymau"]
10
+ spec.email = ["Viktar.Basharymau@gmail.com"]
11
+ spec.description = %q{MailRoute API}
12
+ spec.summary = %q{An API for http://mailroute.net}
13
+ spec.homepage = "http://github.com/DNNX/mailroute"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency 'rest-client'
22
+ spec.add_dependency 'json_pure'
23
+ spec.add_dependency 'activeresource'
24
+
25
+ spec.add_development_dependency "bundler"
26
+ spec.add_development_dependency "rake"
27
+ spec.add_development_dependency "guard-rspec"
28
+ spec.add_development_dependency "rb-inotify"
29
+ spec.add_development_dependency "rb-fsevent"
30
+ spec.add_development_dependency "vcr"
31
+ spec.add_development_dependency "webmock"
32
+ spec.add_development_dependency "awesome_print"
33
+ end
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+
3
+ def valid_credentials
4
+ {
5
+ :username => 'blablablablabla@example.com',
6
+ :apikey => '5f64xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8262'
7
+ }
8
+ end
9
+
10
+ def invalid_credentials
11
+ {
12
+ :username => 'alien',
13
+ :apikey => 'blabla'
14
+ }
15
+ end
16
+
17
+ describe Mailroute do
18
+ describe '#check_connection' do
19
+ context 'when configured with correct credentials', :vcr => true do
20
+
21
+ before do
22
+ Mailroute.configure(valid_credentials)
23
+ end
24
+
25
+ it 'should return true' do
26
+ Mailroute.check_connection.should be_true
27
+ end
28
+ end
29
+
30
+ context 'when configured with incorrect credentials', :vcr => true do
31
+
32
+ before do
33
+ Mailroute.configure(invalid_credentials)
34
+ end
35
+
36
+ it 'should raise Unauthorized error' do
37
+ expect {
38
+ Mailroute.check_connection
39
+ }.to raise_error RestClient::Request::Unauthorized
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mailroute, :focus => true do
4
+ describe '#configure' do
5
+ before do
6
+ Mailroute.configure(:url => 'http://example.com', :username => 'a', :apikey => 'b')
7
+ end
8
+
9
+ it 'should set Mailroute::Base.site' do
10
+ Mailroute::Base.site.to_s.should == 'http://example.com'
11
+ end
12
+
13
+ it 'should set Mailroute::Base Authorization header' do
14
+ Mailroute::Base.headers['Authorization'].should == "ApiKey a:b"
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mailroute::Admin, :vcr => true do
4
+ before { configure_mailroute }
5
+
6
+ context 'basic operations' do
7
+ it 'should perform basic read operations' do
8
+ pending 'GET https://admin-dev.mailroute.net/api/v1/admins/ responds with 400 Bad Request'
9
+ admins = Mailroute::Admin.limit(3).offset(20)
10
+ admins.count.should == 3
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mailroute::Base do
4
+ it 'should reload site if configuration is changed' do
5
+ Mailroute.configure(:url => 'http://example.com')
6
+ my_model = Class.new(Mailroute::Base)
7
+ my_model.site.to_s.should == 'http://example.com'
8
+
9
+ Mailroute.configure(:url => 'http://no.example.com')
10
+ my_model.site.to_s.should == 'http://no.example.com'
11
+ end
12
+
13
+ it 'should reload authorization header if configuration is changed' do
14
+ Mailroute.configure(:username => 'a', :apikey => 'b')
15
+ my_model = Class.new(Mailroute::Base)
16
+ my_model.headers['Authorization'].should == 'ApiKey a:b'
17
+
18
+ Mailroute.configure(:username => 'c', :apikey => 'd')
19
+ my_model.headers['Authorization'].should == 'ApiKey c:d'
20
+ end
21
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mailroute::CustomerContact, :vcr => true do
4
+ before { configure_mailroute }
5
+
6
+ let(:customer) { Mailroute::Customer.get(1300) }
7
+
8
+ describe 'CRUD' do
9
+ it 'should create, read, update and delete customer contacts' do
10
+ contact = Mailroute::CustomerContact.create(:email => 'haskell@example.com', :customer => customer)
11
+
12
+ contact.id.should be
13
+
14
+ contact2 = Mailroute::CustomerContact.get(contact.id)
15
+
16
+ contact2.should == contact
17
+
18
+ contact2.city = 'Minsk'
19
+ contact2.save!
20
+
21
+ contact2.customer.should == customer
22
+
23
+ contact.reload.city.should == 'Minsk'
24
+
25
+ contact.delete
26
+
27
+ expect { contact2.reload }.to raise_error ActiveResource::ResourceNotFound
28
+
29
+ customer.contacts.should_not include contact
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,244 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mailroute::Customer, :vcr => true do
4
+ before { configure_mailroute }
5
+
6
+ context 'basic operations' do
7
+ it 'should perform basic read operations' do
8
+ customers = Mailroute::Customer.limit(3).offset(20).search(:name => 'e')
9
+
10
+ customers.count.should == 3
11
+ customers.all?{|c| c.name =~ /e/i}.should be_true
12
+ end
13
+ end
14
+
15
+ context '#create with reseller' do
16
+ subject(:customer) { Mailroute::Customer.create(:name => 'New Customer', :reseller => reseller) }
17
+ let(:some_reseller) { Mailroute::Reseller.get(4) }
18
+
19
+ context 'when reseller is a reseller object' do
20
+ let(:reseller) { some_reseller }
21
+
22
+ it 'should have id' do
23
+ customer.id.should_not be_nil
24
+ end
25
+
26
+ it 'should be created with reseller' do
27
+ customer.reseller.should == some_reseller
28
+ end
29
+ end
30
+
31
+ context 'when reseller is referenced via id' do
32
+ let(:reseller) { some_reseller.id }
33
+
34
+ it 'should have id' do
35
+ customer.id.should_not be_nil
36
+ end
37
+
38
+ it 'should be created with reseller' do
39
+ customer.reseller.should == some_reseller
40
+ end
41
+ end
42
+
43
+ context 'when reseller is referenced via name' do
44
+ let(:reseller) { some_reseller.name }
45
+
46
+ it 'should have id' do
47
+ customer.id.should_not be_nil
48
+ end
49
+
50
+ it 'should be created with reseller' do
51
+ customer.reseller.should == some_reseller
52
+ end
53
+ end
54
+ end
55
+
56
+ context '#get' do
57
+ subject(:customer) { Mailroute::Customer.get(1300) }
58
+
59
+ its(:id) { should == 1300 }
60
+ its(:name) { should == '111testCustomer111cc' }
61
+ end
62
+
63
+ context '#filter' do
64
+ context 'by name' do
65
+ it 'should return cusomers with a given name' do
66
+ customers = Mailroute::Customer.filter(:name => '111testCustomer111cc')
67
+ customers.should all_be Mailroute::Customer
68
+ customers.should have(1).item
69
+ customers.first.id.should == 1300
70
+ end
71
+ end
72
+
73
+ context 'by name__startswith' do
74
+ it 'should return cusomers with names starting with given prefix' do
75
+ customers = Mailroute::Customer.filter(:name__startswith => 'A')
76
+ customers.should_not be_empty
77
+ customers.should all_be Mailroute::Customer
78
+ customers.all? { |c| c.name =~ /^A/i }.should be_true
79
+ end
80
+ end
81
+
82
+ context 'by reseller' do
83
+ it 'should return all customers of the given reseller' do
84
+ customers = Mailroute::Customer.filter(:reseller => 4)
85
+ customers.should_not be_empty
86
+ customers.should have_at_least(5).items
87
+ customers.should all_be Mailroute::Customer
88
+ customers.all? { |c| c.attributes[:reseller] =~ /\/4\// }.should be_true
89
+ end
90
+ end
91
+ end
92
+
93
+ describe '#reseller' do
94
+ it "should return the customer's reseller" do
95
+ customer = Mailroute::Customer.get(2341)
96
+ reseller = customer.reseller
97
+ reseller.should be_a Mailroute::Reseller
98
+ reseller.id.should == 4
99
+ end
100
+ end
101
+
102
+ describe '#domains' do
103
+ it 'should return a list of its domains' do
104
+ customer = Mailroute::Customer.get(1985)
105
+
106
+ customer.domains.should have_at_least(1).item
107
+ customer.domains.should all_be Mailroute::Domain
108
+ customer.domains.map(&:id).should include 4157
109
+ end
110
+ end
111
+
112
+ describe '#contacts' do
113
+ it 'should return a list of its contacts' do
114
+ customer = Mailroute::Customer.new(:id => 4)
115
+
116
+ customer.contacts.should have_at_least(1).item
117
+ customer.contacts.should all_be Mailroute::CustomerContact
118
+ end
119
+ end
120
+
121
+ describe '#admins' do
122
+ it 'should return a list of its admins' do
123
+ customer = Mailroute::Customer.new(:id => 4)
124
+
125
+ customer.admins.should have_at_least(1).item
126
+ customer.admins.should all_be Mailroute::Admin
127
+ end
128
+ end
129
+
130
+ describe '#branding_info' do
131
+ it 'should return its branding info' do
132
+ customer = Mailroute::Customer.get(1300)
133
+
134
+ customer.branding_info.should be_a Mailroute::BrandingInfo
135
+ end
136
+ end
137
+
138
+ describe '#create_domain' do
139
+ let(:customer) { Mailroute::Customer.get(1300) }
140
+ subject(:domain) {
141
+ customer.create_domain(
142
+ :deliveryport => 250,
143
+ :hold_email => true,
144
+ :name => 'test.example.com',
145
+ :outbound_enabled => false,
146
+ :userlist_complete => false
147
+ )
148
+ }
149
+
150
+ it { should be_a Mailroute::Domain }
151
+
152
+ it 'should save a new domain' do
153
+ Mailroute::Domain.get(domain.id).should be
154
+ end
155
+
156
+ it 'should have a link to the customer' do
157
+ domain.customer.should == customer
158
+ end
159
+
160
+ it 'should save the attributes' do
161
+ Mailroute::Domain.get(domain.id).deliveryport.should == 250
162
+ end
163
+ end
164
+
165
+ describe '#create_contact' do
166
+ let(:customer) { Mailroute::Customer.get(1300) }
167
+ subject(:contact) {
168
+ customer.create_contact(
169
+ :address => 'Barcelona',
170
+ :email => 'contact@example.com'
171
+ )
172
+ }
173
+
174
+ it { should be_a Mailroute::CustomerContact }
175
+
176
+ it 'should save a new contact' do
177
+ Mailroute::CustomerContact.get(contact.id).should be
178
+ end
179
+
180
+ it 'should have a link to the customer' do
181
+ contact.customer.should == customer
182
+ end
183
+
184
+ it 'should save the attributes' do
185
+ Mailroute::CustomerContact.get(contact.id).address.should == "Barcelona"
186
+ end
187
+ end
188
+
189
+ describe '#create_admin' do
190
+ let(:customer) { Mailroute::Customer.get(1300) }
191
+
192
+ subject(:admin) { customer.create_admin('admin@example.com', true) }
193
+
194
+ it { should be_a Mailroute::Admin }
195
+
196
+ it 'should have an id' do
197
+ admin.id.should be
198
+ end
199
+
200
+ it "should be in the list of the customer's admins" do
201
+ customer.admins.should include admin
202
+ end
203
+ end
204
+
205
+ describe '#delete_admin' do
206
+ let(:customer) { Mailroute::Customer.get(1300) }
207
+
208
+ context 'when deleting an existing admin' do
209
+ before do
210
+ customer.delete_admin('admin@example.com')
211
+ end
212
+
213
+ it "should not be in the list of the customer's admins" do
214
+ customer.admins.map(&:email).should_not include 'admin@example.com'
215
+ end
216
+
217
+ it "should not delete all admins" do
218
+ customer.admins.should_not be_empty
219
+ end
220
+ end
221
+
222
+ context 'when trying to delete admin which do not exist' do
223
+ it 'should not fail' do
224
+ expect {
225
+ customer.delete_admin('i-am-not-an-admin@example.com')
226
+ }.not_to raise_error
227
+ end
228
+ end
229
+ end
230
+
231
+ describe 'total_count' do
232
+ it 'should return total count of customers' do
233
+ Mailroute::Customer.total_count.should == 2059
234
+ end
235
+
236
+ it 'should return number of customer which matches search criteria' do
237
+ Mailroute::Customer.search('e').total_count.should == 1592
238
+ end
239
+
240
+ it 'should return number of customer which matches search criteria3' do
241
+ Mailroute::Customer.search('xdfasdfsdfg').total_count.should == 0
242
+ end
243
+ end
244
+ end