proxy_tester 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. data/.gitignore +22 -0
  2. data/.rdebugrc +7 -0
  3. data/.rspec +3 -0
  4. data/.simplecov +8 -0
  5. data/Gemfile +37 -0
  6. data/Gemfile.lock +199 -0
  7. data/LICENSE.txt +22 -0
  8. data/Procfile +1 -0
  9. data/README.md +582 -0
  10. data/Rakefile +64 -0
  11. data/bin/proxy_tester +11 -0
  12. data/db/migrate/20140314_create_environment.rb +8 -0
  13. data/files/config.yaml +1 -0
  14. data/files/example-config.erb +12 -0
  15. data/files/example-spec_helper.rb.erb +23 -0
  16. data/files/example-test_case.rb.erb +27 -0
  17. data/files/example-test_cases-gemfile.rb.erb +9 -0
  18. data/files/example-user_file.erb +4 -0
  19. data/lib/proxy_tester/actions/add_examples_to_test_cases_directory.rb +125 -0
  20. data/lib/proxy_tester/actions/clone_repository.rb +39 -0
  21. data/lib/proxy_tester/actions/create_directory.rb +33 -0
  22. data/lib/proxy_tester/actions/create_file.rb +55 -0
  23. data/lib/proxy_tester/actions/create_output.rb +36 -0
  24. data/lib/proxy_tester/actions/handle_error.rb +37 -0
  25. data/lib/proxy_tester/actions/initialize_application.rb +70 -0
  26. data/lib/proxy_tester/actions/show_config.rb +10 -0
  27. data/lib/proxy_tester/capybara_proxy.rb +54 -0
  28. data/lib/proxy_tester/capybara_proxy_pac.rb +62 -0
  29. data/lib/proxy_tester/cli/main.rb +59 -0
  30. data/lib/proxy_tester/config.rb +100 -0
  31. data/lib/proxy_tester/data.rb +23 -0
  32. data/lib/proxy_tester/database_session.rb +15 -0
  33. data/lib/proxy_tester/environment.rb +21 -0
  34. data/lib/proxy_tester/erb_generator.rb +34 -0
  35. data/lib/proxy_tester/error_handler.rb +107 -0
  36. data/lib/proxy_tester/error_messages.rb +82 -0
  37. data/lib/proxy_tester/exceptions.rb +53 -0
  38. data/lib/proxy_tester/git_file.rb +31 -0
  39. data/lib/proxy_tester/git_null_file.rb +32 -0
  40. data/lib/proxy_tester/git_repository.rb +120 -0
  41. data/lib/proxy_tester/handle_error.rb +37 -0
  42. data/lib/proxy_tester/locales/en-rails.yml +205 -0
  43. data/lib/proxy_tester/locales/en.yml +42 -0
  44. data/lib/proxy_tester/main.rb +46 -0
  45. data/lib/proxy_tester/models/user.rb +17 -0
  46. data/lib/proxy_tester/pac_result.rb +50 -0
  47. data/lib/proxy_tester/rspec/helper.rb +211 -0
  48. data/lib/proxy_tester/rspec_runner.rb +43 -0
  49. data/lib/proxy_tester/template_file.rb +19 -0
  50. data/lib/proxy_tester/template_repository.rb +22 -0
  51. data/lib/proxy_tester/ui_logger.rb +30 -0
  52. data/lib/proxy_tester/user_database.rb +24 -0
  53. data/lib/proxy_tester/version.rb +3 -0
  54. data/lib/proxy_tester.rb +54 -0
  55. data/proxy_tester.gemspec +34 -0
  56. data/script/acceptance_test +4 -0
  57. data/script/bootstrap +56 -0
  58. data/script/ci +3 -0
  59. data/script/console +14 -0
  60. data/script/release +3 -0
  61. data/script/test_web +22 -0
  62. data/script/unit_test +3 -0
  63. data/spec/actions/add_examples_to_test_cases_directory_spec.rb +52 -0
  64. data/spec/actions/clone_repository_spec.rb +83 -0
  65. data/spec/actions/create_directory_spec.rb +59 -0
  66. data/spec/actions/create_file_spec.rb +139 -0
  67. data/spec/actions/create_output_spec.rb +46 -0
  68. data/spec/actions/handle_error_spec.rb +74 -0
  69. data/spec/actions/initialize_application_spec.rb +40 -0
  70. data/spec/actions/show_config_spec.rb +22 -0
  71. data/spec/capybara_proxy_pac_spec.rb +42 -0
  72. data/spec/capybara_proxy_spec.rb +76 -0
  73. data/spec/config_spec.rb +86 -0
  74. data/spec/data_spec.rb +34 -0
  75. data/spec/environment_spec.rb +25 -0
  76. data/spec/erb_generator_spec.rb +31 -0
  77. data/spec/examples/proxy.pac +7 -0
  78. data/spec/factories.rb +8 -0
  79. data/spec/features/check_ssl_sites_spec.rb +8 -0
  80. data/spec/git_file_spec.rb +46 -0
  81. data/spec/git_repository_spec.rb +111 -0
  82. data/spec/main_spec.rb +25 -0
  83. data/spec/pac_result_spec.rb +20 -0
  84. data/spec/proxy_tester_spec_helper_spec.rb +137 -0
  85. data/spec/rspec_runner_spec.rb +29 -0
  86. data/spec/spec_helper.rb +15 -0
  87. data/spec/support/capybara.rb +11 -0
  88. data/spec/support/database_cleaner.rb +14 -0
  89. data/spec/support/debugging.rb +3 -0
  90. data/spec/support/environment.rb +33 -0
  91. data/spec/support/example.rb +16 -0
  92. data/spec/support/factory_girl.rb +15 -0
  93. data/spec/support/filesystem.rb +19 -0
  94. data/spec/support/helper_features.rb +31 -0
  95. data/spec/support/matcher.rb +17 -0
  96. data/spec/support/reporting.rb +1 -0
  97. data/spec/support/rspec.rb +5 -0
  98. data/spec/support/string.rb +2 -0
  99. data/spec/template_file_spec.rb +25 -0
  100. data/spec/template_repository_spec.rb +44 -0
  101. data/spec/user_database_spec.rb +63 -0
  102. data/spec/user_spec.rb +62 -0
  103. metadata +398 -0
@@ -0,0 +1,40 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Actions::InitializeApplication do
5
+ context '#run' do
6
+ it 'creates all files/directories neccessary to run local_pac' do
7
+ config_string = <<-EOS.strip_heredoc
8
+ :user_file: #{File.join(working_directory, 'config', 'user_file.csv')}
9
+ :config_file: #{File.join(working_directory, 'config', 'config.yaml')}
10
+ :test_cases_directory: #{File.join(working_directory, 'test_cases.d')}
11
+ :examples_directory: #{File.join(working_directory, 'test_cases.d/examples')}
12
+ EOS
13
+
14
+ config_file = create_file('config_spec.yaml', config_string)
15
+
16
+ config = ProxyTester::Config.new(config_file)
17
+
18
+ initializer = Actions::InitializeApplication.new({
19
+ create_user_file: true,
20
+ create_config_file: true,
21
+ create_test_cases_directory: true,
22
+ pre_seed: true
23
+ }, config)
24
+
25
+ result = capture(:stdout) do
26
+ silence(:stderr) do
27
+ initializer.run
28
+ end
29
+ end
30
+
31
+ expect(path_exists?('config/user_file.csv')).to be_true
32
+ expect(path_exists?('config/config.yaml')).to be_true
33
+ expect(path_exists?('test_cases.d')).to be_true
34
+ expect(path_exists?('test_cases.d/examples/support')).to be_true
35
+ expect(path_exists?('test_cases.d/examples/example_spec.rb')).to be_true
36
+ expect(path_exists?('test_cases.d/examples/spec_helper.rb')).to be_true
37
+ expect(result).to include('config_file:')
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,22 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Actions::ShowConfig do
5
+ context '#initialize' do
6
+ it 'has no special requirements' do
7
+ expect {
8
+ Actions::ShowConfig.new
9
+ }.not_to raise_error
10
+ end
11
+ end
12
+
13
+ context '#run' do
14
+ it 'gathers all relevant information and prints them to stdout' do
15
+ result = capture(:stdout) do
16
+ Actions::ShowConfig.new.run
17
+ end
18
+
19
+ expect(result).to include('user_file')
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,42 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe CapybaraProxyPac do
5
+ let(:valid_pac_file1) do <<-EOS.strip_heredoc.chomp
6
+ function FindProxyForURL(url, host) {
7
+ return "PROXY localhost:3128";
8
+ }
9
+ EOS
10
+ end
11
+
12
+ context 'all' do
13
+ it 'handles exceptions for file not found' do
14
+ pac = CapybaraProxyPac.new
15
+ expect { pac.pac_file = 'asdf' }.to raise_error Exceptions::PacFileNotFound
16
+ end
17
+ end
18
+
19
+ context '#host' do
20
+ it 'returns host for url' do
21
+ file = create_file 'proxy.pac', valid_pac_file1
22
+
23
+ pac = CapybaraProxyPac.new
24
+ pac.pac_file = file
25
+ pac.url = 'http://www.heise.de'
26
+
27
+ expect(pac.host).to eq('localhost')
28
+ end
29
+ end
30
+
31
+ context '#port' do
32
+ it 'returns port for url' do
33
+ file = create_file 'proxy.pac', valid_pac_file1
34
+
35
+ pac = CapybaraProxyPac.new
36
+ pac.pac_file = file
37
+ pac.url = 'http://www.heise.de'
38
+
39
+ expect(pac.port).to eq('3128')
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,76 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe CapybaraProxy do
5
+ context '#initialize' do
6
+ it 'accepts no arguments' do
7
+ expect {
8
+ CapybaraProxy.new
9
+ }.not_to raise_error
10
+ end
11
+ end
12
+
13
+ context '#type=' do
14
+ it 'sets the proxy type to none' do
15
+ proxy = CapybaraProxy.new
16
+ proxy.type = :none
17
+
18
+ expect(proxy.type).to eq 'none'
19
+ end
20
+
21
+ it 'sets the proxy type to http' do
22
+ proxy = CapybaraProxy.new
23
+ proxy.type = :http
24
+
25
+ expect(proxy.type).to eq 'http'
26
+ end
27
+
28
+ it 'sets the proxy type socks5' do
29
+ proxy = CapybaraProxy.new
30
+ proxy.type = :socks5
31
+
32
+ expect(proxy.type).to eq 'socks5'
33
+ end
34
+
35
+ it 'raises an exception for invalid proxy type' do
36
+ proxy = CapybaraProxy.new
37
+ expect {
38
+ proxy.type = :asdf
39
+ }.to raise_error Exceptions::ProxyTypeInvalid
40
+ end
41
+
42
+ it 'results in an phantomjs argument' do
43
+ proxy = CapybaraProxy.new
44
+ proxy.host = 'host'
45
+ proxy.port = 3128
46
+ proxy.type = :socks5
47
+
48
+ expect(proxy.as_phantomjs_arguments).to eq(
49
+ [
50
+ '--proxy=host:3128',
51
+ '--proxy-type=socks5',
52
+ ]
53
+ )
54
+ end
55
+ end
56
+
57
+ context '#to_a' do
58
+ it 'accepts no arguments' do
59
+ proxy = CapybaraProxy.new
60
+ proxy.host = 'host'
61
+ proxy.port = 3128
62
+
63
+ proxy.user = double('user')
64
+ allow(proxy.user).to receive(:to_string).and_return('user:password')
65
+
66
+ expect(proxy.as_phantomjs_arguments).to eq(
67
+ [
68
+ '--proxy=host:3128',
69
+ '--proxy-auth=user:password',
70
+ ]
71
+ )
72
+
73
+ end
74
+ end
75
+
76
+ end
@@ -0,0 +1,86 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe ProxyTester::Config do
5
+ let(:config_file) { create_file('config_.yaml') }
6
+
7
+ context '#initialize' do
8
+ it 'requires a file name' do
9
+ ProxyTester::Config.new(config_file)
10
+ end
11
+ end
12
+
13
+ context '#to_s' do
14
+ it 'outputs a nice config overview' do
15
+ config = ProxyTester::Config.new(config_file)
16
+ expect(config.to_s).to include ::File.join('.config', 'proxy_tester', 'config.yaml')
17
+ end
18
+ end
19
+
20
+ context '#lock' do
21
+ it 'raises and exception if changed afterward' do
22
+ config = ProxyTester::Config.new(config_file)
23
+ config.lock
24
+
25
+ expect {
26
+ config.config_file = 'asdf'
27
+ }.to raise_error Exceptions::ConfigLocked
28
+ end
29
+ end
30
+
31
+ context '#config_file' do
32
+ it 'returns value of config file' do
33
+ config_file = create_file 'config.yaml', <<-EOS.strip_heredoc
34
+ ---
35
+ :config_file: '/asdf/config'
36
+ EOS
37
+
38
+ config = ProxyTester::Config.new(config_file)
39
+ expect(config.config_file).to eq('/asdf/config')
40
+ end
41
+
42
+ it 'returns default value if no config file is available' do
43
+ config = ProxyTester::Config.new(config_file)
44
+ file = ::File.join(ENV['HOME'], '.config', 'proxy_tester','config.yaml')
45
+
46
+ expect(config.config_file).to eq(file)
47
+ end
48
+ end
49
+
50
+ context '#user_file' do
51
+ it 'returns value of user file' do
52
+ config_file = create_file 'user.csv', <<-EOS.strip_heredoc
53
+ :user_file: '/asdf/user'
54
+ EOS
55
+
56
+ config = ProxyTester::Config.new(config_file)
57
+ expect(config.user_file).to eq('/asdf/user')
58
+ end
59
+
60
+ it 'returns default value if no user file is available' do
61
+ config = ProxyTester::Config.new(config_file)
62
+ file = ::File.join(ENV['HOME'], '.config', 'proxy_tester','user.csv')
63
+
64
+ expect(config.user_file).to eq(file)
65
+ end
66
+ end
67
+
68
+ context '#test_cases_directory' do
69
+ it 'returns value of user file' do
70
+ config_file = create_file 'user.csv', <<-EOS.strip_heredoc
71
+ :test_cases_directory: '/asdf/cases'
72
+ EOS
73
+
74
+ config = ProxyTester::Config.new(config_file)
75
+ expect(config.test_cases_directory).to eq('/asdf/cases')
76
+ end
77
+
78
+ it 'returns default value if no user file is available' do
79
+ config = ProxyTester::Config.new(config_file)
80
+ file = ::File.join(ENV['HOME'], '.config', 'proxy_tester','test_cases.d')
81
+
82
+ expect(config.test_cases_directory).to eq(file)
83
+ end
84
+ end
85
+
86
+ end
data/spec/data_spec.rb ADDED
@@ -0,0 +1,34 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe ProxyTester::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 = ProxyTester::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 = ProxyTester::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,25 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Environment do
5
+ context '#initialize' do
6
+ it 'requires no arguments' do
7
+ expect {
8
+ Environment.new
9
+ }.not_to raise_error
10
+ end
11
+ end
12
+
13
+ context '#request_password' do
14
+ it 'asks for password' do
15
+ stderr = double(stderr)
16
+ expect(stderr).to receive(:printf).with('Please enter password: ')
17
+
18
+ stdin = double('stdin')
19
+ expect(stdin).to receive(:readline).and_return('passwd')
20
+
21
+ env = Environment.new(stdin, stderr)
22
+ expect(env.password).to eq('passwd')
23
+ end
24
+ end
25
+ 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
@@ -0,0 +1,7 @@
1
+ function FindProxyForURL(url, host) {
2
+ if (url == "http://example.com") {
3
+ return "PROXY localhost2:8080";
4
+ } else {
5
+ return "DIRECT";
6
+ }
7
+ }
data/spec/factories.rb ADDED
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+
3
+ FactoryGirl.define do
4
+ factory :user do
5
+ name 'user'
6
+ password 'pw'
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe 'Check ssl sites' do
5
+ it 'works with www.heise.de' do
6
+
7
+ end
8
+ end
@@ -0,0 +1,46 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe GitFile do
5
+ context 'initialize' do
6
+ it 'requires a path' do
7
+ expect {
8
+ GitFile.new('dir/path.txt')
9
+ }.not_to raise_error
10
+ end
11
+
12
+ it 'accepts content' do
13
+ expect {
14
+ GitFile.new('dir/path.txt', 'content')
15
+ }.not_to raise_error
16
+ end
17
+ end
18
+
19
+ context '#name' do
20
+ it 'has a name' do
21
+ file = GitFile.new('file.txt')
22
+ expect(file.name).to eq(:file)
23
+ end
24
+ end
25
+
26
+ context '#extension?' do
27
+ it 'checks if extension is the same' do
28
+ file = GitFile.new('path.txt')
29
+ expect(file).to be_extension('.txt')
30
+ end
31
+ end
32
+
33
+ context '#content' do
34
+ it 'returns the content of file' do
35
+ file = GitFile.new('file.txt', 'content')
36
+ expect(file.content).to eq('content')
37
+ end
38
+ end
39
+
40
+ context '#nil?' do
41
+ it 'is always false' do
42
+ file = GitFile.new('file.txt')
43
+ expect(file.nil?).to be_false
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,111 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe GitRepository do
5
+ context '#initialize' do
6
+ it 'requires a storage path' do
7
+ file_creator = double('file_creator')
8
+ null_file = double('null_file')
9
+
10
+ Rugged::Repository.init_at(File.join(working_directory, 'git_repo'))
11
+
12
+ expect {
13
+ GitRepository.new(File.join(working_directory, 'git_repo'), file_creator, null_file)
14
+ }.not_to raise_error
15
+ end
16
+ end
17
+
18
+ context '#find_file' do
19
+ it 'returns a file if exists in repository' do
20
+ repo_path = File.join(working_directory, 'git_repo')
21
+ Rugged::Repository.init_at(repo_path)
22
+
23
+ file = double('file')
24
+ allow(file).to receive(:name).and_return(:file)
25
+
26
+ file_creator = double('file_creator')
27
+ allow(file_creator).to receive(:new).with('file.txt', 'asdf').and_return(file)
28
+
29
+ null_file = double('null_file')
30
+
31
+ repo = GitRepository.new(repo_path, file_creator, null_file)
32
+ repo.add_content('file.txt', 'asdf')
33
+ f = repo.find_file(:file)
34
+
35
+ expect(f).to be(file)
36
+ end
37
+
38
+ it 'returns a null file if does not exist in repository' do
39
+ repo_path = File.join(working_directory, 'git_repo')
40
+ Rugged::Repository.init_at(repo_path)
41
+
42
+ file_creator = double('file_creator')
43
+ null_file = double('null_file')
44
+
45
+ repo = GitRepository.new(repo_path, file_creator, null_file)
46
+ f = repo.find_file(:file)
47
+
48
+ expect(f).to be(null_file)
49
+ end
50
+
51
+ it 'handles uninitialized repositories' do
52
+ repo_path = File.join(working_directory, 'git_repo')
53
+ Rugged::Repository.init_at(repo_path)
54
+
55
+ file_creator = double('file_creator')
56
+ null_file = double('null_file')
57
+
58
+ repo = GitRepository.new(repo_path, file_creator, null_file)
59
+ f = repo.find_file(:file)
60
+
61
+ expect(f).to be(null_file)
62
+ end
63
+ end
64
+
65
+ context '#each_file' do
66
+ it 'iterates over all found files' do
67
+ repo_path = File.join(working_directory, 'git_repo')
68
+ Rugged::Repository.init_at(repo_path)
69
+
70
+ file = double('file')
71
+ allow(file).to receive(:name).and_return(:file1)
72
+
73
+ file_creator = double('file_creator')
74
+ allow(file_creator).to receive(:new).with('file1.pac', 'asdf1').and_return(file)
75
+
76
+ null_file = double('null_file')
77
+
78
+ repo = GitRepository.new(repo_path, file_creator, null_file)
79
+ repo.add_content('file1.pac', 'asdf1')
80
+
81
+ result = []
82
+ repo.each_file { |f| result << f.name }
83
+
84
+ expect(result).to eq([:file1])
85
+ end
86
+ end
87
+
88
+ context '.clone' do
89
+ it 'clones existing repository' do
90
+ repo_path = File.join(working_directory, 'git_repo.git')
91
+ repo = GitRepository.create(repo_path)
92
+ repo.add_content('file1.pac', 'asdf1')
93
+
94
+ clone_path = File.join(working_directory, 'git_repo_clone')
95
+
96
+ clone = GitRepository.clone(repo_path, clone_path)
97
+ expect(clone.all_files.first.name).to eq(:file1)
98
+ end
99
+
100
+ it 'creates cloned bare repository' do
101
+ repo_path = File.join(working_directory, 'git_repo.git')
102
+ repo = GitRepository.create(repo_path)
103
+ repo.add_content('file1.pac', 'asdf1')
104
+
105
+ clone_path = File.join(working_directory, 'git_repo_clone')
106
+ GitRepository.clone(repo_path, clone_path, bare: true)
107
+
108
+ expect(Rugged::Repository.new(clone_path).bare?).to be true
109
+ end
110
+ end
111
+ end
data/spec/main_spec.rb ADDED
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe ProxyTester do
5
+ context '.load_user_database' do
6
+ it 'loads the database' do
7
+ user_file = create_file 'users.csv', <<-EOS.strip_heredoc
8
+ "name","password"
9
+ "user1","password1"
10
+ EOS
11
+
12
+ config_file = create_file 'config.yaml', <<-EOS.strip_heredoc
13
+ user_file: #{user_file}
14
+ EOS
15
+
16
+ ProxyTester.config = ProxyTester::Config.new(config_file)
17
+ ProxyTester.load_user_database
18
+
19
+ expect {
20
+ User.find_by!(name: 'user1')
21
+ }.not_to raise_error
22
+ end
23
+
24
+ end
25
+ end
@@ -0,0 +1,20 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe PacResult do
5
+ it 'parses pac result' do
6
+ result = PacResult.new('PROXY localhost:3128')
7
+
8
+ expect(result.proxy).to eq('localhost')
9
+ expect(result.proxy_port).to eq('3128')
10
+ expect(result.request_type).to eq('PROXY')
11
+ end
12
+
13
+ it 'parses pac result' do
14
+ result = PacResult.new('DIRECT')
15
+
16
+ expect(result.proxy).to eq(nil)
17
+ expect(result.proxy_port).to eq(nil)
18
+ expect(result.request_type).to eq('DIRECT')
19
+ end
20
+ end