fusebox 0.2.0 → 0.2.2

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.
@@ -13,6 +13,7 @@ module Net
13
13
  http = new(url.host, url.port)
14
14
  http.use_ssl = (url.scheme == 'https')
15
15
  http.verify_mode = OpenSSL::SSL::VERIFY_PEER
16
+ http.ca_file = File.expand_path('../../../../vendor/curl-cacert.pem', __FILE__)
16
17
  http.start {|http|
17
18
  http.request(req)
18
19
  }
@@ -22,7 +22,7 @@ module Fusebox
22
22
  self.url = 'https://www.fusemail.com/api/request.html'
23
23
 
24
24
  # @return [Array<String>] List of available API commands
25
- COMMANDS = %w(adddomain addforward changeusername checkalias checkdomain suspend enable getforward modify order terminate removealias removedomain removeforward report reportmail suspend)
25
+ COMMANDS = %w(adddomain addforward changeusername checkalias checkdomain suspend enable getforward modify order terminate removealias removedomain removeforward report reportmail)
26
26
 
27
27
  # @param [String] username API username. If not provided, auth_yaml_paths will be searched for authentication information instead.
28
28
  # @param [String] password API password
@@ -85,7 +85,7 @@ module Fusebox
85
85
  end
86
86
 
87
87
  # This request is used to change the an account's username
88
- # @see http://www.fusemail.com/support/administration-api/requests/changeusername checkalias API documentation
88
+ # @see http://www.fusemail.com/support/administration-api/requests/changeusername changeusername API documentation
89
89
  # @param [Array] opts
90
90
  # @param opts [String] :user Username of FuseMail account to modify
91
91
  # @param opts [String] :newuser New username of the account
@@ -115,7 +115,7 @@ module Fusebox
115
115
  end
116
116
 
117
117
  # This request is used to change the an account's username
118
- # @see http://www.fusemail.com/support/administration-api/requests/changeusername changeusername API documentation
118
+ # @see http://www.fusemail.com/support/administration-api/requests/suspend suspend API documentation
119
119
  # @param [Array] opts
120
120
  # @option opts [String] :user Username of FuseMail account to modify
121
121
  # @return [Response]
@@ -1,4 +1,4 @@
1
1
  module Fusebox
2
2
  # @return [String] Version number
3
- VERSION = '0.2.0'
3
+ VERSION = '0.2.2'
4
4
  end
@@ -0,0 +1,2 @@
1
+ username: my_yaml_username
2
+ password: my_yaml_password
@@ -0,0 +1,171 @@
1
+ require 'spec_helper'
2
+
3
+ # These specs run all the commands on your *live* Fusemail account. Fusemail
4
+ # unfortunately does not provide a "test mode" in its API, which makes these
5
+ # tests difficult to run. These tests are non-atomic, and each test relies
6
+ # on the previous test to set up the data, and a later test to clean up.
7
+ # Additionally, some tests like "order" have a lengthy "sleep" delay to allow
8
+ # the data its necessary propagation time for it to be available to subsequent
9
+ # tests. Tests *may* fail if fusemail's servers are overloaded and the data
10
+ # has not propagated.
11
+ #
12
+ # If you have any ideas for improving these tests, please feel free to refactor
13
+ # or drop suggestions.
14
+ describe Fusebox::Request do
15
+ before(:all) do
16
+ @fixtures = YAML.load(File.read(File.expand_path('~/.fusemail.yaml')))['spec']
17
+ raise "Integration tests require 'spec' properties defined in ~/.fusemail.yaml" unless @fixtures
18
+
19
+ # These are globals shared between the tests.
20
+ # Is there a more appropriate way to share data between the specs?
21
+ @@spec_domain ||= ActiveSupport::SecureRandom.hex(4) + '.example.com'
22
+ @@secondary_domain ||= ActiveSupport::SecureRandom.hex(4) + '.example.com'
23
+ @@forward ||= ActiveSupport::SecureRandom.hex(4) + "@#{@@spec_domain}"
24
+ @@sleep_duration = 30 # How long the tests should sleep after the initial "order" to allow the data to propagate
25
+ end
26
+
27
+
28
+ describe "commands" do
29
+
30
+ describe "order" do
31
+ it "should not be successful when adding existing account" do
32
+ @response = Fusebox::Request.new.order(:account_type => @fixtures['group_account_type'], :user => 'postmaster@mudbugmedia.com', :password => ActiveSupport::SecureRandom.hex)
33
+ @response.detail.should match('already exists')
34
+ @response.success?.should == false
35
+ end
36
+
37
+ it "should be successful when adding new group account" do
38
+ @response = Fusebox::Request.new.order(:account_type => @fixtures['group_account_type'], :user => "postmaster@#{@@spec_domain}", :password => ActiveSupport::SecureRandom.hex, :first_name => 'fusebox rspec sandbox', :last_name => '(delete me)')
39
+ @response.detail.should match('Order Created Succesfully')
40
+ @response.success?.should == true
41
+ sleep @@sleep_duration # Let fusemail catch up.. hopefully.
42
+ end
43
+
44
+ it "should be successful when adding group subaccounts" do
45
+ @response = Fusebox::Request.new.order(:account_type => 'group_subaccount', :group_parent => "postmaster@#{@@spec_domain}", :user => "user@#{@@spec_domain}", :password => ActiveSupport::SecureRandom.hex, :first_name => 'fusebox rspec sandbox', :last_name => '(delete me)')
46
+ @response.detail.should match('Order Created Succesfully')
47
+ @response.success?.should == true
48
+ end
49
+ end
50
+
51
+ describe "modify" do
52
+ it "should be successful" do
53
+ @response = Fusebox::Request.new.modify(:user => "postmaster@#{@@spec_domain}", :first_name => 'fusebox rspec sandbox modified')
54
+ @response.detail.should match('modification complete')
55
+ @response.success?.should == true
56
+ end
57
+ end
58
+
59
+ describe "report" do
60
+ it "should be return a array of hash results" do
61
+ @response = Fusebox::Request.new.report('user' => "postmaster@#{@@spec_domain}", 'group_subaccount' => 'yes')
62
+ @response.records.should be_instance_of(Array)
63
+ @response.records.first.should be_instance_of(Hash)
64
+ @response.records.map { |r| r[:username] }.should include("postmaster@#{@@spec_domain}")
65
+ @response.success?.should == true
66
+ end
67
+ end
68
+
69
+ describe "adddomain" do
70
+ it "should be successful" do
71
+ @response = Fusebox::Request.new.adddomain(:domain => @@secondary_domain, :user => "postmaster@#{@@spec_domain}")
72
+ @response.detail.should match('Domain was added')
73
+ @response.success?.should == true
74
+ end
75
+ end
76
+
77
+ describe "checkdomain" do
78
+ it "should not be successful for existing domains" do
79
+ @response = Fusebox::Request.new.checkdomain(:domain => @@secondary_domain)
80
+ @response.detail.should match('already exists')
81
+ @response.success?.should == false
82
+ end
83
+
84
+ it "should be successful for new domains" do
85
+ @response = Fusebox::Request.new.checkdomain(:domain => ActiveSupport::SecureRandom.hex(4) + '.example.com')
86
+ @response.detail.should match('Domain is Available')
87
+ @response.success?.should == true
88
+ end
89
+ end
90
+
91
+ describe "removedomain" do
92
+ it "should be successful" do
93
+ @response = Fusebox::Request.new.removedomain(:domain => @@secondary_domain)
94
+ @response.detail.should match('Domain was removed')
95
+ @response.success?.should == true
96
+ end
97
+ end
98
+
99
+
100
+ describe "addforward" do
101
+ it "should be successful" do
102
+ @response = Fusebox::Request.new.addforward(:forward_what => @@forward, :forward_to => "postmaster@#{@@spec_domain}", :user => "postmaster@#{@@spec_domain}")
103
+ @response.detail.should match('Your forwarder has been successfully submitted')
104
+ @response.success?.should == true
105
+ end
106
+ end
107
+
108
+ describe "getforward" do
109
+ it "should be successful for existing forwards" do
110
+ @response = Fusebox::Request.new.getforward(:forward_what => @@forward, :user => "postmaster@#{@@spec_domain}")
111
+ @response.detail.should match("postmaster@#{@@spec_domain}")
112
+ @response.success?.should == true
113
+ end
114
+ end
115
+
116
+ describe "removeforward" do
117
+ it "should be successful" do
118
+ @response = Fusebox::Request.new.removeforward(:forward_what => @@forward, :forward_to => "postmaster@#{@@spec_domain}", :user => "postmaster@#{@@spec_domain}")
119
+ @response.detail.should match('Your forwarder has been successfully removed')
120
+ @response.success?.should == true
121
+ end
122
+ end
123
+
124
+
125
+ describe "checkalias" do
126
+ it "should not be successful for existing aliases" do
127
+ @response = Fusebox::Request.new.checkalias(:alias => "postmaster@#{@@spec_domain}")
128
+ @response.should be_instance_of(Fusebox::Response)
129
+ @response.detail.should match('already taken')
130
+ @response.success?.should == false
131
+ end
132
+
133
+ it "should be successful for new aliases" do
134
+ @response = Fusebox::Request.new.checkalias(:alias => ActiveSupport::SecureRandom.hex + "@#{@@spec_domain}")
135
+ @response.detail.should match('Alias is Available')
136
+ @response.success?.should == true
137
+ end
138
+ end
139
+
140
+ describe "suspend" do
141
+ it "should be successful when suspending existing accounts" do
142
+ @response = Fusebox::Request.new.suspend(:user => "postmaster@#{@@spec_domain}")
143
+ @response.detail.should match('Account Succesfully Suspended')
144
+ @response.success?.should == true
145
+ end
146
+ end
147
+
148
+ describe "enable" do
149
+ it "should be successful when enabling suspended accounts" do
150
+ @response = Fusebox::Request.new.enable(:user => "postmaster@#{@@spec_domain}")
151
+ @response.detail.should match('Account Successfully Enabled')
152
+ @response.success?.should == true
153
+ end
154
+ end
155
+
156
+ describe "terminate" do
157
+ it "should not be successful when purging non-existing accounts" do
158
+ @response = Fusebox::Request.new.terminate(:user => ActiveSupport::SecureRandom.hex + "@#{@@spec_domain}", :purge => true)
159
+ @response.detail.should match('Terminate account failed Could not find user')
160
+ @response.success?.should == false
161
+ end
162
+
163
+ it "should be successful purge existing accounts" do
164
+ @response = Fusebox::Request.new.terminate(:user => "postmaster@#{@@spec_domain}", :purge => true)
165
+ @response.detail.should match('Account Successfully Terminated')
166
+ @response.success?.should == true
167
+ end
168
+ end
169
+
170
+ end
171
+ end
File without changes
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fusebox
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 0
10
- version: 0.2.0
9
+ - 2
10
+ version: 0.2.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Gabe Martin-Dempesy
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-06 00:00:00 -05:00
18
+ date: 2010-10-11 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -79,11 +79,14 @@ files:
79
79
  - lib/fusebox/response.rb
80
80
  - lib/fusebox/version.rb
81
81
  - lib/fusebox.rb
82
+ - spec/fixtures/fusemail.yaml
82
83
  - spec/fusebox_request_spec.rb
83
84
  - spec/fusebox_response_spec.rb
85
+ - spec/integration/integration_spec.rb
84
86
  - spec/net_http_spec.rb
85
87
  - spec/spec.opts
86
88
  - spec/spec_helper.rb
89
+ - vendor/curl-cacert.pem
87
90
  - LICENSE
88
91
  - README.md
89
92
  - bin/fusebox