imap-backup 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,6 +7,7 @@ describe Imap::Backup::Serializer::Directory do
7
7
  context '#initialize' do
8
8
 
9
9
  it 'should fail if download path file permissions are to lax' do
10
+ File.stub!(:exist?).with('/base/path').and_return(true)
10
11
  stat = stub('File::Stat', :mode => 0345)
11
12
  File.should_receive(:stat).with('/base/path').and_return(stat)
12
13
 
@@ -24,6 +25,7 @@ describe Imap::Backup::Serializer::Directory do
24
25
  File.stub!(:stat).with('/base/path').and_return(stat)
25
26
  FileUtils.stub!(:mkdir_p).with('/base/path/my_folder')
26
27
  FileUtils.stub!(:chmod).with(0700, '/base/path/my_folder')
28
+ File.stub!(:exist?).with('/base/path').and_return(true)
27
29
  end
28
30
 
29
31
  subject { Imap::Backup::Serializer::Directory.new('/base/path', 'my_folder') }
@@ -3,15 +3,17 @@ load File.expand_path( '../spec_helper.rb', File.dirname(__FILE__) )
3
3
 
4
4
  describe Imap::Backup::Utils do
5
5
 
6
- include Imap::Backup::Utils
7
-
8
6
  context '#check_permissions' do
9
7
 
8
+ before :each do
9
+ File.stub!(:exist?).and_return(true)
10
+ end
11
+
10
12
  it 'should stat the file' do
11
13
  stat = stub('File::Stat', :mode => 0100)
12
14
  File.should_receive(:stat).with('foobar').and_return(stat)
13
15
 
14
- check_permissions('foobar', 0345)
16
+ Imap::Backup::Utils.check_permissions('foobar', 0345)
15
17
  end
16
18
 
17
19
  it 'should succeed if file permissions are less than limit' do
@@ -19,7 +21,7 @@ describe Imap::Backup::Utils do
19
21
  File.stub!(:stat).and_return(stat)
20
22
 
21
23
  expect do
22
- check_permissions('foobar', 0345)
24
+ Imap::Backup::Utils.check_permissions('foobar', 0345)
23
25
  end.to_not raise_error
24
26
  end
25
27
 
@@ -28,7 +30,7 @@ describe Imap::Backup::Utils do
28
30
  File.stub!(:stat).and_return(stat)
29
31
 
30
32
  expect do
31
- check_permissions('foobar', 0345)
33
+ Imap::Backup::Utils.check_permissions('foobar', 0345)
32
34
  end.to_not raise_error
33
35
  end
34
36
 
@@ -37,7 +39,7 @@ describe Imap::Backup::Utils do
37
39
  File.stub!(:stat).and_return(stat)
38
40
 
39
41
  expect do
40
- check_permissions('foobar', 0345)
42
+ Imap::Backup::Utils.check_permissions('foobar', 0345)
41
43
  end.to raise_error(RuntimeError, "Permissions on 'foobar' should be 0345, not 0777")
42
44
  end
43
45
 
@@ -48,7 +50,7 @@ describe Imap::Backup::Utils do
48
50
  it 'should do nothing if an empty path is supplied' do
49
51
  FileUtils.should_not_receive(:mkdir_p)
50
52
 
51
- make_folder('aaa', '', 0222)
53
+ Imap::Backup::Utils.make_folder('aaa', '', 0222)
52
54
  end
53
55
 
54
56
  it 'should create the path' do
@@ -56,7 +58,7 @@ describe Imap::Backup::Utils do
56
58
 
57
59
  FileUtils.should_receive(:mkdir_p).with('/base/path/new/folder')
58
60
 
59
- make_folder('/base/path', 'new/folder', 0222)
61
+ Imap::Backup::Utils.make_folder('/base/path', 'new/folder', 0222)
60
62
  end
61
63
 
62
64
  it 'should set permissions on the path' do
@@ -64,7 +66,7 @@ describe Imap::Backup::Utils do
64
66
 
65
67
  FileUtils.should_receive(:chmod).with(0222, '/base/path/new')
66
68
 
67
- make_folder('/base/path', 'new/folder', 0222)
69
+ Imap::Backup::Utils.make_folder('/base/path', 'new/folder', 0222)
68
70
  end
69
71
 
70
72
  end
metadata CHANGED
@@ -1,119 +1,120 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: imap-backup
3
- version: !ruby/object:Gem::Version
4
- hash: 25
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 3
10
- version: 0.0.3
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Joe Yates
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-06-12 00:00:00 +01:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- requirement: &id001 !ruby/object:Gem::Requirement
23
- none: false
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- hash: 3
28
- segments:
29
- - 0
30
- version: "0"
31
- version_requirements: *id001
12
+ date: 2012-06-20 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
32
15
  name: rake
33
- prerelease: false
34
- type: :runtime
35
- - !ruby/object:Gem::Dependency
36
- requirement: &id002 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
37
17
  none: false
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- hash: 3
42
- segments:
43
- - 0
44
- version: "0"
45
- version_requirements: *id002
46
- name: json
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
47
23
  prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: highline
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
48
38
  type: :runtime
49
- - !ruby/object:Gem::Dependency
50
- requirement: &id003 !ruby/object:Gem::Requirement
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
51
41
  none: false
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- hash: 3
56
- segments:
57
- - 0
58
- version: "0"
59
- version_requirements: *id003
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
60
47
  name: pry
61
- prerelease: false
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
62
54
  type: :development
63
- - !ruby/object:Gem::Dependency
64
- requirement: &id004 !ruby/object:Gem::Requirement
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
65
57
  none: false
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- hash: 3
70
- segments:
71
- - 0
72
- version: "0"
73
- version_requirements: *id004
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
74
63
  name: pry-doc
75
- prerelease: false
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
76
70
  type: :development
77
- - !ruby/object:Gem::Dependency
78
- requirement: &id005 !ruby/object:Gem::Requirement
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
79
73
  none: false
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- hash: 3
84
- segments:
85
- - 2
86
- - 3
87
- - 0
88
- version: 2.3.0
89
- version_requirements: *id005
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
90
79
  name: rspec
91
- prerelease: false
92
- type: :development
93
- - !ruby/object:Gem::Dependency
94
- requirement: &id006 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
95
81
  none: false
96
- requirements:
97
- - - ">="
98
- - !ruby/object:Gem::Version
99
- hash: 3
100
- segments:
101
- - 0
102
- version: "0"
103
- version_requirements: *id006
104
- name: rcov
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: 2.3.0
86
+ type: :development
105
87
  prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 2.3.0
94
+ - !ruby/object:Gem::Dependency
95
+ name: simplecov
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
106
102
  type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
107
110
  description: Backup GMail, or any other IMAP email service, to disk.
108
- email:
111
+ email:
109
112
  - joe.g.yates@gmail.com
110
- executables:
113
+ executables:
111
114
  - imap-backup
112
115
  extensions: []
113
-
114
116
  extra_rdoc_files: []
115
-
116
- files:
117
+ files:
117
118
  - .gitignore
118
119
  - .travis.yml
119
120
  - Gemfile
@@ -125,59 +126,74 @@ files:
125
126
  - lib/imap/backup.rb
126
127
  - lib/imap/backup/account/connection.rb
127
128
  - lib/imap/backup/account/folder.rb
129
+ - lib/imap/backup/configuration/account.rb
130
+ - lib/imap/backup/configuration/asker.rb
131
+ - lib/imap/backup/configuration/connection_tester.rb
132
+ - lib/imap/backup/configuration/folder_chooser.rb
133
+ - lib/imap/backup/configuration/list.rb
134
+ - lib/imap/backup/configuration/setup.rb
135
+ - lib/imap/backup/configuration/store.rb
128
136
  - lib/imap/backup/downloader.rb
129
137
  - lib/imap/backup/serializer/directory.rb
130
- - lib/imap/backup/settings.rb
131
138
  - lib/imap/backup/utils.rb
132
139
  - lib/imap/backup/version.rb
133
140
  - spec/gather_rspec_coverage.rb
134
141
  - spec/spec_helper.rb
135
142
  - spec/unit/account/connection_spec.rb
136
143
  - spec/unit/account/folder_spec.rb
144
+ - spec/unit/configuration/account_spec.rb
145
+ - spec/unit/configuration/asker_spec.rb
146
+ - spec/unit/configuration/connection_tester_spec.rb
147
+ - spec/unit/configuration/folder_chooser_spec.rb
148
+ - spec/unit/configuration/list_spec.rb
149
+ - spec/unit/configuration/setup_spec.rb
150
+ - spec/unit/configuration/store_spec.rb
137
151
  - spec/unit/downloader_spec.rb
138
152
  - spec/unit/serializer/directory_spec.rb
139
- - spec/unit/settings_spec.rb
140
153
  - spec/unit/utils_spec.rb
141
- has_rdoc: true
142
154
  homepage: https://github.com/joeyates/imap-backup
143
155
  licenses: []
144
-
145
156
  post_install_message:
146
157
  rdoc_options: []
147
-
148
- require_paths:
158
+ require_paths:
149
159
  - lib
150
- required_ruby_version: !ruby/object:Gem::Requirement
160
+ required_ruby_version: !ruby/object:Gem::Requirement
151
161
  none: false
152
- requirements:
153
- - - ">="
154
- - !ruby/object:Gem::Version
155
- hash: 3
156
- segments:
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ segments:
157
167
  - 0
158
- version: "0"
159
- required_rubygems_version: !ruby/object:Gem::Requirement
168
+ hash: 1194066517873683688
169
+ required_rubygems_version: !ruby/object:Gem::Requirement
160
170
  none: false
161
- requirements:
162
- - - ">="
163
- - !ruby/object:Gem::Version
164
- hash: 3
165
- segments:
171
+ requirements:
172
+ - - ! '>='
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ segments:
166
176
  - 0
167
- version: "0"
177
+ hash: 1194066517873683688
168
178
  requirements: []
169
-
170
179
  rubyforge_project:
171
- rubygems_version: 1.6.2
180
+ rubygems_version: 1.8.23
172
181
  signing_key:
173
182
  specification_version: 3
174
183
  summary: Backup GMail (or other IMAP) accounts to disk
175
- test_files:
184
+ test_files:
176
185
  - spec/gather_rspec_coverage.rb
177
186
  - spec/spec_helper.rb
178
187
  - spec/unit/account/connection_spec.rb
179
188
  - spec/unit/account/folder_spec.rb
189
+ - spec/unit/configuration/account_spec.rb
190
+ - spec/unit/configuration/asker_spec.rb
191
+ - spec/unit/configuration/connection_tester_spec.rb
192
+ - spec/unit/configuration/folder_chooser_spec.rb
193
+ - spec/unit/configuration/list_spec.rb
194
+ - spec/unit/configuration/setup_spec.rb
195
+ - spec/unit/configuration/store_spec.rb
180
196
  - spec/unit/downloader_spec.rb
181
197
  - spec/unit/serializer/directory_spec.rb
182
- - spec/unit/settings_spec.rb
183
198
  - spec/unit/utils_spec.rb
199
+ has_rdoc:
@@ -1,35 +0,0 @@
1
- require 'json'
2
-
3
- module Imap
4
- module Backup
5
-
6
- class Settings
7
-
8
- include Imap::Backup::Utils
9
-
10
- attr_reader :accounts
11
-
12
- def initialize(accounts = nil)
13
- config_pathname = File.expand_path('~/.imap-backup/config.json')
14
- raise "Configuration file '#{config_pathname}' not found" if ! File.exist?(config_pathname)
15
- check_permissions(config_pathname, 0600)
16
- @settings = JSON.parse(File.read(config_pathname), :symbolize_names => true)
17
- if accounts.nil?
18
- @accounts = @settings[:accounts]
19
- else
20
- @accounts = @settings[:accounts].select{ |account| accounts.include?(account[:username]) }
21
- end
22
- end
23
-
24
- def each_connection
25
- @accounts.each do |account|
26
- connection = Imap::Backup::Account::Connection.new(account)
27
- yield connection
28
- connection.disconnect
29
- end
30
- end
31
-
32
- end
33
- end
34
- end
35
-
@@ -1,109 +0,0 @@
1
- # encoding: utf-8
2
- load File.expand_path( '../spec_helper.rb', File.dirname(__FILE__) )
3
-
4
- describe Imap::Backup::Settings do
5
-
6
- before :each do
7
- @settings = {
8
- :accounts => [
9
- {
10
- :username => 'a1@example.com'
11
- },
12
- {
13
- :username => 'a2@example.com',
14
- },
15
- ]
16
- }
17
- File.stub!(:exist?).and_return(true)
18
- stat = stub('File::Stat', :mode => 0600)
19
- File.stub!(:stat).and_return(stat)
20
- File.stub!(:read)
21
- JSON.stub!(:parse).and_return(@settings)
22
- end
23
-
24
- context '#initialize' do
25
-
26
- it 'should fail if the config file is missing' do
27
- File.should_receive(:exist?).and_return(false)
28
-
29
- expect do
30
- Imap::Backup::Settings.new
31
- end.to raise_error(RuntimeError, /not found/)
32
- end
33
-
34
- it 'should fail if the config file permissions are too lax' do
35
- File.stub!(:exist?).and_return(true)
36
-
37
- stat = stub('File::Stat', :mode => 0644)
38
- File.should_receive(:stat).and_return(stat)
39
-
40
- expect do
41
- Imap::Backup::Settings.new
42
- end.to raise_error(RuntimeError, /Permissions.*?should be 0600/)
43
- end
44
-
45
- it 'should load the config file' do
46
- File.stub!(:exist?).and_return(true)
47
-
48
- stat = stub('File::Stat', :mode => 0600)
49
- File.stub!(:stat).and_return(stat)
50
-
51
- configuration = 'JSON string'
52
- File.should_receive(:read).with(%r{/.imap-backup/config.json}).and_return(configuration)
53
- JSON.should_receive(:parse).with(configuration, :symbolize_names => true)
54
-
55
- Imap::Backup::Settings.new
56
- end
57
-
58
- context 'with account parameter' do
59
- it 'should only create requested accounts' do
60
- settings = Imap::Backup::Settings.new(['a2@example.com'])
61
-
62
- settings.accounts.should == @settings[:accounts][1..1]
63
- end
64
- end
65
-
66
- end
67
-
68
- context 'instance methods' do
69
-
70
- before :each do
71
- @connection = stub('Imap::Backup::Account::Connection', :disconnect => nil)
72
- end
73
-
74
- subject { Imap::Backup::Settings.new }
75
-
76
- context '#each_connection' do
77
-
78
- it 'should instantiate connections' do
79
- Imap::Backup::Account::Connection.should_receive(:new).with(@settings[:accounts][0]).and_return(@connection)
80
- Imap::Backup::Account::Connection.should_receive(:new).with(@settings[:accounts][1]).and_return(@connection)
81
-
82
- subject.each_connection{}
83
- end
84
-
85
- it 'should call the block' do
86
- Imap::Backup::Account::Connection.stub!(:new).and_return(@connection)
87
- calls = 0
88
-
89
- subject.each_connection do |a|
90
- calls += 1
91
- a.should == @connection
92
- end
93
- calls.should == 2
94
- end
95
-
96
- it 'should disconnect connections' do
97
- Imap::Backup::Account::Connection.stub!(:new).and_return(@connection)
98
-
99
- @connection.should_receive(:disconnect)
100
-
101
- subject.each_connection {}
102
- end
103
-
104
- end
105
-
106
- end
107
-
108
- end
109
-