postfix_admin 0.1.0 → 0.1.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.
- checksums.yaml +7 -0
- data/README.md +15 -0
- data/bin/postfix_admin +1 -5
- data/lib/postfix_admin.rb +4 -0
- data/lib/postfix_admin/base.rb +43 -25
- data/lib/postfix_admin/cli.rb +190 -101
- data/lib/postfix_admin/models.rb +25 -26
- data/lib/postfix_admin/runner.rb +37 -3
- data/lib/postfix_admin/version.rb +1 -1
- data/postfix_admin.gemspec +2 -1
- data/spec/base_spec.rb +21 -4
- data/spec/cli_spec.rb +147 -26
- data/spec/models_spec.rb +10 -0
- data/spec/runner_spec.rb +51 -1
- data/spec/spec_helper.rb +9 -10
- data/spec/tmp/.gitkeep +0 -0
- metadata +45 -25
data/spec/models_spec.rb
CHANGED
@@ -133,4 +133,14 @@ describe PostfixAdmin::Alias do
|
|
133
133
|
Alias.exist?('unknown@unknown.example.com').should === false
|
134
134
|
end
|
135
135
|
end
|
136
|
+
|
137
|
+
describe ".mailbox?" do
|
138
|
+
it "when there is same address in maiboxes returns true" do
|
139
|
+
Alias.find('user@example.com').mailbox?.should === true
|
140
|
+
end
|
141
|
+
|
142
|
+
it "when there is no same address in maiboxes returns false" do
|
143
|
+
Alias.find('alias@example.com').mailbox?.should === false
|
144
|
+
end
|
145
|
+
end
|
136
146
|
end
|
data/spec/runner_spec.rb
CHANGED
@@ -25,7 +25,7 @@ describe PostfixAdmin::Runner do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
it "show the detail of example.com" do
|
28
|
-
capture(:stdout){ Runner.start(["show", "example.com"]) }.should =~ /user@example.com\s+100
|
28
|
+
capture(:stdout){ Runner.start(["show", "example.com"]) }.should =~ /user@example.com\s+100\s+password/
|
29
29
|
end
|
30
30
|
|
31
31
|
it "when no admins, no aliases and no addresses" do
|
@@ -36,6 +36,10 @@ describe PostfixAdmin::Runner do
|
|
36
36
|
out.should =~ /No aliases/
|
37
37
|
end
|
38
38
|
|
39
|
+
it "shows information of an account" do
|
40
|
+
capture(:stdout){ Runner.start(["show", "user@example.com"]) }.should =~ /user@example.com/
|
41
|
+
end
|
42
|
+
|
39
43
|
it "when no domains" do
|
40
44
|
capture(:stdout){ Runner.start(['delete_domain', 'example.com']) }.should =~ EX_DELETED
|
41
45
|
capture(:stdout){ Runner.start(['delete_domain', 'example.org']) }.should =~ EX_DELETED
|
@@ -110,6 +114,10 @@ describe PostfixAdmin::Runner do
|
|
110
114
|
capture(:stdout){ Runner.start(['add_admin', 'admin@example.jp', 'password']) }.should =~ EX_REGISTERED
|
111
115
|
end
|
112
116
|
|
117
|
+
it "can use long password" do
|
118
|
+
capture(:stdout){ Runner.start(['add_admin', 'admin@example.jp', '9c5e77f2da26fc03e9fa9e13ccd77aeb50c85539a4d90b70812715aea9ebda1d']) }.should =~ EX_REGISTERED
|
119
|
+
end
|
120
|
+
|
113
121
|
it "--super option" do
|
114
122
|
capture(:stdout){ Runner.start(['add_admin', 'admin@example.jp', 'password', '--super']) }.should =~ /registered as a super admin/
|
115
123
|
end
|
@@ -119,10 +127,48 @@ describe PostfixAdmin::Runner do
|
|
119
127
|
end
|
120
128
|
end
|
121
129
|
|
130
|
+
describe "edit_domain" do
|
131
|
+
it "when no options, shows usage" do
|
132
|
+
capture(:stderr){ Runner.start(['edit_domain', 'example.com']) }.should =~ /Use one or more options/
|
133
|
+
end
|
134
|
+
|
135
|
+
it "can edit limitations of domain" do
|
136
|
+
capture(:stdout){ Runner.start(['edit_domain', 'example.com', '--aliases', '40', '--mailboxes', '40', '--maxquota', '400']) }.should =~ /Successfully updated/
|
137
|
+
end
|
138
|
+
|
139
|
+
it "aliases options -a, -m, -q" do
|
140
|
+
capture(:stdout){ Runner.start(['edit_domain', 'example.com', '-a', '40', '-m', '40', '-m', '400']) }.should =~ /Successfully updated/
|
141
|
+
end
|
142
|
+
|
143
|
+
it "can not use unknown domain" do
|
144
|
+
capture(:stderr){ Runner.start(['edit_domain', 'unknown.example.com', '--aliases', '40', '--mailboxes', '40', '--maxquota', '400'])}.should =~ /Could not find/
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
describe "edit_account" do
|
149
|
+
it "when no options, shows usage" do
|
150
|
+
capture(:stderr){ Runner.start(['edit_account', 'user@example.com']) }.should =~ /Use one or more options/
|
151
|
+
end
|
152
|
+
|
153
|
+
it "can edit quota limitation" do
|
154
|
+
output = capture(:stdout){ Runner.start(['edit_account', 'user@example.com', '--quota', '50'])}
|
155
|
+
output.should =~ /Successfully updated/
|
156
|
+
output.should =~ /Quota/
|
157
|
+
end
|
158
|
+
|
159
|
+
it "can use alias -q option" do
|
160
|
+
capture(:stdout){ Runner.start(['edit_account', 'user@example.com', '-q', '50'])}.should =~ /Successfully updated/
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
122
164
|
it "add_admin_domain" do
|
123
165
|
capture(:stdout){ Runner.start(['add_admin_domain', 'admin@example.com', 'example.org']) }.should =~ EX_REGISTERED
|
124
166
|
end
|
125
167
|
|
168
|
+
it "delete_admin_domain" do
|
169
|
+
capture(:stdout){ Runner.start(['delete_admin_domain', 'admin@example.com', 'example.com']) }.should =~ EX_DELETED
|
170
|
+
end
|
171
|
+
|
126
172
|
it "delete_admin" do
|
127
173
|
capture(:stdout){ Runner.start(['delete_admin', 'admin@example.com']) }.should =~ EX_DELETED
|
128
174
|
end
|
@@ -132,6 +178,10 @@ describe PostfixAdmin::Runner do
|
|
132
178
|
capture(:stdout){ Runner.start(['delete_account', 'user2@example.com']) }.should =~ EX_DELETED
|
133
179
|
end
|
134
180
|
|
181
|
+
it "add_account can use long passwrod" do
|
182
|
+
capture(:stdout){ Runner.start(['add_account', 'user2@example.com', '9c5e77f2da26fc03e9fa9e13ccd77aeb50c85539a4d90b70812715aea9ebda1d']) }.should =~ EX_REGISTERED
|
183
|
+
end
|
184
|
+
|
135
185
|
it "add and delete methods" do
|
136
186
|
lambda { Runner.start(['add_domain', 'example.net']) }.should_not raise_error
|
137
187
|
Runner.start(['add_admin', 'admin@example.net', 'password'])
|
data/spec/spec_helper.rb
CHANGED
@@ -2,14 +2,8 @@
|
|
2
2
|
$:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
|
3
3
|
|
4
4
|
require 'postfix_admin'
|
5
|
+
require 'postfix_admin/cli'
|
5
6
|
|
6
|
-
module PostfixAdmin
|
7
|
-
class CLI
|
8
|
-
def config_file
|
9
|
-
File.join(File.dirname(__FILE__) , 'postfix_admin.conf')
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
7
|
|
14
8
|
include PostfixAdmin
|
15
9
|
|
@@ -27,7 +21,11 @@ include PostfixAdmin
|
|
27
21
|
# user@example.com
|
28
22
|
#
|
29
23
|
# Alias:
|
30
|
-
# alias@example.com
|
24
|
+
# alias@example.com -> goto@example.jp
|
25
|
+
|
26
|
+
def config_initialize
|
27
|
+
CLI.config_file = File.join(File.dirname(__FILE__) , 'postfix_admin.conf')
|
28
|
+
end
|
31
29
|
|
32
30
|
def db_clear
|
33
31
|
DomainAdmin.all.destroy
|
@@ -90,7 +88,7 @@ def db_initialize
|
|
90
88
|
forward = Alias.new
|
91
89
|
forward.attributes = {
|
92
90
|
:address => 'alias@example.com',
|
93
|
-
:goto => 'example.jp',
|
91
|
+
:goto => 'goto@example.jp',
|
94
92
|
}
|
95
93
|
domain.aliases << forward
|
96
94
|
|
@@ -103,7 +101,7 @@ def db_initialize
|
|
103
101
|
:password => 'password',
|
104
102
|
:name => '',
|
105
103
|
:maildir => path,
|
106
|
-
:quota => 100 *
|
104
|
+
:quota => 100 * KB_TO_MB,
|
107
105
|
# :local_part => user,
|
108
106
|
}
|
109
107
|
domain.mailboxes << mailbox
|
@@ -114,6 +112,7 @@ DataMapper.setup(:default, 'sqlite::memory:')
|
|
114
112
|
DataMapper.finalize
|
115
113
|
DataMapper.auto_migrate!
|
116
114
|
db_initialize
|
115
|
+
config_initialize
|
117
116
|
|
118
117
|
module PostfixAdmin
|
119
118
|
class Base
|
data/spec/tmp/.gitkeep
ADDED
File without changes
|
metadata
CHANGED
@@ -1,78 +1,97 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: postfix_admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Hitoshi Kurokawa
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-05-10 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: thor
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: data_mapper
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: do_mysql
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.10.9
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.10.9
|
46
55
|
- !ruby/object:Gem::Dependency
|
47
56
|
name: dm-mysql-adapter
|
48
57
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
58
|
requirements:
|
51
|
-
- -
|
59
|
+
- - '>='
|
52
60
|
- !ruby/object:Gem::Version
|
53
61
|
version: '0'
|
54
62
|
type: :runtime
|
55
63
|
prerelease: false
|
56
64
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
65
|
requirements:
|
59
|
-
- -
|
66
|
+
- - '>='
|
60
67
|
- !ruby/object:Gem::Version
|
61
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 2.11.0
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 2.11.0
|
62
83
|
- !ruby/object:Gem::Dependency
|
63
84
|
name: dm-sqlite-adapter
|
64
85
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
86
|
requirements:
|
67
|
-
- -
|
87
|
+
- - '>='
|
68
88
|
- !ruby/object:Gem::Version
|
69
89
|
version: '0'
|
70
90
|
type: :development
|
71
91
|
prerelease: false
|
72
92
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
93
|
requirements:
|
75
|
-
- -
|
94
|
+
- - '>='
|
76
95
|
- !ruby/object:Gem::Version
|
77
96
|
version: '0'
|
78
97
|
description: Command Line Tools of PostfixAdmin
|
@@ -104,29 +123,29 @@ files:
|
|
104
123
|
- spec/postfix_test.sql
|
105
124
|
- spec/runner_spec.rb
|
106
125
|
- spec/spec_helper.rb
|
126
|
+
- spec/tmp/.gitkeep
|
107
127
|
homepage: https://github.com/krhitoshi/postfix_admin
|
108
128
|
licenses: []
|
129
|
+
metadata: {}
|
109
130
|
post_install_message:
|
110
131
|
rdoc_options: []
|
111
132
|
require_paths:
|
112
133
|
- lib
|
113
134
|
required_ruby_version: !ruby/object:Gem::Requirement
|
114
|
-
none: false
|
115
135
|
requirements:
|
116
|
-
- -
|
136
|
+
- - '>='
|
117
137
|
- !ruby/object:Gem::Version
|
118
138
|
version: '0'
|
119
139
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
|
-
none: false
|
121
140
|
requirements:
|
122
|
-
- -
|
141
|
+
- - '>='
|
123
142
|
- !ruby/object:Gem::Version
|
124
143
|
version: '0'
|
125
144
|
requirements: []
|
126
145
|
rubyforge_project:
|
127
|
-
rubygems_version:
|
146
|
+
rubygems_version: 2.0.0
|
128
147
|
signing_key:
|
129
|
-
specification_version:
|
148
|
+
specification_version: 4
|
130
149
|
summary: Command Line Tools of PostfixAdmin
|
131
150
|
test_files:
|
132
151
|
- spec/base_spec.rb
|
@@ -136,3 +155,4 @@ test_files:
|
|
136
155
|
- spec/postfix_test.sql
|
137
156
|
- spec/runner_spec.rb
|
138
157
|
- spec/spec_helper.rb
|
158
|
+
- spec/tmp/.gitkeep
|