prof 0.30.9 → 0.31.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.
- checksums.yaml +4 -4
- data/lib/prof/environment/pcf_drinks.rb +17 -51
- data/lib/prof/external_spec/helpers/capybara.rb +5 -0
- data/lib/prof/external_spec/helpers/file_helper.rb +3 -9
- data/lib/prof/external_spec/spec_helper.rb +11 -6
- data/lib/prof/ops_manager.rb +35 -109
- data/lib/prof/version.rb +1 -1
- metadata +6 -24
- data/lib/prof/external_spec/helpers/debug.rb +0 -53
- data/lib/prof/ops_manager/rails_500_error.rb +0 -15
- data/lib/prof/ops_manager/web_app_internals/page/checkbox_field.rb +0 -38
- data/lib/prof/ops_manager/web_app_internals/page/click_field.rb +0 -40
- data/lib/prof/ops_manager/web_app_internals/page/dashboard.rb +0 -100
- data/lib/prof/ops_manager/web_app_internals/page/flash_message.rb +0 -53
- data/lib/prof/ops_manager/web_app_internals/page/form.rb +0 -130
- data/lib/prof/ops_manager/web_app_internals/page/form_error.rb +0 -43
- data/lib/prof/ops_manager/web_app_internals/page/form_field.rb +0 -51
- data/lib/prof/ops_manager/web_app_internals/page/form_fields.rb +0 -35
- data/lib/prof/ops_manager/web_app_internals/page/installation_progress.rb +0 -149
- data/lib/prof/ops_manager/web_app_internals/page/login.rb +0 -83
- data/lib/prof/ops_manager/web_app_internals/page/modal.rb +0 -85
- data/lib/prof/ops_manager/web_app_internals/page/rails_500.rb +0 -41
- data/lib/prof/ops_manager/web_app_internals/page/select_field.rb +0 -27
- data/lib/prof/ops_manager/web_app_internals/page/tile_settings.rb +0 -105
- data/lib/prof/ops_manager/web_app_internals.rb +0 -63
- data/lib/prof/ops_manager_log_fetcher.rb +0 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3f721a22a15e1e43787f06eca04043967708dbf
|
4
|
+
data.tar.gz: b103d0f59b6c348a6ca73bd41e1586ae4cacc422
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1bcf83b410f896d6fcdf9b761dd5f5d740fc937d0a809eb5bf8f3cb4030a24f40c73d18505cb07ef8d279803f1f1765297a4b19db12dcecc186159fd3cecefcf
|
7
|
+
data.tar.gz: 77e87a6b300443b961d43802e7a49e1c4648735b9cfd780ebd618d59c8f1263710f0c9b68ba5fd5a3e668119f32fb026a620c3aef009f76b37088301488e3c4b
|
@@ -14,7 +14,6 @@ require 'capybara'
|
|
14
14
|
|
15
15
|
require 'prof/cloud_foundry'
|
16
16
|
require 'prof/ops_manager'
|
17
|
-
require 'prof/ops_manager_log_fetcher'
|
18
17
|
require 'prof/ssh_gateway'
|
19
18
|
require 'prof/uaa_client'
|
20
19
|
|
@@ -23,41 +22,40 @@ module Prof
|
|
23
22
|
class NoDirectorVm < StandardError; end
|
24
23
|
|
25
24
|
class PcfDrinks
|
26
|
-
def initialize(tempest_config
|
25
|
+
def initialize(tempest_config)
|
27
26
|
@tempest_config = tempest_config
|
28
|
-
@page = page
|
29
27
|
end
|
30
28
|
|
31
29
|
def ops_manager
|
32
|
-
@ops_manager ||= OpsManager.new(
|
30
|
+
@ops_manager ||= OpsManager.new(environment_name: ENV.fetch('TEMPEST_ENVIRONMENT'), version: ENV.fetch('OM_VERSION'))
|
33
31
|
end
|
34
32
|
|
35
|
-
def cloud_foundry
|
33
|
+
def cloud_foundry
|
36
34
|
@cloud_foundry ||= CloudFoundry.new(
|
37
35
|
domain: cloud_foundry_domain,
|
38
|
-
username:
|
39
|
-
password:
|
36
|
+
username: ops_manager.cf_admin_credentials.username,
|
37
|
+
password: ops_manager.cf_admin_credentials.password
|
40
38
|
)
|
41
39
|
end
|
42
40
|
|
43
41
|
def cloud_foundry_domain
|
44
|
-
tempest_config.fetch(
|
42
|
+
tempest_config.fetch('cloudfoundry').fetch('domain')
|
45
43
|
end
|
46
44
|
|
47
45
|
def bosh_director
|
48
46
|
@bosh_director ||= Hula::BoshDirector.new(
|
49
47
|
target_url: bosh_director_url,
|
50
|
-
username: bosh_credentials.fetch('identity'),
|
48
|
+
username: ops_manager.bosh_credentials.fetch('identity'),
|
51
49
|
password: bosh_credentials.fetch('password')
|
52
50
|
)
|
53
51
|
end
|
54
52
|
|
55
53
|
def ssh_gateway
|
56
54
|
SshGateway.new(
|
57
|
-
gateway_host: ssh_gateway_config.fetch(
|
58
|
-
gateway_username: ssh_gateway_config.fetch(
|
59
|
-
gateway_password: ssh_gateway_config[
|
60
|
-
ssh_key: ssh_gateway_config[
|
55
|
+
gateway_host: ssh_gateway_config.fetch('host'),
|
56
|
+
gateway_username: ssh_gateway_config.fetch('username'),
|
57
|
+
gateway_password: ssh_gateway_config['password'],
|
58
|
+
ssh_key: ssh_gateway_config['ssh_key']
|
61
59
|
)
|
62
60
|
end
|
63
61
|
|
@@ -77,15 +75,6 @@ module Prof
|
|
77
75
|
Capybara::Session.new(Capybara.default_driver)
|
78
76
|
end
|
79
77
|
|
80
|
-
def log_fetcher
|
81
|
-
OpsManagerLogFetcher.new(
|
82
|
-
ssh_gateway: ssh_gateway,
|
83
|
-
host: ops_manager_hostname,
|
84
|
-
username: ops_manager_vm_config.fetch(:username),
|
85
|
-
password: ops_manager_vm_config.fetch(:password)
|
86
|
-
)
|
87
|
-
end
|
88
|
-
|
89
78
|
def cloud_controller_client_credentials
|
90
79
|
@cloud_controller_client_credentials ||= ops_manager.cc_client_credentials
|
91
80
|
end
|
@@ -109,47 +98,24 @@ module Prof
|
|
109
98
|
end
|
110
99
|
|
111
100
|
def ops_manager_hostname
|
112
|
-
URI.parse(ops_manager_config.fetch(
|
101
|
+
URI.parse(ops_manager_config.fetch('url')).hostname
|
113
102
|
end
|
114
103
|
|
115
104
|
def ops_manager_config
|
116
|
-
tempest_config.fetch(
|
117
|
-
end
|
118
|
-
|
119
|
-
def ops_manager_vm_config
|
120
|
-
tempest_config.fetch(:tempest_vm)
|
105
|
+
tempest_config.fetch('tempest')
|
121
106
|
end
|
122
107
|
|
123
108
|
def ssh_gateway_config
|
124
|
-
tempest_config.fetch(
|
109
|
+
tempest_config.fetch('proxy')
|
125
110
|
end
|
126
111
|
|
127
|
-
def
|
128
|
-
return URI("https://127.0.0.1:#{forwarded_bosh_port}").to_s if !tempest_config[
|
112
|
+
def bosh_director_urlo
|
113
|
+
return URI("https://127.0.0.1:#{forwarded_bosh_port}").to_s if !tempest_config['proxy'].nil?
|
129
114
|
return director.hostname
|
130
115
|
end
|
131
116
|
|
132
|
-
def bosh_product
|
133
|
-
# old versions of OpsMan (< v1.6 RC4)
|
134
|
-
@bosh_product ||= ops_manager
|
135
|
-
.send(:opsmanager_client)
|
136
|
-
.send(:product, 'microbosh')
|
137
|
-
|
138
|
-
# newer versions of OpsMan (>= v1.6 RC4)
|
139
|
-
@bosh_product ||= ops_manager
|
140
|
-
.send(:opsmanager_client)
|
141
|
-
.send(:product, 'p-bosh')
|
142
|
-
end
|
143
|
-
|
144
117
|
def bosh_credentials
|
145
|
-
|
146
|
-
@bosh_credentials ||= bosh_product
|
147
|
-
.job_of_type('director')
|
148
|
-
.properties.fetch('director_credentials')
|
149
|
-
end
|
150
|
-
|
151
|
-
def cloud_foundry_credentials(credentials_identifier)
|
152
|
-
@cloud_foundry_credentials ||= ops_manager.cf_uaa_credentials(credentials_identifier)
|
118
|
+
@bosh_credentials = ops_manager.bosh_credentials
|
153
119
|
end
|
154
120
|
end
|
155
121
|
end
|
@@ -24,6 +24,7 @@ module Prof
|
|
24
24
|
::Capybara.default_driver = driver
|
25
25
|
::Capybara.javascript_driver = driver
|
26
26
|
|
27
|
+
|
27
28
|
::Capybara.register_driver :poltergeist do |app|
|
28
29
|
::Capybara::Poltergeist::Driver.new(
|
29
30
|
app,
|
@@ -37,6 +38,10 @@ module Prof
|
|
37
38
|
end
|
38
39
|
|
39
40
|
::Capybara.register_driver :webkit do |app|
|
41
|
+
::Capybara::Webkit.configure do |config|
|
42
|
+
config.block_unknown_urls
|
43
|
+
end
|
44
|
+
|
40
45
|
::Capybara::Webkit::Driver.new(app).tap do |d|
|
41
46
|
d.browser.ignore_ssl_errors
|
42
47
|
d.browser.allow_url('*')
|
@@ -14,20 +14,14 @@ module Prof
|
|
14
14
|
module ExternalSpec
|
15
15
|
module Helpers
|
16
16
|
module FileHelper
|
17
|
-
def root_path
|
18
|
-
defined?(ROOT_PATH) ? ROOT_PATH : Dir.pwd
|
19
|
-
end
|
20
17
|
|
21
18
|
def file_path(relative_to_root)
|
22
|
-
|
19
|
+
root_path = defined?(ROOT_PATH) ? ROOT_PATH : Dir.pwd
|
20
|
+
File.expand_path(relative_to_root, )
|
23
21
|
end
|
24
22
|
|
25
23
|
def json_contents(relative_to_root)
|
26
|
-
|
27
|
-
end
|
28
|
-
|
29
|
-
def file_contents(relative_to_root)
|
30
|
-
File.read(file_path(relative_to_root))
|
24
|
+
raise 'Please use YAML.load_file() instead. See example in p-rabbitmq'
|
31
25
|
end
|
32
26
|
end
|
33
27
|
end
|
@@ -8,28 +8,33 @@
|
|
8
8
|
# USE OR OTHER DEALINGS IN THE SOFTWARE.
|
9
9
|
#
|
10
10
|
|
11
|
+
require 'opsmgr/ui_helpers/config_helper'
|
11
12
|
require 'prof/external_spec/helpers/capybara'
|
12
|
-
require 'prof/external_spec/helpers/debug'
|
13
13
|
require 'prof/external_spec/helpers/file_helper'
|
14
14
|
require 'prof/external_spec/helpers/product_path'
|
15
15
|
|
16
16
|
require 'rspec_junit_formatter'
|
17
|
+
require 'capybara/webkit'
|
18
|
+
require 'opsmgr/log'
|
19
|
+
require 'pry'
|
20
|
+
|
21
|
+
Opsmgr::Log.stdout_mode!
|
17
22
|
|
18
23
|
RSpec.configure do |config|
|
24
|
+
config.formatter = :documentation
|
25
|
+
config.filter_run :focus
|
26
|
+
config.run_all_when_everything_filtered = true
|
27
|
+
|
19
28
|
config.include Prof::ExternalSpec::Helpers::Capybara
|
20
|
-
config.include Prof::ExternalSpec::Helpers::Debug
|
21
29
|
config.include Prof::ExternalSpec::Helpers::FileHelper
|
22
30
|
config.include Prof::ExternalSpec::Helpers::ProductPath
|
23
31
|
|
24
32
|
config.add_formatter RSpecJUnitFormatter, 'rspec.xml'
|
25
33
|
|
26
34
|
config.full_backtrace = true
|
35
|
+
config.fail_fast = false
|
27
36
|
|
28
37
|
config.before(:all) do
|
29
38
|
setup_browser(:webkit)
|
30
39
|
end
|
31
|
-
|
32
|
-
config.after(:each) do |example|
|
33
|
-
save_exception_output(example)
|
34
|
-
end
|
35
40
|
end
|
data/lib/prof/ops_manager.rb
CHANGED
@@ -7,136 +7,62 @@
|
|
7
7
|
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
8
8
|
# USE OR OTHER DEALINGS IN THE SOFTWARE.
|
9
9
|
#
|
10
|
-
|
11
|
-
require '
|
12
|
-
require '
|
13
|
-
require 'forwardable'
|
14
|
-
|
15
|
-
require 'prof/ops_manager/web_app_internals'
|
16
|
-
require 'prof/ops_manager/rails_500_error'
|
17
|
-
require 'prof/tile'
|
18
|
-
require 'json'
|
10
|
+
require 'opsmgr/api/client'
|
11
|
+
require 'opsmgr/environments'
|
12
|
+
require 'ostruct'
|
19
13
|
|
20
14
|
module Prof
|
21
15
|
class OpsManager
|
22
|
-
|
16
|
+
def initialize(environment_name:, version: "1.7")
|
17
|
+
@api = Opsmgr::Api::Client.new(
|
18
|
+
Opsmgr::Environments.for(environment_name),
|
19
|
+
version
|
20
|
+
)
|
23
21
|
|
24
|
-
|
25
|
-
@url = url
|
26
|
-
@username = username
|
27
|
-
@password = password
|
28
|
-
@page = page
|
29
|
-
@log_fetcher = log_fetcher
|
30
|
-
@version = Gem::Version.new(version)
|
22
|
+
@api_installation_settings = @api.installation_settings
|
31
23
|
end
|
32
24
|
|
33
25
|
attr_reader :url
|
34
26
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
:cf_admin_credentials,
|
41
|
-
:cf_uaa_credentials,
|
42
|
-
:cf_installed?,
|
43
|
-
:delete_unused_products,
|
44
|
-
:system_domain,
|
45
|
-
:upgrade_product,
|
46
|
-
:vms_for_job_type
|
47
|
-
|
48
|
-
def_delegators :dashboard,
|
49
|
-
:apply_setting,
|
50
|
-
:tile,
|
51
|
-
:tile_configuration,
|
52
|
-
:tile_configure
|
53
|
-
|
54
|
-
# Add ability to get hold of the capybara session
|
55
|
-
# while transitioning code over to page objects
|
56
|
-
def browser(&_block)
|
57
|
-
yield page, url
|
58
|
-
end
|
59
|
-
|
60
|
-
def uninstall_tile(*tile_or_tiles)
|
61
|
-
tiles = Array(tile_or_tiles).flatten
|
62
|
-
return if tiles.empty?
|
63
|
-
|
64
|
-
tiles.each { |t| web_app_internals.tile_uninstall(t) }
|
65
|
-
web_app_internals.apply_changes
|
27
|
+
def cf_admin_credentials
|
28
|
+
OpenStruct.new({
|
29
|
+
'username' => 'admin',
|
30
|
+
'password' => @api_installation_settings.uaa_admin_password
|
31
|
+
})
|
66
32
|
end
|
67
|
-
alias_method :uninstall_tiles, :uninstall_tile
|
68
33
|
|
69
|
-
def
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
apply_changes
|
75
|
-
rescue Rails500Error => e
|
76
|
-
puts "FAILED: '#{e.message}'\n"
|
77
|
-
logs = log_fetcher.fetch_logs('production.log', 500)
|
78
|
-
raise Rails500Error, "#{e.message}\n---------------\n#{logs}"
|
34
|
+
def bosh_credentials
|
35
|
+
{
|
36
|
+
'identity' => 'director',
|
37
|
+
'password' => @api_installation_settings.director_password
|
38
|
+
}
|
79
39
|
end
|
80
40
|
|
81
|
-
def
|
82
|
-
|
41
|
+
def system_domain
|
42
|
+
@api_installation_settings.system_domain
|
83
43
|
end
|
84
44
|
|
85
|
-
def
|
86
|
-
|
87
|
-
opsmanager_client.upload_product(product)
|
88
|
-
Tile.new(name: product.name, version: product.version)
|
89
|
-
end
|
45
|
+
def vms_for_job_type(job_type)
|
46
|
+
manifest = @api_installation_settings.as_hash
|
90
47
|
|
91
|
-
|
92
|
-
|
93
|
-
|
48
|
+
product = get_product_for_job(manifest, job_type)
|
49
|
+
ips = @api_installation_settings.ips_for_job(product_name: product['identifier'], job_name: job_type)
|
50
|
+
vm_credentials = product["jobs"].detect { |job| job["installation_name"] == job_type }['vm_credentials']
|
94
51
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
guid: tempest_product.guid
|
52
|
+
ips.map do |ip|
|
53
|
+
OpenStruct.new(
|
54
|
+
:hostname => ip,
|
55
|
+
:username => vm_credentials.fetch("identity"),
|
56
|
+
:password => vm_credentials.fetch("password")
|
101
57
|
)
|
102
|
-
|
103
|
-
end
|
104
|
-
|
105
|
-
def vms_for_job_type(job_type)
|
106
|
-
opsmanager_client.vms_for_job_type(job_type)
|
58
|
+
end
|
107
59
|
end
|
108
60
|
|
109
61
|
private
|
110
62
|
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
Capybara::Session.new(Capybara.default_driver)
|
115
|
-
end
|
116
|
-
|
117
|
-
def web_app_internals
|
118
|
-
@web_app_internals ||= WebAppInternals.new(dashboard, opsmanager_client, page, url)
|
119
|
-
end
|
120
|
-
|
121
|
-
def opsmanager_client
|
122
|
-
@opsmanager_client ||= ::OpsmanagerClient::Client.new(url, username, password)
|
123
|
-
end
|
124
|
-
|
125
|
-
def dashboard
|
126
|
-
@dashboard ||= login_page.login.tap { page.visit(url) unless page.current_url == url }
|
127
|
-
end
|
128
|
-
|
129
|
-
def login_page
|
130
|
-
@login_page ||= WebAppInternals::Page::Login.new(page: page, url: url, username: username, password: password, version: version)
|
131
|
-
end
|
132
|
-
|
133
|
-
def null_log_fetcher
|
134
|
-
NullLogFetcher.new
|
135
|
-
end
|
136
|
-
|
137
|
-
class NullLogFetcher
|
138
|
-
def fetch_logs(_, _)
|
139
|
-
return 'No Log fetcher configured.'
|
63
|
+
def get_product_for_job(manifest, job_type)
|
64
|
+
manifest["products"].detect do |product|
|
65
|
+
product['jobs'].any? { |job| job['identifier'] == job_type }
|
140
66
|
end
|
141
67
|
end
|
142
68
|
end
|
data/lib/prof/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: prof
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.31.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- CF London
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-04-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gem-release
|
@@ -305,19 +305,19 @@ dependencies:
|
|
305
305
|
- !ruby/object:Gem::Version
|
306
306
|
version: '1.1'
|
307
307
|
- !ruby/object:Gem::Dependency
|
308
|
-
name:
|
308
|
+
name: opsmgr
|
309
309
|
requirement: !ruby/object:Gem::Requirement
|
310
310
|
requirements:
|
311
311
|
- - "~>"
|
312
312
|
- !ruby/object:Gem::Version
|
313
|
-
version: 0.
|
313
|
+
version: 0.34.17
|
314
314
|
type: :runtime
|
315
315
|
prerelease: false
|
316
316
|
version_requirements: !ruby/object:Gem::Requirement
|
317
317
|
requirements:
|
318
318
|
- - "~>"
|
319
319
|
- !ruby/object:Gem::Version
|
320
|
-
version: 0.
|
320
|
+
version: 0.34.17
|
321
321
|
description: A gem to test Cloud Foundry service brokers
|
322
322
|
email:
|
323
323
|
- cf-london@pivotallabs.com
|
@@ -331,7 +331,6 @@ files:
|
|
331
331
|
- lib/prof/environment/pcf_drinks.rb
|
332
332
|
- lib/prof/environment_manager.rb
|
333
333
|
- lib/prof/external_spec/helpers/capybara.rb
|
334
|
-
- lib/prof/external_spec/helpers/debug.rb
|
335
334
|
- lib/prof/external_spec/helpers/file_helper.rb
|
336
335
|
- lib/prof/external_spec/helpers/product_path.rb
|
337
336
|
- lib/prof/external_spec/shared_examples/deployment.rb
|
@@ -345,23 +344,6 @@ files:
|
|
345
344
|
- lib/prof/matchers/ssl.rb
|
346
345
|
- lib/prof/matchers/tile_configuration.rb
|
347
346
|
- lib/prof/ops_manager.rb
|
348
|
-
- lib/prof/ops_manager/rails_500_error.rb
|
349
|
-
- lib/prof/ops_manager/web_app_internals.rb
|
350
|
-
- lib/prof/ops_manager/web_app_internals/page/checkbox_field.rb
|
351
|
-
- lib/prof/ops_manager/web_app_internals/page/click_field.rb
|
352
|
-
- lib/prof/ops_manager/web_app_internals/page/dashboard.rb
|
353
|
-
- lib/prof/ops_manager/web_app_internals/page/flash_message.rb
|
354
|
-
- lib/prof/ops_manager/web_app_internals/page/form.rb
|
355
|
-
- lib/prof/ops_manager/web_app_internals/page/form_error.rb
|
356
|
-
- lib/prof/ops_manager/web_app_internals/page/form_field.rb
|
357
|
-
- lib/prof/ops_manager/web_app_internals/page/form_fields.rb
|
358
|
-
- lib/prof/ops_manager/web_app_internals/page/installation_progress.rb
|
359
|
-
- lib/prof/ops_manager/web_app_internals/page/login.rb
|
360
|
-
- lib/prof/ops_manager/web_app_internals/page/modal.rb
|
361
|
-
- lib/prof/ops_manager/web_app_internals/page/rails_500.rb
|
362
|
-
- lib/prof/ops_manager/web_app_internals/page/select_field.rb
|
363
|
-
- lib/prof/ops_manager/web_app_internals/page/tile_settings.rb
|
364
|
-
- lib/prof/ops_manager_log_fetcher.rb
|
365
347
|
- lib/prof/product.rb
|
366
348
|
- lib/prof/pushed_test_app.rb
|
367
349
|
- lib/prof/service_instance.rb
|
@@ -396,7 +378,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
396
378
|
version: '0'
|
397
379
|
requirements: []
|
398
380
|
rubyforge_project:
|
399
|
-
rubygems_version: 2.
|
381
|
+
rubygems_version: 2.5.1
|
400
382
|
signing_key:
|
401
383
|
specification_version: 4
|
402
384
|
summary: A gem to test CF service brokers
|
@@ -1,53 +0,0 @@
|
|
1
|
-
# Copyright (c) 2014-2015 Pivotal Software, Inc.
|
2
|
-
# All rights reserved.
|
3
|
-
# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
4
|
-
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
5
|
-
# PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
6
|
-
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
7
|
-
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
8
|
-
# USE OR OTHER DEALINGS IN THE SOFTWARE.
|
9
|
-
#
|
10
|
-
|
11
|
-
module Prof
|
12
|
-
module ExternalSpec
|
13
|
-
module Helpers
|
14
|
-
module Debug
|
15
|
-
|
16
|
-
def recording_exceptions
|
17
|
-
yield
|
18
|
-
rescue Exception => ex
|
19
|
-
@recorded_exception = ex
|
20
|
-
raise
|
21
|
-
end
|
22
|
-
|
23
|
-
def save_exceptions
|
24
|
-
yield
|
25
|
-
rescue Exception => ex
|
26
|
-
ops_manager.browser do |page|
|
27
|
-
name = "failure"
|
28
|
-
puts "Saving failure data for '#{name}'"
|
29
|
-
page.save_page("#{name}.html")
|
30
|
-
page.save_screenshot("#{name}.png")
|
31
|
-
end
|
32
|
-
raise
|
33
|
-
end
|
34
|
-
|
35
|
-
def save_exception_output(example)
|
36
|
-
unless @recorded_exception
|
37
|
-
return unless example.respond_to?(:exception)
|
38
|
-
return unless example.respond_to?(:full_description)
|
39
|
-
return unless respond_to?(:ops_manager)
|
40
|
-
return unless example.exception
|
41
|
-
end
|
42
|
-
|
43
|
-
ops_manager.browser do |page|
|
44
|
-
name = example.full_description.gsub(/\W/, '_')
|
45
|
-
puts "Saving failure data for '#{name}'"
|
46
|
-
page.save_page("#{name}.html")
|
47
|
-
page.save_screenshot("#{name}.png")
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
# Copyright (c) 2014-2015 Pivotal Software, Inc.
|
2
|
-
# All rights reserved.
|
3
|
-
# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
4
|
-
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
5
|
-
# PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
6
|
-
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
7
|
-
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
8
|
-
# USE OR OTHER DEALINGS IN THE SOFTWARE.
|
9
|
-
#
|
10
|
-
|
11
|
-
module Prof
|
12
|
-
class OpsManager
|
13
|
-
class Rails500Error < StandardError; end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
# Copyright (c) 2014-2015 Pivotal Software, Inc.
|
2
|
-
# All rights reserved.
|
3
|
-
# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
4
|
-
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
5
|
-
# PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
6
|
-
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
7
|
-
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
8
|
-
# USE OR OTHER DEALINGS IN THE SOFTWARE.
|
9
|
-
#
|
10
|
-
|
11
|
-
require 'prof/ops_manager/web_app_internals/page/form_field'
|
12
|
-
|
13
|
-
module Prof
|
14
|
-
class OpsManager
|
15
|
-
class WebAppInternals
|
16
|
-
module Page
|
17
|
-
class CheckboxField < FormField
|
18
|
-
def initialize(name:, value:, checked:)
|
19
|
-
super(name: name, value: value)
|
20
|
-
@checked = checked
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
attr_reader :checked
|
26
|
-
|
27
|
-
def selector
|
28
|
-
super + "[value$='#{value}']"
|
29
|
-
end
|
30
|
-
|
31
|
-
def set_value(field)
|
32
|
-
field.set(checked)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
# Copyright (c) 2014-2015 Pivotal Software, Inc.
|
2
|
-
# All rights reserved.
|
3
|
-
# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
4
|
-
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
5
|
-
# PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
6
|
-
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
7
|
-
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
8
|
-
# USE OR OTHER DEALINGS IN THE SOFTWARE.
|
9
|
-
#
|
10
|
-
|
11
|
-
require 'prof/ops_manager/web_app_internals/page/form_field'
|
12
|
-
|
13
|
-
module Prof
|
14
|
-
class OpsManager
|
15
|
-
class WebAppInternals
|
16
|
-
module Page
|
17
|
-
class ClickField < FormField
|
18
|
-
def initialize(name:, expected_state: )
|
19
|
-
super(name: name, value: nil)
|
20
|
-
@expected_state = expected_state
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
attr_reader :expected_state
|
26
|
-
|
27
|
-
def selector
|
28
|
-
super + ":not([type=hidden])"
|
29
|
-
end
|
30
|
-
|
31
|
-
def set_value(field)
|
32
|
-
unless field.checked? == expected_state
|
33
|
-
field.click
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|