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,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mailroute::NotificationAccountTask, :vcr => true do
4
+ before { configure_mailroute }
5
+
6
+ describe 'RU' do
7
+ it 'should read and update tasks' do
8
+ tasks = Mailroute::NotificationAccountTask.list.filter(:email_account => 22)
9
+ tasks.should_not be_empty
10
+
11
+ task = tasks.first
12
+
13
+ task.minute.should == 32
14
+ task.minute = 31
15
+ task.save!
16
+ task.reload.minute.should == 31
17
+ end
18
+ end
19
+
20
+ describe 'priorities' do
21
+ it 'should change the priority of a task' do
22
+ pending "for some reason PUT request doesn't change the priority of a task"
23
+ account_task = Mailroute::NotificationAccountTask.get(29)
24
+
25
+ account_task.is_active.should == false
26
+
27
+ account_task.use_self_notification
28
+
29
+ account_task.reload.is_active.should == true
30
+
31
+ account_task.use_domain_notification
32
+
33
+ account.task.reload.is_active.should == false
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mailroute::NotificationDomainTask, :vcr => true do
4
+ before { configure_mailroute }
5
+
6
+ describe 'RU' do
7
+ it 'should read and update tasks' do
8
+ tasks = Mailroute::NotificationDomainTask.list.filter(:domain => 4157)
9
+ tasks.should_not be_empty
10
+
11
+ task = tasks.first
12
+
13
+ task.hour.should == 9
14
+ task.hour = 8
15
+ task.save!
16
+ task.reload.hour.should == 8
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mailroute::OutboundServer, :vcr => true do
4
+ before { configure_mailroute }
5
+
6
+ describe 'CRUD' do
7
+ it 'should create, read, update and delete outbound servers' do
8
+ domain = Mailroute::Domain.get(4555)
9
+ server = Mailroute::OutboundServer.create(:server => '127.0.0.2', :domain => domain)
10
+
11
+ server.id.should be
12
+
13
+ server.domain.should == domain
14
+ server.server.should == '127.0.0.2'
15
+
16
+ Mailroute::OutboundServer.list.filter(:domain => 4555).should include server
17
+
18
+ Mailroute::OutboundServer.delete(server.id)
19
+
20
+ Mailroute::OutboundServer.list.filter(:domain => 4555).should_not include server
21
+ Mailroute::OutboundServer.list.should_not include server
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mailroute::ResellerContact, :vcr => true do
4
+ before { configure_mailroute }
5
+
6
+ let(:reseller) { Mailroute::Reseller.get(4) }
7
+
8
+ describe 'CRUD' do
9
+ it 'should create, read, update and delete reseller contacts' do
10
+ contact = Mailroute::ResellerContact.create(:email => 'haskell@example.com', :reseller => reseller)
11
+
12
+ contact.id.should be
13
+
14
+ contact2 = Mailroute::ResellerContact.get(contact.id)
15
+
16
+ contact2.should == contact
17
+
18
+ contact2.city = 'Minsk'
19
+ contact2.save!
20
+
21
+ contact2.reseller.should == reseller
22
+
23
+ contact.reload.city.should == 'Minsk'
24
+
25
+ contact.delete
26
+
27
+ expect { contact2.reload }.to raise_error ActiveResource::ResourceNotFound
28
+
29
+ reseller.contacts.should_not include contact
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,297 @@
1
+ require 'spec_helper'
2
+ require 'awesome_print'
3
+
4
+ describe Mailroute::Reseller, :vcr => true do
5
+ before { configure_mailroute }
6
+
7
+ describe '#list' do
8
+ it 'should return a list of resellers' do
9
+ resellers = Mailroute::Reseller.list
10
+ resellers.should have(20).items
11
+ resellers.should all_be Mailroute::Reseller
12
+ end
13
+ end
14
+
15
+ describe '#limit' do
16
+ it 'should limit the number of resellers returned' do #, :vcr => { :record => :all } do
17
+ Mailroute::Reseller.list.limit(30).should have(30).items
18
+ end
19
+ end
20
+
21
+ describe '#offset' do
22
+ it 'should return different pages' do
23
+ resellers__1_to_10 = Mailroute::Reseller.list.limit(10).offset(0)
24
+ resellers_11_to_20 = Mailroute::Reseller.list.offset(10).limit(10)
25
+
26
+ (resellers__1_to_10 & resellers_11_to_20).should be_empty
27
+ end
28
+ end
29
+
30
+ describe '#filter' do
31
+ it 'should return a list of resellers which match the filter query' do
32
+ resellers = Mailroute::Reseller.filter(:name__startswith => 'd')
33
+ resellers.should_not be_empty
34
+ resellers.all?{|r| r.name =~ /^d/ }.should be_true
35
+ end
36
+ end
37
+
38
+ describe '#search' do
39
+ it 'should return a list of resellers which match the search query' do
40
+ resellers = Mailroute::Reseller.search('Data')
41
+ resellers.should_not be_empty
42
+ resellers.all?{|r| r.name =~ /Data/i }.should be_true
43
+ end
44
+ end
45
+
46
+ describe '#order_by' do
47
+ context 'ascending order' do
48
+ it 'should return ordered result' do
49
+ resellers = Mailroute::Reseller.order_by('name')
50
+ resellers.should_not be_empty
51
+ resellers.each_cons(2).all? {|x, y| x.name.upcase <= y.name.upcase }.should be_true
52
+ end
53
+ end
54
+
55
+ context 'descending order' do
56
+ it 'should return ordered result' do
57
+ resellers = Mailroute::Reseller.order_by('-name')
58
+ resellers.should_not be_empty
59
+ resellers.each_cons(2).all? {|x, y| y.name.upcase <= x.name.upcase }.should be_true
60
+ end
61
+ end
62
+ end
63
+
64
+ describe '#find' do
65
+ it 'should raise error if reseller not found' do
66
+ expect {
67
+ Mailroute::Reseller.get(100500)
68
+ }.to raise_error ActiveResource::ResourceNotFound
69
+ end
70
+
71
+ it 'should return the reseller if it exists', :vcr => { :cassette_name => 'Valid Reseller ' } do
72
+ Mailroute::Reseller.get(175).should be_a Mailroute::Reseller
73
+ end
74
+
75
+ context 'it should get all available attributes', :vcr => { :cassette_name => 'Valid Reseller ' } do
76
+ subject(:reseller) { Mailroute::Reseller.get(175) }
77
+
78
+ its(:absolute_url) { should == '/reseller/175/' }
79
+ its(:allow_branding) { should == false }
80
+ its(:allow_customer_branding) { should == false }
81
+ its(:id) { should == 175 }
82
+ its(:name) { should == 'b7001333b77359eff8cdf90726eee4fd' }
83
+ its(:resource_uri) { should == '/api/v1/reseller/175/' }
84
+ its(:updated_at) { should == 'Sun, 24 Feb 2013 06:03:48 -0800' }
85
+ its(:created_at) { should == 'Sun, 24 Feb 2013 06:03:48 -0800' }
86
+ end
87
+ end
88
+
89
+ context 'it should retrieve branding info', :vcr => { :cassette_name => 'Valid Reseller with Branding Info'} do
90
+ subject(:reseller) { Mailroute::Reseller.get(205) }
91
+
92
+ its(:branding_info) { should be_a Mailroute::BrandingInfo }
93
+
94
+ it 'should have branding info which refers to the subject' do
95
+ reseller.branding_info.reseller.should == reseller
96
+ end
97
+ end
98
+
99
+ describe '#create' do
100
+ it 'should create a new reseller' do #, :vcr => { :record => :all } do
101
+ new_reseller = Mailroute::Reseller.create(:name => 'Test Reseller 3')
102
+ new_reseller.id.should_not be_nil
103
+
104
+ Mailroute::Reseller.get(new_reseller.id).name.should == 'Test Reseller 3'
105
+ end
106
+ end
107
+
108
+ describe '#to_json' do
109
+ it 'should not include root to json' do
110
+ Mailroute::Reseller.new(:name => 'a new reseller').to_json.should == {:name => 'a new reseller'}.to_json
111
+ end
112
+ end
113
+
114
+ describe '.bulk_create' do
115
+ it 'should create several resellers' do
116
+ resellers = Mailroute::Reseller.bulk_create(
117
+ { :name => 'TERMINATOR 1' },
118
+ { :name => 'TERMINATOR 2' },
119
+ { :name => 'TERMINATOR 3' }
120
+ )
121
+
122
+ resellers.count.should == 3
123
+ resellers.all?(&:id).should be_true
124
+
125
+ Mailroute::Reseller.filter(:name__startswith => 'TERMINATOR ').should have(3).items
126
+ end
127
+ end
128
+
129
+ describe '#save' do
130
+ it 'should save the changes' do
131
+ reseller = Mailroute::Reseller.get(1382)
132
+
133
+ reseller.allow_branding.should be_false
134
+ reseller.allow_branding = true
135
+
136
+ reseller.save
137
+
138
+ Mailroute::Reseller.get(1382).allow_branding.should be_true
139
+ end
140
+ end
141
+
142
+ describe '#delete' do
143
+ it 'should delete the reseller' do
144
+ reseller = Mailroute::Reseller.get(1382)
145
+ reseller.delete
146
+
147
+ expect {
148
+ Mailroute::Reseller.get(1382)
149
+ }.to raise_error ActiveResource::ResourceNotFound
150
+ end
151
+ end
152
+
153
+ describe '.delete' do
154
+ it 'should bulk delete a list of resellers' do
155
+ [1443, 1276, 1277].each do |id|
156
+ Mailroute::Reseller.get(id).should be
157
+ end
158
+
159
+ Mailroute::Reseller.delete(
160
+ '1443',
161
+ 1276,
162
+ Mailroute::Reseller.get(1277)
163
+ )
164
+
165
+ [1443, 1276, 1277].each do |id|
166
+ expect {
167
+ Mailroute::Reseller.get(id)
168
+ }.to raise_error ActiveResource::ResourceNotFound
169
+ end
170
+ end
171
+ end
172
+
173
+ describe '#customers' do
174
+ it 'should return a list of its customers' do
175
+ reseller = Mailroute::Reseller.new(:id => 4)
176
+
177
+ reseller.customers.should have_at_least(10).items
178
+ reseller.customers.should all_be Mailroute::Customer
179
+ end
180
+ end
181
+
182
+ describe '#contacts' do
183
+ it 'should return a list of its contacts' do
184
+ reseller = Mailroute::Reseller.new(:id => 4)
185
+
186
+ reseller.contacts.should have_at_least(1).item
187
+ reseller.contacts.should all_be Mailroute::ResellerContact
188
+ end
189
+ end
190
+
191
+ describe '#admins' do
192
+ it 'should return a list of its admins' do
193
+ reseller = Mailroute::Reseller.new(:id => 2640)
194
+
195
+ reseller.admins.should have_at_least(1).item
196
+ reseller.admins.should all_be Mailroute::Admin
197
+ end
198
+ end
199
+
200
+ describe '#create_contact' do
201
+ let(:reseller) { Mailroute::Reseller.get(4) }
202
+ subject(:contact) {
203
+ reseller.create_contact(
204
+ :address => '6110 Dale Street NW',
205
+ :city => 'Ney York',
206
+ :email => 'john_doe@example.com'
207
+ )
208
+ }
209
+
210
+ it { should be_a Mailroute::ResellerContact }
211
+
212
+ it 'should save a new contact' do
213
+ Mailroute::ResellerContact.get(contact.id).should be
214
+ end
215
+
216
+ it 'should have a link to the reseller' do
217
+ contact.reseller.should == reseller
218
+ end
219
+
220
+ its(:address) { should == '6110 Dale Street NW' }
221
+ its(:city) { should == 'Ney York' }
222
+ its(:email) { should == 'john_doe@example.com' }
223
+
224
+ it 'should save the attributes' do
225
+ Mailroute::ResellerContact.get(contact.id).email.should == 'john_doe@example.com'
226
+ end
227
+ end
228
+
229
+ describe '#create_admin' do
230
+ let(:reseller) { Mailroute::Reseller.get(4) }
231
+
232
+ subject(:admin) { reseller.create_admin('admin@example.com', true) }
233
+
234
+ it { should be_a Mailroute::Admin }
235
+
236
+ it 'should have an id' do
237
+ admin.id.should be
238
+ end
239
+
240
+ it "should be in the list of the reseller's admins" do
241
+ reseller.admins.should include admin
242
+ end
243
+ end
244
+
245
+ describe '#delete_admin' do
246
+ let(:reseller) { Mailroute::Reseller.get(4) }
247
+
248
+ context 'when deleting an existing admin' do
249
+ before do
250
+ reseller.delete_admin('admin@example.com')
251
+ end
252
+
253
+ it "should not be in the list of the reseller's admins" do
254
+ reseller.admins.map(&:email).should_not include 'admin@example.com'
255
+ end
256
+
257
+ it "should not delete all admins" do
258
+ reseller.admins.should_not be_empty
259
+ end
260
+ end
261
+
262
+ context 'when trying to delete admin which do not exist' do
263
+ it 'should not fail' do
264
+ expect {
265
+ reseller.delete_admin('i-am-not-an-admin@example.com')
266
+ }.not_to raise_error
267
+ end
268
+ end
269
+ end
270
+
271
+ describe '#create_customer' do
272
+ let(:reseller) { Mailroute::Reseller.get(4) }
273
+ subject(:customer) {
274
+ reseller.create_customer(
275
+ :allow_branding => true,
276
+ :name => 'John Smith'
277
+ )
278
+ }
279
+
280
+ it { should be_a Mailroute::Customer }
281
+
282
+ it 'should save a new contact' do
283
+ Mailroute::Customer.get(customer.id).should be
284
+ end
285
+
286
+ it 'should have a link to the reseller' do
287
+ customer.reseller.should == reseller
288
+ end
289
+
290
+ its(:allow_branding) { should == true }
291
+ its(:name) { should == 'John Smith' }
292
+
293
+ it 'should save the attributes' do
294
+ Mailroute::Customer.get(customer.id).allow_branding.should == true
295
+ end
296
+ end
297
+ end
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mailroute::WBList, :vcr => true do
4
+ before { configure_mailroute }
5
+
6
+ describe 'WBList' do
7
+ context 'with domain' do
8
+ it 'should create read and update and delete wblists' do
9
+ domain = Mailroute::Domain.get(7)
10
+ wblist = Mailroute::WBList.create(:email => 'noreply@example.com', :domain => domain.resource_uri, :wb => 'b')
11
+
12
+ Mailroute::WBList.list.filter(:wb => 'b', :domain => 7).should include wblist
13
+
14
+
15
+ wblist = Mailroute::WBList.get(wblist.id)
16
+ wblist.domain.should == domain
17
+ wblist.email_account.should be_nil
18
+ wblist.email.should == 'noreply@example.com'
19
+ wblist.wb.should == 'b'
20
+
21
+ wblist.delete
22
+
23
+ Mailroute::WBList.list.filter(:domain => 7).should_not include wblist
24
+ end
25
+ end
26
+
27
+ context 'with email account' do
28
+ it 'should create read and update and delete wblists' do
29
+ email_account = Mailroute::EmailAccount.get(22)
30
+ wblist = Mailroute::WBList.create(:email => 'reply@example.com', :email_account => email_account, :wb => 'b')
31
+
32
+ Mailroute::WBList.list.filter(:wb => 'b', :email_account => 22).should include wblist
33
+
34
+ wblist = Mailroute::WBList.get(wblist.id)
35
+ wblist.email_account.should == email_account
36
+ wblist.domain.should be_nil
37
+ wblist.email.should == 'reply@example.com'
38
+ wblist.wb.should == 'b'
39
+
40
+ wblist.delete
41
+
42
+ Mailroute::WBList.list.filter(:email_account => 22).should_not include wblist
43
+ end
44
+ end
45
+ end
46
+ end