local_pac 0.0.7 → 0.1.0
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.
- data/Gemfile +2 -0
- data/bin/local_pac +47 -2
- data/features/initializer.feature +23 -0
- data/features/show_config.feature +22 -0
- data/features/support/env.rb +1 -1
- data/files/config.yaml +6 -0
- data/files/git-hook.erb +24 -0
- data/lib/local_pac/actions/create_directory.rb +33 -0
- data/lib/local_pac/actions/create_file.rb +48 -0
- data/lib/local_pac/actions/create_repository.rb +38 -0
- data/lib/local_pac/config.rb +64 -0
- data/lib/local_pac/data.rb +23 -0
- data/lib/local_pac/erb_generator.rb +34 -0
- data/lib/local_pac/exceptions.rb +9 -0
- data/lib/local_pac/file_server.rb +10 -3
- data/lib/local_pac/fileable.rb +12 -0
- data/lib/local_pac/git.rb +63 -0
- data/lib/local_pac/git_file.rb +18 -0
- data/lib/local_pac/git_repository.rb +52 -0
- data/lib/local_pac/initializer.rb +28 -0
- data/lib/local_pac/local_storage.rb +21 -0
- data/lib/local_pac/logger.rb +0 -5
- data/lib/local_pac/main.rb +24 -0
- data/lib/local_pac/pac_file.rb +5 -5
- data/lib/local_pac/runner.rb +29 -0
- data/lib/local_pac/spec_helper_file_server.rb +41 -0
- data/lib/local_pac/template_file.rb +19 -0
- data/lib/local_pac/template_repository.rb +22 -0
- data/lib/local_pac/ui_logger.rb +12 -0
- data/lib/local_pac/version.rb +1 -1
- data/lib/local_pac.rb +30 -4
- data/local_pac.gemspec +1 -0
- data/share/examples/config.yaml +5 -0
- data/spec/actions/create_directory_spec.rb +47 -0
- data/spec/actions/create_file_spec.rb +95 -0
- data/spec/actions/create_repository_spec.rb +47 -0
- data/spec/config_spec.rb +113 -0
- data/spec/data_spec.rb +34 -0
- data/spec/erb_generator_spec.rb +31 -0
- data/spec/features/fetch_proxy_pac_spec.rb +30 -12
- data/spec/git_repository_spec.rb +60 -0
- data/spec/git_spec.rb +100 -0
- data/spec/initializer_spec.rb +29 -0
- data/spec/local_storage_spec.rb +59 -0
- data/spec/pac_file_spec.rb +14 -14
- data/spec/runner_spec.rb +42 -0
- data/spec/support/git.rb +52 -0
- data/spec/support/reporting.rb +1 -0
- data/spec/support/rspec.rb +3 -0
- data/spec/template_file_spec.rb +25 -0
- data/spec/template_repository_spec.rb +44 -0
- metadata +74 -5
- data/lib/local_pac/pac_manager.rb +0 -55
- data/spec/pac_manager_spec.rb +0 -52
data/lib/local_pac/pac_file.rb
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
module LocalPac
|
3
3
|
class PacFile
|
4
|
-
attr_reader :
|
4
|
+
attr_reader :file
|
5
5
|
attr_accessor :compressed_content
|
6
6
|
|
7
|
-
def initialize(
|
8
|
-
@
|
7
|
+
def initialize(file)
|
8
|
+
@file = file
|
9
9
|
end
|
10
10
|
|
11
11
|
def name
|
12
|
-
|
12
|
+
file.name
|
13
13
|
end
|
14
14
|
|
15
15
|
def content
|
16
|
-
|
16
|
+
file.content
|
17
17
|
end
|
18
18
|
|
19
19
|
def nil?
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module LocalPac
|
3
|
+
class Runner
|
4
|
+
private
|
5
|
+
|
6
|
+
attr_reader :command, :stdout
|
7
|
+
|
8
|
+
public
|
9
|
+
|
10
|
+
def initialize(command)
|
11
|
+
@command = command
|
12
|
+
end
|
13
|
+
|
14
|
+
def run
|
15
|
+
stdout, stderr, status = Open3.capture3(command)
|
16
|
+
fail RuntimeError, "Error executing command #{command}: #{stderr}, #{stdout}" unless status.success?
|
17
|
+
|
18
|
+
@stdout = stdout.split("\n")
|
19
|
+
rescue Errno::ENOENT => e
|
20
|
+
fail RuntimeError, "Error executing command #{command}: #{stderr}, #{e.message}"
|
21
|
+
end
|
22
|
+
|
23
|
+
def result
|
24
|
+
$stderr.puts command if LocalPac.debug_mode
|
25
|
+
run
|
26
|
+
stdout
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require_relative File.expand_path('../../../spec/support/git', __FILE__)
|
3
|
+
|
4
|
+
module LocalPac
|
5
|
+
class FileServer
|
6
|
+
class SpecHelperFileServer
|
7
|
+
include LocalPac::SpecHelper::GitHelper
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
LocalPac.ui_logger.level = ::Logger::UNKNOWN
|
11
|
+
|
12
|
+
config = Class.new do
|
13
|
+
include FeduxOrg::Stdlib::Filesystem
|
14
|
+
|
15
|
+
def root_directory
|
16
|
+
File.expand_path('../../../', __FILE__)
|
17
|
+
end
|
18
|
+
|
19
|
+
def local_storage
|
20
|
+
File.join(working_directory, 'git_repo', '.git')
|
21
|
+
end
|
22
|
+
end.new
|
23
|
+
|
24
|
+
LocalPac.config(config)
|
25
|
+
|
26
|
+
valid_pac_file = <<-EOS
|
27
|
+
function FindProxyForURL(url, host) {
|
28
|
+
return "DIRECT";
|
29
|
+
}
|
30
|
+
EOS
|
31
|
+
git_repo = 'git_repo'
|
32
|
+
|
33
|
+
FileUtils.rm_rf File.join(working_directory, git_repo)
|
34
|
+
git_init(git_repo)
|
35
|
+
create_file(File.join(git_repo, 'file.pac'), valid_pac_file)
|
36
|
+
git_add(git_repo, 'file.pac')
|
37
|
+
git_commit(git_repo)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module LocalPac
|
3
|
+
class TemplateRepository
|
4
|
+
private
|
5
|
+
|
6
|
+
attr_reader :root_directory, :creator
|
7
|
+
|
8
|
+
public
|
9
|
+
|
10
|
+
def initialize(root_directory = File.expand_path('../../../files', __FILE__), creator = TemplateFile)
|
11
|
+
@root_directory = root_directory
|
12
|
+
@creator = creator
|
13
|
+
end
|
14
|
+
|
15
|
+
def find(name)
|
16
|
+
path = File.join(root_directory, "#{name.to_s}.erb")
|
17
|
+
fail Exceptions::ErbTemplateIsUnknown, "Template \"#{name}\" could not be found!" unless ::File.exist? path
|
18
|
+
|
19
|
+
creator.new(path)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/local_pac/version.rb
CHANGED
data/lib/local_pac.rb
CHANGED
@@ -3,16 +3,42 @@ require 'fileutils'
|
|
3
3
|
require 'logger'
|
4
4
|
require 'uglifier'
|
5
5
|
require 'pac'
|
6
|
+
require 'pstore'
|
7
|
+
require 'yaml/store'
|
8
|
+
require 'rugged'
|
9
|
+
require 'erb'
|
10
|
+
require 'thread'
|
11
|
+
require 'open3'
|
12
|
+
require 'fedux_org/stdlib/filesystem'
|
6
13
|
|
7
14
|
require 'active_support/cache'
|
15
|
+
require 'active_support/core_ext/string/inflections'
|
8
16
|
|
17
|
+
require 'local_pac/main'
|
9
18
|
require 'local_pac/logger'
|
19
|
+
require 'local_pac/ui_logger'
|
20
|
+
|
21
|
+
LocalPac.ui_logger.level = Logger::UNKNOWN
|
22
|
+
|
23
|
+
require 'local_pac/git'
|
24
|
+
require 'local_pac/git_file'
|
25
|
+
require 'local_pac/git_repository'
|
26
|
+
require 'local_pac/config'
|
27
|
+
require 'local_pac/fileable'
|
28
|
+
require 'local_pac/runner'
|
29
|
+
require 'local_pac/exceptions'
|
30
|
+
require 'local_pac/erb_generator'
|
31
|
+
require 'local_pac/data'
|
10
32
|
require 'local_pac/version'
|
11
|
-
require 'local_pac/file_server'
|
12
|
-
require 'local_pac/pac_manager'
|
13
33
|
require 'local_pac/pac_file'
|
14
34
|
require 'local_pac/null_pac_file'
|
15
35
|
require 'local_pac/java_script_compressor'
|
36
|
+
require 'local_pac/template_repository'
|
37
|
+
require 'local_pac/template_file'
|
16
38
|
require 'local_pac/pac_file_validator'
|
17
|
-
|
18
|
-
|
39
|
+
require 'local_pac/actions/create_repository'
|
40
|
+
require 'local_pac/actions/create_directory'
|
41
|
+
require 'local_pac/actions/create_file'
|
42
|
+
require 'local_pac/initializer'
|
43
|
+
require 'local_pac/local_storage'
|
44
|
+
require 'local_pac/file_server'
|
data/local_pac.gemspec
CHANGED
@@ -0,0 +1,47 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Actions::CreateDirectory do
|
5
|
+
context '#initialize' do
|
6
|
+
it 'requires a path' do
|
7
|
+
Actions::CreateDirectory.new(working_directory)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
context '#run' do
|
12
|
+
it 'runs the action' do
|
13
|
+
action = Actions::CreateDirectory.new(File.join(working_directory, 'repo'))
|
14
|
+
silence(:stderr) do
|
15
|
+
action.run
|
16
|
+
end
|
17
|
+
|
18
|
+
expect(path_exists?('repo')).to be_true
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'respects existing path' do
|
22
|
+
create_directory('repo')
|
23
|
+
|
24
|
+
action = Actions::CreateDirectory.new(File.join(working_directory, 'repo'))
|
25
|
+
|
26
|
+
result = capture(:stderr) do
|
27
|
+
LocalPac.ui_logger.level = ::Logger::INFO
|
28
|
+
action.run
|
29
|
+
end
|
30
|
+
|
31
|
+
expect(result).to include('already')
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'does not respect existing path if forced to' do
|
35
|
+
create_directory('repo')
|
36
|
+
|
37
|
+
action = Actions::CreateDirectory.new(File.join(working_directory, 'repo'), force: true)
|
38
|
+
|
39
|
+
result = capture(:stderr) do
|
40
|
+
LocalPac.ui_logger.level = ::Logger::INFO
|
41
|
+
action.run
|
42
|
+
end
|
43
|
+
|
44
|
+
expect(result).to include('Creating repository')
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Actions::CreateFile do
|
5
|
+
before(:each) do
|
6
|
+
end
|
7
|
+
context '#initialize' do
|
8
|
+
it 'requires a path' do
|
9
|
+
repository = double('TemplateRepository')
|
10
|
+
data = double('Data')
|
11
|
+
|
12
|
+
engine_klass = Class.new do
|
13
|
+
def initialize(data)
|
14
|
+
end
|
15
|
+
|
16
|
+
def compile(template, destination)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
Actions::CreateFile.new(:template, File.join(working_directory, 'file'), {}, data, engine_klass, repository)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context '#run' do
|
25
|
+
it 'runs the action' do
|
26
|
+
repository = double('TemplateRepository')
|
27
|
+
expect(repository).to receive(:find).with(:template)
|
28
|
+
|
29
|
+
data = double('Data')
|
30
|
+
|
31
|
+
engine_klass = Class.new do
|
32
|
+
def initialize(data)
|
33
|
+
end
|
34
|
+
|
35
|
+
def compile(template, destination)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
action = Actions::CreateFile.new(:template, File.join(working_directory, 'file'), data, {}, engine_klass, repository)
|
40
|
+
silence(:stderr) do
|
41
|
+
action.run
|
42
|
+
end
|
43
|
+
|
44
|
+
expect(path_exists?('file')).to be_true
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'respects existing path' do
|
48
|
+
repository = double('TemplateRepository')
|
49
|
+
|
50
|
+
data = double('Data')
|
51
|
+
|
52
|
+
engine_klass = Class.new do
|
53
|
+
def initialize(data)
|
54
|
+
end
|
55
|
+
|
56
|
+
def compile(template, destination)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
file = create_file('file')
|
61
|
+
action = Actions::CreateFile.new(:template, file, data, {}, engine_klass, repository)
|
62
|
+
result = capture(:stderr) do
|
63
|
+
LocalPac.ui_logger.level = ::Logger::INFO
|
64
|
+
action.run
|
65
|
+
end
|
66
|
+
|
67
|
+
expect(result).to include('already')
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'does not respect existing path if forced to' do
|
71
|
+
repository = double('TemplateRepository')
|
72
|
+
expect(repository).to receive(:find).with(:template)
|
73
|
+
|
74
|
+
data = double('Data')
|
75
|
+
|
76
|
+
engine_klass = Class.new do
|
77
|
+
def initialize(data)
|
78
|
+
end
|
79
|
+
|
80
|
+
def compile(template, destination)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
file = create_file('file')
|
85
|
+
action = Actions::CreateFile.new(:template, file, data, { force: true }, engine_klass, repository)
|
86
|
+
|
87
|
+
result = capture(:stderr) do
|
88
|
+
LocalPac.ui_logger.level = ::Logger::INFO
|
89
|
+
action.run
|
90
|
+
end
|
91
|
+
|
92
|
+
expect(result).to include('Creating file')
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Actions::CreateRepository do
|
5
|
+
context '#initialize' do
|
6
|
+
it 'requires a path' do
|
7
|
+
Actions::CreateRepository.new(working_directory)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
context '#run' do
|
12
|
+
it 'runs the action' do
|
13
|
+
action = Actions::CreateRepository.new(File.join(working_directory, 'repo'))
|
14
|
+
silence(:stderr) do
|
15
|
+
action.run
|
16
|
+
end
|
17
|
+
|
18
|
+
expect(path_exists?('repo')).to be_true
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'respects existing path' do
|
22
|
+
create_directory('repo')
|
23
|
+
|
24
|
+
action = Actions::CreateRepository.new(File.join(working_directory, 'repo'))
|
25
|
+
|
26
|
+
result = capture(:stderr) do
|
27
|
+
LocalPac.ui_logger.level = ::Logger::INFO
|
28
|
+
action.run
|
29
|
+
end
|
30
|
+
|
31
|
+
expect(result).to include('already')
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'does not respect existing path if forced to' do
|
35
|
+
create_directory('repo')
|
36
|
+
|
37
|
+
action = Actions::CreateRepository.new(File.join(working_directory, 'repo'), force: true)
|
38
|
+
|
39
|
+
result = capture(:stderr) do
|
40
|
+
LocalPac.ui_logger.level = ::Logger::INFO
|
41
|
+
action.run
|
42
|
+
end
|
43
|
+
|
44
|
+
expect(result).to include('Creating repository')
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/spec/config_spec.rb
ADDED
@@ -0,0 +1,113 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe LocalPac::Config do
|
5
|
+
let(:config_file) { File.join(working_directory, 'config.yaml') }
|
6
|
+
|
7
|
+
context '#initialize' do
|
8
|
+
it 'requires a file name' do
|
9
|
+
LocalPac::Config.new(config_file)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
context '#pid_file' do
|
14
|
+
it 'returns value of config file' do
|
15
|
+
config_file = create_file 'config.yaml', <<-EOS.strip_heredoc
|
16
|
+
---
|
17
|
+
:pid_file: '/asdf/pid'
|
18
|
+
EOS
|
19
|
+
|
20
|
+
config = LocalPac::Config.new(config_file)
|
21
|
+
expect(config.pid_file).to eq('/asdf/pid')
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'returns default value if no config file is available' do
|
25
|
+
config = LocalPac::Config.new(config_file)
|
26
|
+
file = File.join(ENV['HOME'], '.local', 'share', 'local_pac', 'run', 'pid')
|
27
|
+
|
28
|
+
expect(config.pid_file).to eq(file)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context '#local_storage' do
|
33
|
+
it 'returns value of config file' do
|
34
|
+
config_file = create_file 'config.yaml', <<-EOS.strip_heredoc
|
35
|
+
---
|
36
|
+
:local_storage: '/asdf/pid'
|
37
|
+
EOS
|
38
|
+
|
39
|
+
config = LocalPac::Config.new(config_file)
|
40
|
+
expect(config.local_storage).to eq('/asdf/pid')
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'returns default value if no config file is available' do
|
44
|
+
config = LocalPac::Config.new(config_file)
|
45
|
+
file = File.join(ENV['HOME'], '.local', 'share', 'local_pac', 'data')
|
46
|
+
|
47
|
+
expect(config.local_storage).to eq(file)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context '#log_sink' do
|
52
|
+
it 'returns value of config file' do
|
53
|
+
config_file = create_file 'config.yaml', <<-EOS.strip_heredoc
|
54
|
+
---
|
55
|
+
:log_sink: '/asdf/log'
|
56
|
+
EOS
|
57
|
+
|
58
|
+
config = LocalPac::Config.new(config_file)
|
59
|
+
expect(config.log_sink).to eq('/asdf/log')
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'returns default value if no config file is available' do
|
63
|
+
config = LocalPac::Config.new(config_file)
|
64
|
+
file = File.join(ENV['HOME'], '.local', 'share', 'local_pac', 'log')
|
65
|
+
|
66
|
+
expect(config.log_sink).to eq(file)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
context 'executable' do
|
71
|
+
it 'returns value of config file' do
|
72
|
+
config_file = create_file 'config.yaml', <<-EOS.strip_heredoc
|
73
|
+
---
|
74
|
+
:executable: '/asdf/bin/local_pac'
|
75
|
+
EOS
|
76
|
+
|
77
|
+
config = LocalPac::Config.new(config_file)
|
78
|
+
expect(config.executable).to eq('/asdf/bin/local_pac')
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'returns default value if no config file is available' do
|
82
|
+
config = LocalPac::Config.new(config_file)
|
83
|
+
file = File.expand_path('../../bin/local_pac', __FILE__)
|
84
|
+
|
85
|
+
expect(config.executable).to eq(file)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
context 'gem_path' do
|
90
|
+
it 'returns value of gem installation path file' do
|
91
|
+
config_file = create_file 'config.yaml', <<-EOS.strip_heredoc
|
92
|
+
---
|
93
|
+
:gem_path: '/asdf/bin/local_pac'
|
94
|
+
EOS
|
95
|
+
|
96
|
+
config = LocalPac::Config.new(config_file)
|
97
|
+
expect(config.gem_path).to eq('/asdf/bin/local_pac')
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'returns default value if no config file is available' do
|
101
|
+
config = LocalPac::Config.new(config_file)
|
102
|
+
|
103
|
+
expect(config.gem_path).to eq(Gem.path)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
context '#to_s' do
|
108
|
+
it 'outputs a nice config overview' do
|
109
|
+
config = LocalPac::Config.new(config_file)
|
110
|
+
expect(config.to_s).to include File.join('.local', 'share', 'local_pac', 'run', 'pid')
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
data/spec/data_spec.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe LocalPac::Data do
|
5
|
+
context '#instance_binding' do
|
6
|
+
it 'let you lookup variables' do
|
7
|
+
config = Class.new(Module) do
|
8
|
+
def pid_file
|
9
|
+
'/path/pid_file'
|
10
|
+
end
|
11
|
+
end.new
|
12
|
+
|
13
|
+
data = LocalPac::Data.new(config)
|
14
|
+
# rubocop:disable Eval
|
15
|
+
result = eval('lookup("pid_file")', data.instance_binding)
|
16
|
+
# rubocop:enable Eval
|
17
|
+
expect(result).to eq('/path/pid_file')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context '#lookup' do
|
22
|
+
it 'let you lookup variables' do
|
23
|
+
config = Class.new(Module) do
|
24
|
+
def pid_file
|
25
|
+
'/path/pid_file'
|
26
|
+
end
|
27
|
+
end.new
|
28
|
+
|
29
|
+
data = LocalPac::Data.new(config)
|
30
|
+
result = data.lookup('pid_file')
|
31
|
+
expect(result).to eq('/path/pid_file')
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe ErbGenerator do
|
5
|
+
context '#compile' do
|
6
|
+
it 'needs a source and a target' do
|
7
|
+
data = double('binding')
|
8
|
+
allow(data).to receive(:instance_binding) do
|
9
|
+
Class.new do
|
10
|
+
def pid_file
|
11
|
+
'/path/pid_file'
|
12
|
+
end
|
13
|
+
|
14
|
+
def instance_binding
|
15
|
+
binding
|
16
|
+
end
|
17
|
+
end.new.instance_binding
|
18
|
+
end
|
19
|
+
|
20
|
+
source = double('source')
|
21
|
+
allow(source).to receive(:encoding)
|
22
|
+
allow(source).to receive(:read).and_return('Path <%= pid_file %>')
|
23
|
+
|
24
|
+
destination = double('destination')
|
25
|
+
expect(destination).to receive(:puts).with('Path /path/pid_file')
|
26
|
+
|
27
|
+
gen = ErbGenerator.new(data)
|
28
|
+
gen.compile(source, destination)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -2,24 +2,42 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe 'Fetch proxy pac' do
|
4
4
|
context '/v1/pac' do
|
5
|
-
let(:valid_pac_file) do <<-EOS.strip_heredoc
|
5
|
+
let(:valid_pac_file) do <<-EOS.strip_heredoc.chomp
|
6
6
|
function FindProxyForURL(url, host) {
|
7
|
-
return "DIRECT"
|
7
|
+
return "DIRECT";
|
8
8
|
}
|
9
9
|
EOS
|
10
10
|
end
|
11
11
|
|
12
|
-
|
13
|
-
create_file '.config/pacfiles/file1.pac', valid_pac_file
|
12
|
+
let(:git_repo) { 'git_repo' }
|
14
13
|
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
before(:each) do
|
15
|
+
git_init(git_repo)
|
16
|
+
create_file(File.join(git_repo, 'file.pac'), valid_pac_file)
|
17
|
+
git_add(git_repo, 'file.pac')
|
18
|
+
git_commit(git_repo)
|
19
|
+
end
|
18
20
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
21
|
+
def app
|
22
|
+
config = Class.new do
|
23
|
+
include FeduxOrg::Stdlib::Filesystem
|
24
|
+
|
25
|
+
def root_directory
|
26
|
+
File.expand_path('../../../', __FILE__)
|
27
|
+
end
|
28
|
+
|
29
|
+
def local_storage
|
30
|
+
File.join(working_directory, 'git_repo', '.git')
|
31
|
+
end
|
32
|
+
end.new
|
33
|
+
|
34
|
+
LocalPac.config(config)
|
35
|
+
LocalPac::FileServer
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'finds an existing proxy pac' do
|
39
|
+
response = get('/v1/pac/file.pac')
|
40
|
+
expect(response.body).to eq(valid_pac_file)
|
23
41
|
end
|
24
42
|
|
25
43
|
it 'exits with 404 if file does not exist' do
|
@@ -29,7 +47,7 @@ describe 'Fetch proxy pac' do
|
|
29
47
|
|
30
48
|
it 'compresses data for transit if requested' do
|
31
49
|
['deflate','gzip', 'deflate,gzip','gzip,deflate'].each do|compression_method|
|
32
|
-
response = get('/v1/pac/
|
50
|
+
response = get('/v1/pac/file.pac', {}, { 'HTTP_ACCEPT_ENCODING' => compression_method })
|
33
51
|
expect(response.headers['Content-Encoding']).to be
|
34
52
|
end
|
35
53
|
end
|