cf-perm-test-helpers 0.0.4 → 0.0.5
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a6b5cca332b35e11b69d4b989cdd7edea56369d6cd7f851e625bf69941a3aecf
|
4
|
+
data.tar.gz: fb66cd2f69de1894f4cd58145bd39a3eb18645d890529be7fefb74134845d180
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2afae297bf88523aeb02b39373c3c75195d7a77aa6cb0390730c428ca4fb917ae785317390b84c6ef3060c287aec513ceb13107c3e364d2612bbd30fc93e8b2
|
7
|
+
data.tar.gz: 93beb280def100489f506b2528c4f7a52689f125f40f5500852e5f2f6ca95e6be4b3d0d25a06739bd9aa87606a9c2e5158bc4dd8de57de784a44635ef0ded015
|
@@ -7,114 +7,76 @@ require 'subprocess'
|
|
7
7
|
|
8
8
|
module CloudFoundry
|
9
9
|
module PermTestHelpers
|
10
|
-
# rubocop:disable Metrics/ClassLength
|
11
10
|
class ServerRunner
|
12
11
|
attr_reader :hostname, :port, :tls_ca, :tls_ca_path
|
13
12
|
|
14
|
-
# rubocop:disable Metrics/
|
13
|
+
# rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
15
14
|
def initialize(opts = {})
|
16
15
|
cwd = File.dirname(__FILE__)
|
17
16
|
cert_path = File.join(cwd, '..', 'fixtures', 'certs')
|
18
17
|
|
19
|
-
|
20
|
-
|
21
|
-
@
|
22
|
-
@
|
23
|
-
@
|
24
|
-
@
|
25
|
-
@
|
26
|
-
@
|
18
|
+
options = Options.new(opts)
|
19
|
+
|
20
|
+
@hostname = options.attr(:hostname, 'PERM_TEST_HOSTNAME', 'localhost')
|
21
|
+
@port = options.attr(:port, 'PERM_TEST_PORT', random_port)
|
22
|
+
@perm_path = options.attr(:perm_path, 'PERM_TEST_PATH', 'perm')
|
23
|
+
@log_level = options.attr(:log_level, 'PERM_TEST_LOG_LEVEL', 'fatal')
|
24
|
+
@tls_cert = options.attr(:tls_cert_path, 'PERM_TEST_TLS_CERT_PATH', File.join(cert_path, 'tls.crt'))
|
25
|
+
@tls_key = options.attr(:tls_key_path, 'PERM_TEST_TLS_KEY_PATH', File.join(cert_path, 'tls.key'))
|
26
|
+
@tls_ca_path = options.attr(:tls_ca_path, 'PERM_TEST_TLS_CA_PATH', File.join(cert_path, 'tls_ca.crt'))
|
27
|
+
@audit_file_path = options.attr(:audit_file_path, 'PERM_TEST_AUDIT_FILE_PATH', '/dev/null')
|
27
28
|
@tls_ca = File.open(tls_ca_path).read
|
28
29
|
|
29
|
-
|
30
|
-
@
|
31
|
-
@db_schema = opts[:db][:schema] || ENV['PERM_TEST_SQL_DB_SCHEMA'] || random_schema
|
32
|
-
@db_host = opts[:db][:host] || ENV['PERM_TEST_SQL_DB_HOST'] || 'localhost'
|
33
|
-
@db_port = opts[:db][:port] || ENV['PERM_TEST_SQL_DB_PORT'] || '3306'
|
34
|
-
@db_socket = opts[:db][:socket] || ENV['PERM_TEST_SQL_DB_SOCKET'] || Mysql::MYSQL_UNIX_PORT
|
35
|
-
@db_username = opts[:db][:username] || ENV['PERM_TEST_SQL_DB_USERNAME'] || 'perm'
|
36
|
-
@db_password = opts[:db][:password] || ENV['PERM_TEST_SQL_DB_PASSWORD'] || ''
|
37
|
-
|
38
|
-
@stdout = opts[:stdout] || ENV['PERM_TEST_STDOUT_PATH'] || STDOUT
|
39
|
-
@stderr = opts[:stderr] || ENV['PERM_TEST_STDERR_PATH'] || STDERR
|
30
|
+
@stdout = options.attr(:stdout, 'PERM_TEST_STDOUT_PATH', STDOUT)
|
31
|
+
@stderr = options.attr(:stderr, 'PERM_TEST_STDERR_PATH', STDERR)
|
40
32
|
end
|
41
|
-
# rubocop:enable Metrics/
|
33
|
+
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength
|
42
34
|
|
43
35
|
def start
|
44
|
-
create_db
|
45
|
-
migrate_db
|
46
36
|
@process ||= start_perm
|
47
37
|
end
|
48
38
|
|
49
39
|
def stop
|
50
|
-
drop_db
|
51
40
|
@process&.terminate
|
52
41
|
@process = nil
|
53
42
|
end
|
54
43
|
|
55
44
|
private
|
56
45
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
def create_db
|
63
|
-
@db_connection = Mysql.connect(db_host, db_username, db_password, nil, db_port, db_socket)
|
64
|
-
|
65
|
-
stmt = @db_connection.prepare("create database #{db_schema}")
|
66
|
-
stmt.execute
|
67
|
-
end
|
46
|
+
class Options
|
47
|
+
def initialize(opts)
|
48
|
+
@opts = opts
|
49
|
+
end
|
68
50
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
'migrate',
|
73
|
-
'up',
|
74
|
-
'--log-level', log_level,
|
75
|
-
'--sql-db-driver', db_driver,
|
76
|
-
'--sql-db-schema', db_schema,
|
77
|
-
'--sql-db-host', db_host,
|
78
|
-
'--sql-db-port', db_port,
|
79
|
-
'--sql-db-username', db_username,
|
80
|
-
'--sql-db-password', db_password
|
81
|
-
]
|
82
|
-
|
83
|
-
Subprocess.check_call(cmd, stdout: stdout, stderr: stderr)
|
51
|
+
def attr(key, env, default)
|
52
|
+
@opts[key] || ENV[env] || default
|
53
|
+
end
|
84
54
|
end
|
85
55
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
end
|
56
|
+
attr_writer :port
|
57
|
+
attr_reader :perm_path, :log_level, :process, :tls_cert, :tls_key, :audit_file_path
|
58
|
+
attr_reader :stdout, :stderr
|
90
59
|
|
91
|
-
# rubocop:disable Metrics/AbcSize
|
60
|
+
# rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
92
61
|
def start_perm
|
93
62
|
retries = 0
|
94
63
|
process = nil
|
95
64
|
|
96
65
|
begin
|
97
|
-
listen_port = port || random_port
|
98
66
|
cmd = [
|
99
67
|
perm_path,
|
100
68
|
'serve',
|
101
69
|
'--listen-hostname', hostname,
|
102
|
-
'--listen-port',
|
70
|
+
'--listen-port', port.to_s,
|
103
71
|
'--log-level', log_level,
|
104
72
|
'--tls-certificate', tls_cert,
|
105
73
|
'--tls-key', tls_key,
|
106
|
-
'--
|
107
|
-
'--sql-db-schema', db_schema,
|
108
|
-
'--sql-db-host', db_host,
|
109
|
-
'--sql-db-port', db_port,
|
110
|
-
'--sql-db-username', db_username,
|
111
|
-
'--sql-db-password', db_password,
|
74
|
+
'--db-driver', 'in-memory',
|
112
75
|
'--audit-file-path', audit_file_path
|
113
76
|
]
|
114
77
|
|
115
78
|
process = Subprocess.popen(cmd, stdout: stdout, stderr: stderr)
|
116
79
|
wait_for_server(process.pid)
|
117
|
-
@port = listen_port
|
118
80
|
|
119
81
|
process
|
120
82
|
rescue Errno::ESRCH => e
|
@@ -130,11 +92,6 @@ module CloudFoundry
|
|
130
92
|
end
|
131
93
|
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
132
94
|
|
133
|
-
def random_schema
|
134
|
-
# Dashes are invalid in DB names
|
135
|
-
"perm-#{SecureRandom.uuid}".tr('-', '_')
|
136
|
-
end
|
137
|
-
|
138
95
|
def random_port
|
139
96
|
rand(65_000 - 1024) + 1024
|
140
97
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cf-perm-test-helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- CloudFoundry Permissions Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-05-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: subprocess
|