mailgun 0.0.3 → 0.5

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.
@@ -0,0 +1,38 @@
1
+ module Mailgun
2
+ class Unsubscribe
3
+ # Used internally, called from Mailgun::Base
4
+ def initialize(mailgun)
5
+ @mailgun = mailgun
6
+ end
7
+
8
+ # List all unsubscribes for a given domain
9
+ # * domain the domain for which all unsubscribes will listed
10
+ def list(domain = Mailgun.domain)
11
+ response = Mailgun.submit :get, unsubscribe_url(domain)
12
+
13
+ if response
14
+ response["items"].collect {|item| item["address"]}
15
+ end
16
+ end
17
+
18
+ def find(domain = Mailgun.domain, email)
19
+ Mailgun.submit :get, unsubscribe_url(domain, email)
20
+ end
21
+
22
+ def add(email, domain=Mailgun.domain, tag='*')
23
+ Mailgun.submit :post, unsubscribe_url(domain), {:address => email, :tag => tag}
24
+ end
25
+
26
+ def remove(domain = Mailgun.domain, email)
27
+ Mailgun.submit :delete, unsubscribe_url(domain, email)
28
+ end
29
+
30
+ private
31
+
32
+ # Helper method to generate the proper url for Mailgun unsubscribe API calls
33
+ def unsubscribe_url(domain, address=nil)
34
+ "#{@mailgun.base_url}/#{domain}/unsubscribes#{'/' + address if address}"
35
+ end
36
+
37
+ end
38
+ end
data/lib/mailgun.rb CHANGED
@@ -1,9 +1,21 @@
1
1
  require "rest-client"
2
2
  require "json"
3
+ require "multimap"
3
4
 
4
- require 'mailgun/base'
5
- require 'mailgun/mailbox'
5
+ require "mailgun/mailgun_error"
6
+ require "mailgun/base"
7
+ require "mailgun/route"
8
+ require "mailgun/mailbox"
9
+ require "mailgun/bounce"
10
+ require "mailgun/unsubscribe"
11
+ require "mailgun/complaint"
12
+ require "mailgun/log"
13
+ require "mailgun/list"
14
+ require "mailgun/list/member"
6
15
 
7
- def Mailgun(options)
16
+ #require "startup"
17
+
18
+ def Mailgun(options={})
19
+ options[:api_key] = Mailgun.api_key if Mailgun.api_key
8
20
  Mailgun::Base.new(options)
9
21
  end
data/mailgun.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |gem|
4
4
  gem.authors = ["Akash Manohar J", "Sean Grove"]
5
- gem.email = ["akash@akash.im", "s@bushi.do", "sean@fakecoolguys.com"]
5
+ gem.email = ["akash@akash.im"]
6
6
  gem.description = %q{Mailgun library for Ruby}
7
7
  gem.summary = %q{Idiomatic library for using the mailgun API from within ruby}
8
8
  gem.homepage = "http://github.com/Bushido/mailgun"
@@ -12,5 +12,8 @@ Gem::Specification.new do |gem|
12
12
  gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
13
13
  gem.name = "mailgun"
14
14
  gem.require_paths = ["lib"]
15
- gem.version = "0.0.3"
15
+ gem.version = "0.5"
16
+
17
+ gem.add_dependency(%q<rest-client>, [">= 0"])
18
+ gem.add_dependency(%q<multimap>, [">= 0"])
16
19
  end
data/spec/base_spec.rb CHANGED
@@ -2,31 +2,125 @@ require 'spec_helper'
2
2
 
3
3
  describe Mailgun::Base do
4
4
 
5
- before :each do
6
- @mailgun = Mailgun({:api_key => "some-junk-string"}) # used to get the default values
7
-
8
- @sample_options = {
9
- :api_key => @mailgun.api_key,
10
- :api_version => @mailgun.api_version,
11
- :protocol => @mailgun.protocol,
12
- :mailgun_host => @mailgun.mailgun_host
13
- }
5
+ it "should raise an error if the api_key has not been set" do
6
+ expect do
7
+ Mailgun()
8
+ end.to raise_error ArgumentError
14
9
  end
15
10
 
16
- describe "new" do
11
+ it "can be called directly if the api_key has been set via Mailgun.configure" do
12
+ Mailgun.config { |c| c.api_key = "some-junk-string" }
13
+ expect do
14
+ Mailgun()
15
+ end.to_not raise_error ArgumentError
16
+ end
17
+
18
+ it "can be instanced with the api_key as a param" do
19
+ expect do
20
+ Mailgun({:api_key => "some-junk-string"})
21
+ end.to_not raise_error ArgumentError
22
+ end
23
+
24
+ describe "Mailgun.new" do
17
25
  it "Mailgun() method should return a new Mailgun object" do
18
- @mailgun.should be_kind_of(Mailgun::Base)
26
+ mailgun = Mailgun({:api_key => "some-junk-string"})
27
+ mailgun.should be_kind_of(Mailgun::Base)
28
+ end
29
+ end
30
+
31
+ describe "resources" do
32
+ before :each do
33
+ @mailgun = Mailgun({:api_key => "some-junk-string"})
19
34
  end
20
35
 
21
- it "should use https by default" do
22
- @mailgun.protocol.should == "https"
36
+ it "Mailgun#mailboxes should return an instance of Mailgun::Mailbox" do
37
+ @mailgun.mailboxes.should be_kind_of(Mailgun::Mailbox)
38
+ end
39
+
40
+ it "Mailgun#routes should return an instance of Mailgun::Route" do
41
+ @mailgun.routes.should be_kind_of(Mailgun::Route)
23
42
  end
24
43
  end
25
44
 
26
- describe "base_url" do
27
- it "should return https url if use_https is true" do
28
- mailgun = Mailgun(@sample_options)
29
- mailgun.send(:base_url).should == "https://api:#{mailgun.api_key}@#{mailgun.mailgun_host}/#{mailgun.api_version}"
30
- end
31
- end
45
+
46
+
47
+ describe "internal helper methods" do
48
+ before :each do
49
+ @mailgun = Mailgun({:api_key => "some-junk-string"})
50
+ end
51
+
52
+ describe "Mailgun#base_url" do
53
+ it "should return https url if use_https is true" do
54
+ @mailgun.base_url.should == "https://api:#{Mailgun.api_key}@#{Mailgun.mailgun_host}/#{Mailgun.api_version}"
55
+ end
56
+ end
57
+
58
+ describe "Mailgun.submit" do
59
+ it "should send method and arguments to RestClient" do
60
+ RestClient.should_receive(:test_method)
61
+ .with({:arg1=>"val1"},{})
62
+ .and_return({})
63
+ Mailgun.submit :test_method, :arg1=>"val1"
64
+ end
65
+ end
66
+
67
+ end
68
+
69
+ describe "configuration" do
70
+ describe "default settings" do
71
+ it "api_version is v2" do
72
+ Mailgun.api_version.should eql 'v2'
73
+ end
74
+ it "should use https by default" do
75
+ Mailgun.protocol.should == "https"
76
+ end
77
+ it "mailgun_host is 'api.mailgun.net'" do
78
+ Mailgun.mailgun_host.should eql 'api.mailgun.net'
79
+ end
80
+
81
+ it "test_mode is false" do
82
+ Mailgun.test_mode.should eql false
83
+ end
84
+
85
+ it "domain is not set" do
86
+ Mailgun.domain.should be_nil
87
+ end
88
+ end
89
+
90
+ describe "setting configurations" do
91
+ before(:each) do
92
+ Mailgun.configure do |c|
93
+ c.api_key = 'some-api-key'
94
+ c.api_version = 'v2'
95
+ c.protocol = 'https'
96
+ c.mailgun_host = 'api.mailgun.net'
97
+ c.test_mode = false
98
+ c.domain = 'some-domain'
99
+ end
100
+ end
101
+
102
+ it "allows me to set my API key easily" do
103
+ Mailgun.api_key.should eql 'some-api-key'
104
+ end
105
+
106
+ it "allows me to set the api_version attribute" do
107
+ Mailgun.api_version.should eql 'v2'
108
+ end
109
+
110
+ it "allows me to set the protocol attribute" do
111
+ Mailgun.protocol.should eql 'https'
112
+ end
113
+
114
+ it "allows me to set the mailgun_host attribute" do
115
+ Mailgun.mailgun_host.should eql 'api.mailgun.net'
116
+ end
117
+ it "allows me to set the test_mode attribute" do
118
+ Mailgun.test_mode.should eql false
119
+ end
120
+
121
+ it "allows me to set my domain easily" do
122
+ Mailgun.domain.should eql 'some-domain'
123
+ end
124
+ end
125
+ end
32
126
  end
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mailgun::Bounce do
4
+
5
+ before :each do
6
+ @mailgun = Mailgun({:api_key => "api-key"}) # used to get the default values
7
+
8
+ @bounce_options = {
9
+ :email => "test@sample.mailgun.org",
10
+ :name => "test",
11
+ :domain => "sample.mailgun.org"
12
+ }
13
+ end
14
+
15
+ describe "list bounces" do
16
+ it "should make a GET request with the right params" do
17
+ sample_response = "{\"items\": [{\"size_bytes\": 0, \"mailbox\": \"postmaster@bsample.mailgun.org\" } ]}"
18
+ RestClient.should_receive(:get).with("#{@mailgun.bounces.send(:bounce_url, @bounce_options[:domain])}", {}).and_return(sample_response)
19
+
20
+ @mailgun.bounces.list @bounce_options[:domain]
21
+ end
22
+ end
23
+
24
+ describe "find bounces" do
25
+ it "should make a GET request with correct params to find given email address" do
26
+ sample_response = "{\"items\": [{\"size_bytes\": 0, \"mailbox\": \"postmaster@bsample.mailgun.org\" } ]}"
27
+ RestClient.should_receive(:get)
28
+ .with("#{@mailgun.bounces.send(:bounce_url, @bounce_options[:domain], @bounce_options[:email])}", {})
29
+ .and_return(sample_response)
30
+
31
+ @mailgun.bounces.find(@bounce_options[:domain], @bounce_options[:email])
32
+ end
33
+ end
34
+
35
+ describe "add bounces" do
36
+ it "should make a POST request with correct params to add a given email address" do
37
+ #sample_response = "{\"message\"=>\"Address has been added to the bounces table\", \"address\"=>\"#{@bounce_options[:email]}\"}"
38
+ sample_response = "{\"items\": [{\"size_bytes\": 0, \"mailbox\": \"postmaster@bsample.mailgun.org\" } ]}"
39
+ RestClient.should_receive(:post)
40
+ .with("#{@mailgun.bounces.send(:bounce_url, @bounce_options[:domain])}", {:address => @bounce_options[:email]})
41
+ .and_return(sample_response)
42
+
43
+ @mailgun.bounces.add(@bounce_options[:domain], @bounce_options[:email])
44
+ end
45
+ end
46
+
47
+ end
@@ -0,0 +1,56 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mailgun::Complaint do
4
+
5
+ before :each do
6
+ @mailgun = Mailgun({:api_key => "api-key"}) # used to get the default values
7
+
8
+ @complaint_options = {
9
+ :email => "test@sample.mailgun.org",
10
+ :name => "test",
11
+ :domain => "sample.mailgun.org"
12
+ }
13
+ end
14
+
15
+ describe "list complaints" do
16
+ it "should make a GET request with the right params" do
17
+ sample_response = "{\"items\": [{\"size_bytes\": 0, \"mailbox\": \"postmaster@bsample.mailgun.org\" } ]}"
18
+ RestClient.should_receive(:get).with("#{@mailgun.complaints.send(:complaint_url, @complaint_options[:domain])}", {}).and_return(sample_response)
19
+
20
+ @mailgun.complaints.list @complaint_options[:domain]
21
+ end
22
+ end
23
+
24
+ describe "find complaint" do
25
+ it "should make a GET request with the right params to find given email address" do
26
+ sample_response = "{\"items\": [{\"size_bytes\": 0, \"mailbox\": \"postmaster@bsample.mailgun.org\" } ]}"
27
+ RestClient.should_receive(:get)
28
+ .with("#{@mailgun.complaints.send(:complaint_url, @complaint_options[:domain], @complaint_options[:email])}", {})
29
+ .and_return(sample_response)
30
+
31
+ @mailgun.complaints.find(@complaint_options[:domain], @complaint_options[:email])
32
+ end
33
+ end
34
+
35
+ describe "delete complaint" do
36
+ it "should make a DELETE request with correct params to remove a given email address" do
37
+ response_message = "{\"message\"=>\"Complaint event has been removed\", \"address\"=>\"#{@complaint_options[:email]}\"}"
38
+ Mailgun.should_receive(:submit)
39
+ .with(:delete, "#{@mailgun.complaints.send(:complaint_url, @complaint_options[:domain], @complaint_options[:email])}")
40
+ .and_return(response_message)
41
+
42
+ @mailgun.complaints.remove(@complaint_options[:domain], @complaint_options[:email])
43
+ end
44
+ end
45
+
46
+ describe "add complaint" do
47
+ it "should make a POST request with correct params to add a given email address to complaint from a tag" do
48
+ response_message = "{\"message\"=>\"Address has been added to the complaints table\", \"address\"=>\"#{@complaint_options[:email]}\"}"
49
+ Mailgun.should_receive(:submit)
50
+ .with(:post, "#{@mailgun.complaints.send(:complaint_url, @complaint_options[:domain])}",{:address=>@complaint_options[:email]})
51
+ .and_return(response_message)
52
+ @mailgun.complaints.add(@complaint_options[:domain],@complaint_options[:email])
53
+ end
54
+ end
55
+
56
+ end
@@ -0,0 +1,71 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mailgun::List::Member do
4
+
5
+ before :each do
6
+ @mailgun = Mailgun({:api_key => "api-key"}) # used to get the default values
7
+
8
+ @list_member_options = {
9
+ :email => "test@sample.mailgun.org",
10
+ :list_email => "test_list@sample.mailgun.org",
11
+ :name => "test",
12
+ :domain => "sample.mailgun.org"
13
+ }
14
+ end
15
+
16
+ describe "list members" do
17
+ it "should make a GET request with the right params" do
18
+ sample_response = "{\"items\": [{\"size_bytes\": 0, \"mailbox\": \"postmaster@bsample.mailgun.org\" } ]}"
19
+ RestClient.should_receive(:get).with("#{@mailgun.list_members.send(:list_member_url, @list_member_options[:list_email])}", {}).and_return(sample_response)
20
+
21
+ @mailgun.list_members.list @list_member_options[:list_email]
22
+ end
23
+ end
24
+
25
+ describe "find member in list" do
26
+ it "should make a GET request with correct params to find given email address" do
27
+ sample_response = "{\"items\": [{\"size_bytes\": 0, \"mailbox\": \"postmaster@bsample.mailgun.org\" } ]}"
28
+ RestClient.should_receive(:get)
29
+ .with("#{@mailgun.list_members.send(:list_member_url, @list_member_options[:list_email], @list_member_options[:email])}", {})
30
+ .and_return(sample_response)
31
+
32
+ @mailgun.list_members.find(@list_member_options[:list_email], @list_member_options[:email])
33
+ end
34
+ end
35
+
36
+ describe "add member to list" do
37
+ it "should make a POST request with correct params to add a given email address" do
38
+ sample_response = "{\"items\": [{\"size_bytes\": 0, \"mailbox\": \"postmaster@bsample.mailgun.org\" } ]}"
39
+ RestClient.should_receive(:post)
40
+ .with("#{@mailgun.list_members.send(:list_member_url, @list_member_options[:list_email])}", {
41
+ :address => @list_member_options[:email], :subscribed => 'yes', :upsert => 'no'
42
+ }).and_return(sample_response)
43
+
44
+ @mailgun.list_members.add(@list_member_options[:list_email], @list_member_options[:email])
45
+ end
46
+ end
47
+
48
+ describe "update member in list" do
49
+ it "should make a PUT request with correct params" do
50
+ sample_response = "{\"items\": [{\"size_bytes\": 0, \"mailbox\": \"postmaster@bsample.mailgun.org\" } ]}"
51
+ RestClient.should_receive(:put)
52
+ .with("#{@mailgun.list_members.send(:list_member_url, @list_member_options[:list_email], @list_member_options[:email])}", {
53
+ :address => @list_member_options[:email], :subscribed => 'yes'
54
+ }).and_return(sample_response)
55
+
56
+ @mailgun.list_members.update(@list_member_options[:list_email], @list_member_options[:email])
57
+ end
58
+ end
59
+
60
+ describe "delete member from list" do
61
+ it "should make a DELETE request with correct params" do
62
+ sample_response = "{\"items\": [{\"size_bytes\": 0, \"mailbox\": \"postmaster@bsample.mailgun.org\" } ]}"
63
+ RestClient.should_receive(:delete)
64
+ .with("#{@mailgun.list_members.send(:list_member_url, @list_member_options[:list_email], @list_member_options[:email])}", {})
65
+ .and_return(sample_response)
66
+
67
+ @mailgun.list_members.remove(@list_member_options[:list_email], @list_member_options[:email])
68
+ end
69
+ end
70
+
71
+ end
data/spec/list_spec.rb ADDED
@@ -0,0 +1,70 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mailgun::List do
4
+
5
+ before :each do
6
+ @mailgun = Mailgun({:api_key => "api-key"}) # used to get the default values
7
+
8
+ @list_options = {
9
+ :email => "test@sample.mailgun.org",
10
+ :list_email => "dev@samples.mailgun.org",
11
+ :name => "test",
12
+ :domain => "sample.mailgun.org"
13
+ }
14
+ end
15
+
16
+ describe "all list" do
17
+ it "should make a GET request with the right params" do
18
+ sample_response = "{\"items\": [{\"size_bytes\": 0, \"mailbox\": \"postmaster@bsample.mailgun.org\" } ]}"
19
+ RestClient.should_receive(:get)
20
+ .with("#{@mailgun.lists.send(:list_url)}", {}).and_return(sample_response)
21
+
22
+ @mailgun.lists.all
23
+ end
24
+ end
25
+
26
+ describe "find list adress" do
27
+ it "should make a GET request with correct params to find given email address" do
28
+ sample_response = "{\"items\": [{\"size_bytes\": 0, \"mailbox\": \"postmaster@bsample.mailgun.org\" } ]}"
29
+ RestClient.should_receive(:get)
30
+ .with("#{@mailgun.lists.send(:list_url, @list_options[:list_email])}", {})
31
+ .and_return(sample_response)
32
+
33
+ @mailgun.lists.find(@list_options[:list_email])
34
+ end
35
+ end
36
+
37
+ describe "create list" do
38
+ it "should make a POST request with correct params to add a given email address" do
39
+ sample_response = "{\"items\": [{\"size_bytes\": 0, \"mailbox\": \"postmaster@bsample.mailgun.org\" } ]}"
40
+ RestClient.should_receive(:post)
41
+ .with("#{@mailgun.lists.send(:list_url)}", {:address => @list_options[:list_email]})
42
+ .and_return(sample_response)
43
+
44
+ @mailgun.lists.create(@list_options[:list_email])
45
+ end
46
+ end
47
+
48
+ describe "update list" do
49
+ it "should make a PUT request with correct params" do
50
+ sample_response = "{\"items\": [{\"size_bytes\": 0, \"mailbox\": \"postmaster@bsample.mailgun.org\" } ]}"
51
+ RestClient.should_receive(:put)
52
+ .with("#{@mailgun.lists.send(:list_url, @list_options[:list_email])}", {:address => @list_options[:email]})
53
+ .and_return(sample_response)
54
+
55
+ @mailgun.lists.update(@list_options[:list_email], @list_options[:email])
56
+ end
57
+ end
58
+
59
+ describe "delete list" do
60
+ it "should make a DELETE request with correct params" do
61
+ sample_response = "{\"items\": [{\"size_bytes\": 0, \"mailbox\": \"postmaster@bsample.mailgun.org\" } ]}"
62
+ RestClient.should_receive(:delete)
63
+ .with("#{@mailgun.lists.send(:list_url, @list_options[:list_email])}", {})
64
+ .and_return(sample_response)
65
+
66
+ @mailgun.lists.delete(@list_options[:list_email])
67
+ end
68
+ end
69
+
70
+ end
data/spec/log_spec.rb ADDED
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mailgun::Log do
4
+
5
+ before :each do
6
+ @mailgun = Mailgun({:api_key => "api-key"}) # used to get the default values
7
+
8
+ @log_options = {
9
+ :email => "test@sample.mailgun.org",
10
+ :name => "test",
11
+ :domain => "sample.mailgun.org"
12
+ }
13
+ end
14
+
15
+ describe "list log" do
16
+ it "should make a GET request with the right params" do
17
+ sample_response = "{\"items\": [{\"size_bytes\": 0, \"mailbox\": \"postmaster@bsample.mailgun.org\" } ]}"
18
+ RestClient.should_receive(:get).with("#{@mailgun.log.send(:log_url, @log_options[:domain])}", {:limit => 100, :skip => 0}).and_return(sample_response)
19
+
20
+ @mailgun.log.list @log_options[:domain]
21
+ end
22
+ end
23
+
24
+ end
data/spec/mailbox_spec.rb CHANGED
@@ -2,56 +2,56 @@ require 'spec_helper'
2
2
 
3
3
  describe Mailgun::Mailbox do
4
4
 
5
- before :each do
6
- @mailgun = Mailgun({:api_key => "api-key"}) # used to get the default values
5
+ before :each do
6
+ @mailgun = Mailgun({:api_key => "api-key"}) # used to get the default values
7
7
 
8
- @mailbox_options = {
9
- :email => "test@sample.mailgun.com",
8
+ @mailbox_options = {
9
+ :email => "test@sample.mailgun.org",
10
10
  :name => "test",
11
- :domain => "sample.mailgun.com"
11
+ :domain => "sample.mailgun.org"
12
12
  }
13
- end
14
-
15
- describe "list_mailboxes" do
16
- it "should make a get request with the right params" do
17
- RestClient.should_receive(:get)
18
- .with("#{@mailgun.send(:base_url)}/#{@mailbox_options[:domain]}/mailboxes", {}).and_return("{}")
19
-
20
- @mailgun.mailboxes.list @mailbox_options[:domain]
21
- end
22
- end
23
-
24
- describe "create mailbox" do
25
- it "should make a post request with the right params" do
26
- RestClient.should_receive(:post)
27
- .with("#{@mailgun.send(:base_url)}/#{@mailbox_options[:domain]}/mailboxes",
28
- :mailbox => @mailbox_options[:email],
29
- :password => @mailbox_options[:password])
30
- .and_return({})
31
-
32
- @mailgun.mailboxes.create(@mailbox_options[:email], @mailbox_options[:password])
33
- end
34
- end
35
-
36
- describe "update mailbox password" do
37
- it "should make a put request with the right params" do
38
- RestClient.should_receive(:put)
39
- .with("#{@mailgun.send(:base_url)}/#{@mailbox_options[:domain]}/mailboxes/#{@mailbox_options[:name]}",
40
- :password => @mailbox_options[:password])
41
- .and_return({})
42
-
43
- @mailgun.mailboxes.update_password @mailbox_options[:email],
44
- @mailbox_options[:password]
45
- end
46
- end
47
-
48
- describe "destroy mailbox" do
49
- it "should make a put request with the right params" do
50
- RestClient.should_receive(:delete)
51
- .with("#{@mailgun.send(:base_url)}/#{@mailbox_options[:domain]}/mailboxes/#{@mailbox_options[:name]}", {})
52
- .and_return({})
53
-
54
- @mailgun.mailboxes.destroy @mailbox_options[:email]
55
- end
56
- end
13
+ end
14
+
15
+ describe "list mailboxes" do
16
+ it "should make a GET request with the right params" do
17
+ sample_response = "{\"items\": [{\"size_bytes\": 0, \"mailbox\": \"postmaster@bsample.mailgun.org\" } ]}"
18
+ RestClient.should_receive(:get).with("#{@mailgun.mailboxes.send(:mailbox_url, @mailbox_options[:domain])}", {}).and_return(sample_response)
19
+
20
+ @mailgun.mailboxes.list @mailbox_options[:domain]
21
+ end
22
+ end
23
+
24
+ describe "create mailbox" do
25
+ it "should make a POST request with the right params" do
26
+ RestClient.should_receive(:post)
27
+ .with("#{@mailgun.mailboxes.send(:mailbox_url, @mailbox_options[:domain])}",
28
+ :mailbox => @mailbox_options[:email],
29
+ :password => @mailbox_options[:password])
30
+ .and_return({})
31
+
32
+ @mailgun.mailboxes.create(@mailbox_options[:email], @mailbox_options[:password])
33
+ end
34
+ end
35
+
36
+ describe "update mailbox" do
37
+ it "should make a PUT request with the right params" do
38
+ RestClient.should_receive(:put)
39
+ .with("#{@mailgun.mailboxes.send(:mailbox_url, @mailbox_options[:domain], @mailbox_options[:name])}",
40
+ :password => @mailbox_options[:password])
41
+ .and_return({})
42
+
43
+ @mailgun.mailboxes.update_password @mailbox_options[:email],
44
+ @mailbox_options[:password]
45
+ end
46
+ end
47
+
48
+ describe "destroy mailbox" do
49
+ it "should make a DELETE request with the right params" do
50
+ RestClient.should_receive(:delete)
51
+ .with("#{@mailgun.mailboxes.send(:mailbox_url, @mailbox_options[:domain], @mailbox_options[:name])}", {})
52
+ .and_return({})
53
+
54
+ @mailgun.mailboxes.destroy @mailbox_options[:email]
55
+ end
56
+ end
57
57
  end