mailroute 0.0.1

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