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,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mailroute::DomainAlias, :vcr => true do
4
+ it 'should be possible to create, read, update and delete domain aliases' do
5
+ domain = Mailroute::Domain.get(4555)
6
+ new_alias = nil
7
+
8
+ expect {
9
+ new_alias = Mailroute::DomainAlias.create(
10
+ :name => 'xyz.example.com',
11
+ :domain => domain,
12
+ :active => true
13
+ )
14
+ }.to change { domain.reload.domain_aliases.count }.by(1)
15
+
16
+ new_alias.reload.active.should == true
17
+
18
+ new_alias.active = false
19
+ new_alias.save!
20
+
21
+ new_alias.reload.active.should == false
22
+
23
+ expect {
24
+ new_alias.delete
25
+ }.to change { domain.reload.domain_aliases.count }.by(-1)
26
+ end
27
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mailroute::DomainContact, :vcr => true do
4
+ before { configure_mailroute }
5
+
6
+ let(:domain) { Mailroute::Domain.get(4555) }
7
+
8
+ describe 'CRUD' do
9
+ it 'should create, read, update and delete domain contacts' do
10
+ contact = Mailroute::DomainContact.create(:email => 'haskell@example.com', :domain => domain)
11
+
12
+ contact.id.should be
13
+
14
+ contact2 = Mailroute::DomainContact.get(contact.id)
15
+
16
+ contact2.should == contact
17
+
18
+ contact2.city = 'Minsk'
19
+ contact2.save!
20
+
21
+ contact2.domain.should == domain
22
+
23
+ contact.reload.city.should == 'Minsk'
24
+
25
+ contact.delete
26
+
27
+ expect { contact2.reload }.to raise_error ActiveResource::ResourceNotFound
28
+
29
+ domain.contacts.should_not include contact
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,215 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mailroute::Domain, :vcr => true do
4
+ before { configure_mailroute }
5
+
6
+ describe '#create' do
7
+ let(:customer) { Mailroute::Customer.get(1300) }
8
+ let(:attributes) do
9
+ {
10
+ :name => 'uberapp.example.com',
11
+ :customer => customer,
12
+ :hold_email => false,
13
+ :deliveryport => 240,
14
+ :active => false,
15
+ :userlist_complete => true,
16
+ :outbound_enabled => false
17
+ }
18
+ end
19
+ subject(:domain) { Mailroute::Domain.create(attributes) }
20
+
21
+ it 'should have an id' do
22
+ domain.id.should be
23
+ end
24
+
25
+ it 'should save all attributes' do
26
+ attributes.each do |k, v|
27
+ domain.public_send(k).should == v
28
+ end
29
+ end
30
+ end
31
+
32
+ describe '#domain_aliases' do
33
+ let(:domain) { Mailroute::Domain.get(3388) }
34
+ subject(:aliases) { domain.domain_aliases }
35
+
36
+ it 'should return a list of its domain aliases' do
37
+ aliases.should have_at_least(1).item
38
+ aliases.should all_be Mailroute::DomainAlias
39
+ end
40
+ end
41
+
42
+ describe 'has many aliases' do
43
+ it 'should list, create and delete domain aliases' do
44
+ domain = Mailroute::Domain.get(4554)
45
+
46
+ domain.domain_aliases.should be_empty
47
+
48
+ alias1 = domain.create_domain_alias(:name => 'x.example.com')
49
+ alias1.should be_a Mailroute::DomainAlias
50
+
51
+ alias2 = domain.create_domain_alias(:name => 'y.example.com')
52
+ alias2.should be_a Mailroute::DomainAlias
53
+
54
+ domain.domain_aliases.should have(2).items
55
+ domain.domain_aliases.map(&:name).should == ['x.example.com', 'y.example.com']
56
+ end
57
+ end
58
+
59
+ describe 'has many email accounts' do
60
+ it 'should list and create email accounts' do
61
+ domain = Mailroute::Domain.get(4554)
62
+
63
+ domain.email_accounts.should be_empty
64
+
65
+ account1 = domain.create_email_account(:localpart => '101', :create_opt => 'generate_pwd')
66
+ account1.should be_a Mailroute::EmailAccount
67
+
68
+ account2 = domain.create_email_account(:localpart => '102', :create_opt => 'generate_pwd')
69
+ account2.should be_a Mailroute::EmailAccount
70
+
71
+ domain.email_accounts.should have(2).items
72
+ domain.email_accounts.map(&:localpart).should == ['101', '102']
73
+
74
+ account1.delete
75
+ domain.reload.email_accounts.should == [account2]
76
+ end
77
+
78
+ it 'should be possible to bulk create email accounts' do
79
+ pending 'POST https://admin-dev.mailroute.net/api/v1/domain/4554/email_accounts/mass_add/ responds with 501 NOT IMPLEMENTED'
80
+ domain = Mailroute::Domain.get(4554)
81
+ domain.email_accounts.each(&:destroy)
82
+ domain.reload
83
+
84
+ domain.email_accounts.should be_empty
85
+
86
+ domain.bulk_create_email_account(['admin', 'john', 'support'])
87
+
88
+ domain.email_accounts.should have(3).items
89
+ domain.email_accounts.map(&:localpart).should == ['admin', 'john', 'support']
90
+
91
+ domain.email_accounts.each(&:destroy)
92
+ end
93
+ end
94
+
95
+ describe 'has many mail servers' do
96
+ it 'should list, create and delete mail servers' do
97
+ domain = Mailroute::Domain.get(4554)
98
+
99
+ domain.mail_servers.should be_empty
100
+
101
+ server1 = domain.create_mail_server(:server => 'x.example.com', :sasl_login => 'ha-ha', :priority => 1)
102
+ server1.should be_a Mailroute::MailServer
103
+
104
+ server2 = domain.create_mail_server(:server => 'y.example.com', :priority => 3)
105
+ server2.should be_a Mailroute::MailServer
106
+
107
+ domain.mail_servers.should have(2).items
108
+ domain.mail_servers.map(&:priority).should == [1, 3]
109
+ domain.mail_servers.map(&:sasl_login).should == ['ha-ha', nil]
110
+
111
+ server1.delete
112
+ domain.reload.mail_servers.should == [server2]
113
+ end
114
+ end
115
+
116
+ describe 'has many outbound servers' do
117
+ it 'should list, create and delete outbound servers' do
118
+ domain = Mailroute::Domain.get(4554)
119
+
120
+ domain.outbound_servers.should be_empty
121
+
122
+ server1 = domain.create_outbound_server(:server => '1.0.2.3')
123
+ server1.should be_a Mailroute::OutboundServer
124
+
125
+ server2 = domain.create_outbound_server('10.11.12.13')
126
+ server2.should be_a Mailroute::OutboundServer
127
+
128
+ domain.outbound_servers.should have(2).items
129
+ domain.outbound_servers.map(&:server).should == ['1.0.2.3', '10.11.12.13']
130
+
131
+ server1.delete
132
+ domain.reload.outbound_servers.should == [server2]
133
+ end
134
+ end
135
+
136
+ describe 'has many contacts' do
137
+ it 'should list, create and delete contacts' do
138
+ domain = Mailroute::Domain.get(4554)
139
+
140
+ domain.contacts.should be_empty
141
+
142
+ contact1 = domain.create_contact(:address => 'The Moon', :email => 'themoon@example.com')
143
+ contact1.should be_a Mailroute::DomainContact
144
+
145
+ contact2 = domain.create_contact(:address => 'The Earth', :email => 'theearth@example.com')
146
+ contact2.should be_a Mailroute::DomainContact
147
+
148
+ domain.contacts.should have(2).items
149
+ domain.contacts.map(&:address).should == ['The Moon', 'The Earth']
150
+
151
+ contact1.delete
152
+ domain.reload.contacts.should == [contact2]
153
+ end
154
+ end
155
+
156
+ describe 'black white list' do
157
+ it 'should blacklist and whitelist emails' do
158
+ domain = Mailroute::Domain.get(4554)
159
+
160
+ domain.wblist.should be_empty
161
+ domain.blacklist.should be_empty
162
+ domain.whitelist.should be_empty
163
+
164
+ domain.add_to_blacklist('spam@example.com')
165
+ domain.add_to_blacklist('ham@example.com')
166
+ domain.add_to_whitelist('nospam@example.com')
167
+
168
+ domain.wblist.should have(3).items
169
+ domain.wblist.should all_be Mailroute::WBList
170
+
171
+ domain.blacklist.should == ['spam@example.com', 'ham@example.com']
172
+ domain.whitelist.should == ['nospam@example.com']
173
+ end
174
+ end
175
+
176
+ describe 'has a policy' do
177
+ it 'should have policy' do
178
+ domain = Mailroute::Domain.get(4555)
179
+
180
+ domain.policy.should be_a Mailroute::PolicyDomain
181
+
182
+ domain.policy.spam_kill_level.should == 7.0
183
+ domain.attributes['policy'].should == domain.policy.resource_uri
184
+ end
185
+ end
186
+
187
+ describe 'has a notification task' do
188
+ it 'should have notification task' do
189
+ domain = Mailroute::Domain.get(4555)
190
+
191
+ domain.notification_task.should be_a Mailroute::NotificationDomainTask
192
+
193
+ domain.notification_task.mon.should == true
194
+ domain.attributes['notification_task'].should == domain.notification_task.resource_uri
195
+ domain.notification_task.mon = false
196
+ domain.notification_task.save!
197
+
198
+ domain.reload.notification_task.mon.should == false
199
+ end
200
+ end
201
+
202
+ describe 'move_to_customer' do
203
+ it 'should move domain to another customer' do
204
+ domain = Mailroute::Domain.get(4555)
205
+
206
+ domain.customer.id == 1300
207
+
208
+ domain.move_to_customer(Mailroute::Customer.get(2341))
209
+
210
+ domain.customer.id.should == 2341
211
+ domain.reload
212
+ domain.customer.id.should == 2341
213
+ end
214
+ end
215
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mailroute::EmailAccountContact, :vcr => true do
4
+ before { configure_mailroute }
5
+
6
+ let(:email_account) { Mailroute::EmailAccount.get(53283) }
7
+
8
+ describe 'CRUD' do
9
+ it 'should create, read, update and delete email account contacts' do
10
+ contact = Mailroute::EmailAccountContact.create(:email => 'haskell@example.com', :email_account => email_account)
11
+
12
+ contact.id.should be
13
+
14
+ contact2 = Mailroute::EmailAccountContact.get(contact.id)
15
+
16
+ contact2.should == contact
17
+
18
+ contact2.city = 'Minsk'
19
+ contact2.save!
20
+
21
+ contact2.email_account.should == email_account
22
+
23
+ contact.reload.city.should == 'Minsk'
24
+
25
+ contact.delete
26
+
27
+ expect { contact2.reload }.to raise_error ActiveResource::ResourceNotFound
28
+
29
+ email_account.contact.should be_nil
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,123 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mailroute::EmailAccount, :vcr => true do
4
+ before { configure_mailroute }
5
+
6
+ describe '.get' do
7
+ context 'by id' do
8
+ it 'should return an account' do
9
+ account = Mailroute::EmailAccount.get(25396)
10
+ account.attributes[:domain].should == '/api/v1/domain/1198/'
11
+ account.localpart.should == '2bill'
12
+ end
13
+ end
14
+
15
+ context 'by localpart and domain' do
16
+ let(:domain) { Mailroute::Domain.get(1198) }
17
+
18
+ it 'should return an account' do
19
+ account = Mailroute::EmailAccount.get('2bill', domain)
20
+ account.id.should == 25396
21
+ end
22
+ end
23
+
24
+ context 'by localpart and domain id' do
25
+ it 'should return an account' do
26
+ account = Mailroute::EmailAccount.get('2bill', 1198)
27
+ account.id.should == 25396
28
+ end
29
+ end
30
+
31
+ context 'by localpart and domain name' do
32
+ it 'should return an account' do
33
+ account = Mailroute::EmailAccount.get('2bill', 'mailroute.net')
34
+ account.id.should == 25396
35
+ end
36
+ end
37
+ end
38
+
39
+ it 'should be possible to create, read, update and delete email accounts' do
40
+ domain = Mailroute::Domain.get(4555)
41
+ new_account = nil
42
+
43
+ expect {
44
+ new_account = Mailroute::EmailAccount.create(
45
+ :name => 'xyz.example.com',
46
+ :domain => domain,
47
+ :localpart => 'sales',
48
+ :create_opt => 'generate_pwd',
49
+ :send_welcome => false
50
+ )
51
+ }.to change { domain.reload.email_accounts.count }.by(1)
52
+
53
+ new_account.reload.localpart.should == 'sales'
54
+
55
+ new_account.localpart = 'marketing'
56
+ new_account.save!
57
+
58
+ new_account.reload.localpart.should == 'marketing'
59
+
60
+ expect {
61
+ new_account.delete
62
+ }.to change { domain.reload.email_accounts.count }.by(-1)
63
+ end
64
+
65
+ describe 'has domain' do
66
+ it 'should have domain' do
67
+ account = Mailroute::EmailAccount.get(53282)
68
+ account.domain.id.should == 4555
69
+ end
70
+ end
71
+
72
+ describe 'has policy' do
73
+ it 'should have policy' do
74
+ account = Mailroute::EmailAccount.get(53282)
75
+ account.policy.id.should == 57887
76
+ end
77
+ end
78
+
79
+ describe 'has notification task' do
80
+ it 'should have notification task' do
81
+ account = Mailroute::EmailAccount.get(53282)
82
+ account.notification_task.id.should == 57820
83
+ end
84
+ end
85
+
86
+ describe 'has contact' do
87
+ it 'should have contact' do
88
+ account = Mailroute::EmailAccount.get(53282)
89
+ account.contact.id.should == 1654
90
+ end
91
+ end
92
+
93
+ describe 'black white list' do
94
+ it 'should blacklist and whitelist emails' do
95
+ pending 'POST returns 500 error'
96
+ account = Mailroute::EmailAccount.get(53282)
97
+
98
+ account.wblist.should be_empty
99
+ account.blacklist.should be_empty
100
+ account.whitelist.should be_empty
101
+
102
+ account.add_to_blacklist('spam@example.org')
103
+ account.add_to_blacklist('ham@example.org')
104
+ account.add_to_whitelist('nospam@example.org')
105
+
106
+ account.wblist.should have(3).items
107
+ account.wblist.should all_be Mailroute::WBList
108
+
109
+ account.blacklist.should == ['spam@example.org', 'ham@example.org']
110
+ account.whitelist.should == ['nospam@example.org']
111
+ end
112
+ end
113
+
114
+ describe '#set_password' do
115
+ it 'should set the password' do
116
+ pending 'API responds with "Passwords don`t match"'
117
+ account = Mailroute::EmailAccount.get(53282)
118
+ expect {
119
+ account.set_password("new_password")
120
+ }.not_to raise_error
121
+ end
122
+ end
123
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mailroute::MailServer, :vcr => true do
4
+ it 'should be possible to create, read, update and delete mail servers' do
5
+ domain = Mailroute::Domain.get(4555)
6
+ new_server = nil
7
+
8
+ expect {
9
+ new_server = Mailroute::MailServer.create(
10
+ :server => 'xyz.example.com',
11
+ :domain => domain,
12
+ :priority => 8
13
+ )
14
+ }.to change { domain.reload.mail_servers.count }.by(1)
15
+
16
+ new_server.reload.server.should == 'xyz.example.com'
17
+
18
+ new_server.server = 'zyx.example.com'
19
+ new_server.save!
20
+
21
+ new_server.reload.server.should == 'zyx.example.com'
22
+
23
+ expect {
24
+ new_server.delete
25
+ }.to change { domain.reload.mail_servers.count }.by(-1)
26
+ end
27
+ end