admin_module 0.1.4
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 +7 -0
- data/.gitignore +19 -0
- data/.rspec +3 -0
- data/Gemfile +14 -0
- data/Guardfile +24 -0
- data/LICENSE +22 -0
- data/README.md +281 -0
- data/Rakefile +98 -0
- data/admin_module.gemspec +34 -0
- data/bin/admin_module +13 -0
- data/lib/admin_module.rb +260 -0
- data/lib/admin_module/cli.rb +54 -0
- data/lib/admin_module/cli/cli_guideline.rb +80 -0
- data/lib/admin_module/cli/cli_lock.rb +149 -0
- data/lib/admin_module/cli/cli_parameter.rb +66 -0
- data/lib/admin_module/cli/cli_task.rb +149 -0
- data/lib/admin_module/cli_old.rb +92 -0
- data/lib/admin_module/client.rb +146 -0
- data/lib/admin_module/command.rb +25 -0
- data/lib/admin_module/command/client_access.rb +43 -0
- data/lib/admin_module/command/config.rb +310 -0
- data/lib/admin_module/command/dc.rb +110 -0
- data/lib/admin_module/command/gdl.rb +71 -0
- data/lib/admin_module/command/lock.rb +110 -0
- data/lib/admin_module/command/ppm.rb +142 -0
- data/lib/admin_module/command/rule.rb +77 -0
- data/lib/admin_module/command/ruleset.rb +56 -0
- data/lib/admin_module/command/snapshot.rb +110 -0
- data/lib/admin_module/command/stage.rb +131 -0
- data/lib/admin_module/command/task.rb +110 -0
- data/lib/admin_module/config_helper.rb +33 -0
- data/lib/admin_module/dc.rb +133 -0
- data/lib/admin_module/guideline.rb +86 -0
- data/lib/admin_module/locks.rb +142 -0
- data/lib/admin_module/page_factory.rb +55 -0
- data/lib/admin_module/pages.rb +120 -0
- data/lib/admin_module/pages/dc_definitions_page.rb +73 -0
- data/lib/admin_module/pages/dc_detail_page.rb +187 -0
- data/lib/admin_module/pages/guideline_page.rb +35 -0
- data/lib/admin_module/pages/guideline_version_page.rb +140 -0
- data/lib/admin_module/pages/guidelines_page.rb +59 -0
- data/lib/admin_module/pages/guidelines_version_all_page.rb +116 -0
- data/lib/admin_module/pages/lock_definition_page.rb +178 -0
- data/lib/admin_module/pages/lock_definitions_page.rb +69 -0
- data/lib/admin_module/pages/login_page.rb +75 -0
- data/lib/admin_module/pages/parameter_page.rb +62 -0
- data/lib/admin_module/pages/parameters_page.rb +46 -0
- data/lib/admin_module/pages/ppms_page.rb +110 -0
- data/lib/admin_module/pages/rule_page.rb +68 -0
- data/lib/admin_module/pages/rules_page.rb +74 -0
- data/lib/admin_module/pages/ruleset_page.rb +64 -0
- data/lib/admin_module/pages/rulesets_page.rb +60 -0
- data/lib/admin_module/pages/select_list_syncable.rb +64 -0
- data/lib/admin_module/pages/snapshot_definitions_page.rb +73 -0
- data/lib/admin_module/pages/snapshot_detail_page.rb +246 -0
- data/lib/admin_module/pages/workflow_detail_page.rb +451 -0
- data/lib/admin_module/pages/workflow_detail_task_addl_detail_page.rb +172 -0
- data/lib/admin_module/pages/workflow_detail_task_mappings_page.rb +163 -0
- data/lib/admin_module/pages/workflow_detail_task_screens_page.rb +75 -0
- data/lib/admin_module/pages/workflow_details_page.rb +67 -0
- data/lib/admin_module/pages/workflow_task_page.rb +107 -0
- data/lib/admin_module/pages/workflow_tasks_page.rb +111 -0
- data/lib/admin_module/ppms.rb +78 -0
- data/lib/admin_module/rake.rb +22 -0
- data/lib/admin_module/rake/dc_tasks.rb +185 -0
- data/lib/admin_module/rake/deploy_task.rb +59 -0
- data/lib/admin_module/rake/gdl_tasks.rb +189 -0
- data/lib/admin_module/rake/lock_tasks.rb +189 -0
- data/lib/admin_module/rake/parameter_task.rb +86 -0
- data/lib/admin_module/rake/ppm_tasks.rb +248 -0
- data/lib/admin_module/rake/rule_tasks.rb +157 -0
- data/lib/admin_module/rake/snapshot_tasks.rb +223 -0
- data/lib/admin_module/rake/stage_tasks.rb +197 -0
- data/lib/admin_module/rake/stages_task.rb +197 -0
- data/lib/admin_module/rake/task_tasks.rb +189 -0
- data/lib/admin_module/rules.rb +50 -0
- data/lib/admin_module/rulesets.rb +42 -0
- data/lib/admin_module/snapshots.rb +133 -0
- data/lib/admin_module/stages.rb +171 -0
- data/lib/admin_module/tasks.rb +147 -0
- data/lib/admin_module/version.rb +3 -0
- data/old_spec/lib/admin_module/cli_configuration_spec.rb +126 -0
- data/old_spec/lib/admin_module/cli_create_stage_spec.rb +89 -0
- data/old_spec/lib/admin_module/cli_delete_rule_spec.rb +57 -0
- data/old_spec/lib/admin_module/cli_deploy_spec.rb +57 -0
- data/old_spec/lib/admin_module/cli_export_locks_spec.rb +62 -0
- data/old_spec/lib/admin_module/cli_export_stages_spec.rb +62 -0
- data/old_spec/lib/admin_module/cli_guidelines_version_all_spec.rb +58 -0
- data/old_spec/lib/admin_module/cli_import_locks_spec.rb +153 -0
- data/old_spec/lib/admin_module/cli_import_stages_spec.rb +173 -0
- data/old_spec/lib/admin_module/cli_modify_locks_spec.rb +128 -0
- data/old_spec/lib/admin_module/cli_modify_stages_spec.rb +88 -0
- data/old_spec/lib/admin_module/cli_rename_rule_spec.rb +53 -0
- data/old_spec/lib/admin_module/cli_rename_ruleset_spec.rb +53 -0
- data/old_spec/lib/admin_module/cli_var_spec.rb +41 -0
- data/old_spec/lib/admin_module/rake/deploy_task_spec.rb +85 -0
- data/old_spec/lib/admin_module/rake/parameter_task_spec.rb +58 -0
- data/old_spec/lib/admin_module/rake/rules_task_spec.rb +75 -0
- data/spec/data/build/test1.xml +0 -0
- data/spec/data/build/test2.xml +1 -0
- data/spec/data/import_dcs.yml +31 -0
- data/spec/data/import_locks.yml +4 -0
- data/spec/data/import_snapshots.yml +35 -0
- data/spec/data/import_stages.yml +4 -0
- data/spec/data/import_tasks.yml +25 -0
- data/spec/data/patch-test.xml +1 -0
- data/spec/data/remove_test_del_rule.xml +1 -0
- data/spec/data/stages.yml +518 -0
- data/spec/data/test_del_rule.xml +1 -0
- data/spec/lib/admin_module/admin_module_spec.rb +175 -0
- data/spec/lib/admin_module/cli_spec.rb +36 -0
- data/spec/lib/admin_module/client_spec.rb +158 -0
- data/spec/lib/admin_module/command/config_spec.rb +477 -0
- data/spec/lib/admin_module/command/dc_spec.rb +202 -0
- data/spec/lib/admin_module/command/gdl_spec.rb +139 -0
- data/spec/lib/admin_module/command/lock_spec.rb +207 -0
- data/spec/lib/admin_module/command/rule_spec.rb +163 -0
- data/spec/lib/admin_module/command/ruleset_spec.rb +124 -0
- data/spec/lib/admin_module/command/snapshot_spec.rb +202 -0
- data/spec/lib/admin_module/command/stage_spec.rb +259 -0
- data/spec/lib/admin_module/command/task_spec.rb +207 -0
- data/spec/lib/admin_module/dc_spec.rb +192 -0
- data/spec/lib/admin_module/guideline_spec.rb +177 -0
- data/spec/lib/admin_module/locks_spec.rb +188 -0
- data/spec/lib/admin_module/rules_spec.rb +110 -0
- data/spec/lib/admin_module/rulesets_spec.rb +85 -0
- data/spec/lib/admin_module/snapshot_spec.rb +192 -0
- data/spec/lib/admin_module/stages_spec.rb +179 -0
- data/spec/lib/admin_module/tasks_spec.rb +196 -0
- data/spec/spec_helper.rb +54 -0
- data/spec/support/asserts.rb +13 -0
- data/spec/support/data_clearing.rb +28 -0
- data/spec/support/dirs.rb +54 -0
- data/spec/support/helpers.rb +83 -0
- data/spec/support/lock.rb +23 -0
- data/spec/support/mocks.rb +213 -0
- data/spec/support/snapshot.rb +28 -0
- data/spec/support/stage.rb +22 -0
- data/spec/support/stage_factory.rb +138 -0
- data/spec/support/task.rb +23 -0
- metadata +381 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
##############################################################################
|
|
2
|
+
# File:: cli_parameter.rb
|
|
3
|
+
# Purpose:: filedescription
|
|
4
|
+
#
|
|
5
|
+
# Author:: Jeff McAffee 2014-03-19
|
|
6
|
+
# Copyright:: Copyright (c) 2014, kTech Systems LLC. All rights reserved.
|
|
7
|
+
# Website:: http://ktechsystems.com
|
|
8
|
+
##############################################################################
|
|
9
|
+
|
|
10
|
+
require 'admin_module/pages'
|
|
11
|
+
|
|
12
|
+
class AdminModule::CLI
|
|
13
|
+
include AdminModule::Pages
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def get_parameters
|
|
17
|
+
login
|
|
18
|
+
|
|
19
|
+
parameters_page = ParametersPage.new(browser, base_url)
|
|
20
|
+
variables = parameters_page.get_parameters
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
###
|
|
24
|
+
# Update a parameter's config values.
|
|
25
|
+
# - var_name name of parameter to update
|
|
26
|
+
# - params hash of values to update where:
|
|
27
|
+
# - :name is name of parameter
|
|
28
|
+
# - :type is Boolean, Date, DateTime, Money, Numeric, Percentage, or Text (case sensitive)
|
|
29
|
+
# - :decision is DSM when true, DPM when false
|
|
30
|
+
# - :order Fixnum value
|
|
31
|
+
# - :precision Only valid if :type is Numeric
|
|
32
|
+
# - :include include in app XML if true
|
|
33
|
+
#
|
|
34
|
+
def update_parameter(var_name, params)
|
|
35
|
+
raise "Missing params" unless params.size > 0
|
|
36
|
+
|
|
37
|
+
login
|
|
38
|
+
|
|
39
|
+
parameters_page_url = ParametersPage.new(browser, base_url).edit_parameter(var_name)
|
|
40
|
+
page = ParameterPage.new(browser, false)
|
|
41
|
+
|
|
42
|
+
page.parameter_name = params.delete(:name) if params.key?(:name)
|
|
43
|
+
page.parameter_type = params.delete(:type) if params.key?(:type)
|
|
44
|
+
|
|
45
|
+
if ! params.key?(:decision).nil?
|
|
46
|
+
page.decision_parameter = params[:decision] ? 'Yes' : 'No'
|
|
47
|
+
params.delete(:decision)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
page.parameter_order = params.delete(:order) if params.key?(:order)
|
|
51
|
+
page.precision = params.delete(:precision) if params.key?(:precision)
|
|
52
|
+
|
|
53
|
+
if ! params.key?(:include).nil?
|
|
54
|
+
|
|
55
|
+
if params[:include]
|
|
56
|
+
page.check_include_in_application_xml
|
|
57
|
+
else
|
|
58
|
+
page.uncheck_include_in_application_xml
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
params.delete(:include)
|
|
62
|
+
raise ArgumentError, "Unexpected params: #{params.inspect}" unless params.size == 0
|
|
63
|
+
|
|
64
|
+
page.save
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
##############################################################################
|
|
2
|
+
# File:: cli_task.rb
|
|
3
|
+
# Purpose:: filedescription
|
|
4
|
+
#
|
|
5
|
+
# Author:: Jeff McAffee 11/15/2013
|
|
6
|
+
# Copyright:: Copyright (c) 2013, kTech Systems LLC. All rights reserved.
|
|
7
|
+
# Website:: http://ktechsystems.com
|
|
8
|
+
##############################################################################
|
|
9
|
+
|
|
10
|
+
require 'admin_module/pages'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class AdminModule::CLI
|
|
14
|
+
include AdminModule::Pages
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
##
|
|
18
|
+
# Retrieve task configuration data from the current environment
|
|
19
|
+
|
|
20
|
+
def get_task task_name
|
|
21
|
+
login
|
|
22
|
+
|
|
23
|
+
begin
|
|
24
|
+
task_def_url = TaskDefinitionsPage.new(browser, base_url).
|
|
25
|
+
modify_task(task_name)
|
|
26
|
+
rescue Watir::Exception::NoValueFoundException => e
|
|
27
|
+
raise ArgumentError, "Task [#{task_name}] not found.\n\n#{e.message}"
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
task_data = WorkflowTasksPage.new(browser, task_def_url).get_task_data
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
##
|
|
34
|
+
# Return a list of task names in the current environment
|
|
35
|
+
|
|
36
|
+
def current_task_names
|
|
37
|
+
login
|
|
38
|
+
TaskDefinitionsPage.new(browser, base_url).tasks_options
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
##
|
|
42
|
+
# Return configuration data for all tasks in the current environment
|
|
43
|
+
|
|
44
|
+
def all_tasks
|
|
45
|
+
tasks = {}
|
|
46
|
+
|
|
47
|
+
current_task_names.each do |name|
|
|
48
|
+
tasks[name] = get_task(name)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
tasks
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
##
|
|
55
|
+
# Test task data structure for validity
|
|
56
|
+
#
|
|
57
|
+
# Required:
|
|
58
|
+
# at least 1 parameter OR dts
|
|
59
|
+
|
|
60
|
+
def valid_task_data? task_data
|
|
61
|
+
if !task_data.key?(:parameters) || task_data[:parameters].empty?
|
|
62
|
+
if !task_data.key?(:dts) || task_data[:dts].empty?
|
|
63
|
+
return false
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
true
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
##
|
|
70
|
+
# Test task data structure for valid name
|
|
71
|
+
#
|
|
72
|
+
|
|
73
|
+
def task_data_has_name? task_data
|
|
74
|
+
return false unless task_data.key?(:name)
|
|
75
|
+
return false if task_data[:name].empty?
|
|
76
|
+
true
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
##
|
|
80
|
+
# Create a task in the current environment
|
|
81
|
+
|
|
82
|
+
def create_task task_data
|
|
83
|
+
raise ArgumentError, "Invalid task data: #{task_data.inspect}" unless valid_task_data?(task_data)
|
|
84
|
+
raise ArgumentError, "Missing task name: #{task_data.inspect}" unless task_data_has_name?(task_data)
|
|
85
|
+
|
|
86
|
+
login
|
|
87
|
+
|
|
88
|
+
task_def_url = TaskDefinitionsPage.new(browser, base_url).
|
|
89
|
+
create_task(task_data)
|
|
90
|
+
|
|
91
|
+
WorkflowTasksPage.new(browser, task_def_url).set_task_data task_data
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
##
|
|
95
|
+
# Modify an existing task in the current environment
|
|
96
|
+
|
|
97
|
+
def modify_task task_data, task_name = nil
|
|
98
|
+
task_name ||= task_data[:name]
|
|
99
|
+
raise ArgumentError, "Invalid task data: #{task_data.inspect}" unless valid_task_data?(task_data)
|
|
100
|
+
raise ArgumentError, "Missing task name" if (task_name.nil? || task_name.empty?)
|
|
101
|
+
|
|
102
|
+
# Make sure we populate the data's name param if empty so we don't try to write
|
|
103
|
+
# and save an empty name.
|
|
104
|
+
if task_data[:name].nil? || task_data[:name].empty?
|
|
105
|
+
task_data[:name] = task_name
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
login
|
|
109
|
+
|
|
110
|
+
task_def_url = TaskDefinitionsPage.new(browser, base_url).
|
|
111
|
+
modify_task(task_name)
|
|
112
|
+
|
|
113
|
+
WorkflowTasksPage.new(browser, task_def_url).set_task_data task_data
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
##
|
|
117
|
+
# Export all task configurations in the current environment to a file.
|
|
118
|
+
|
|
119
|
+
def export_tasks file_name
|
|
120
|
+
FileUtils.mkdir_p File.dirname(file_name)
|
|
121
|
+
File.open(file_name, 'w') do |f|
|
|
122
|
+
# Write array of task hashes.
|
|
123
|
+
f << YAML.dump(all_tasks)
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
##
|
|
128
|
+
# Import task configurations into the current environment from a file.
|
|
129
|
+
|
|
130
|
+
def import_tasks file_name
|
|
131
|
+
raise IOError, "File not found: #{file_name}" unless File.exists?(file_name)
|
|
132
|
+
|
|
133
|
+
tasks = {}
|
|
134
|
+
File.open(file_name, 'r') do |f|
|
|
135
|
+
# Write array of task hashes.
|
|
136
|
+
tasks = YAML.load(f)
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
existing_tasks = current_task_names
|
|
140
|
+
|
|
141
|
+
tasks.each do |name, data|
|
|
142
|
+
if existing_tasks.include?(name)
|
|
143
|
+
modify_task(data, name)
|
|
144
|
+
else
|
|
145
|
+
create_task(data)
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
end
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
##############################################################################
|
|
2
|
+
# File:: cli.rb
|
|
3
|
+
# Purpose:: filedescription
|
|
4
|
+
#
|
|
5
|
+
# Author:: Jeff McAffee 11/15/2013
|
|
6
|
+
# Copyright:: Copyright (c) 2013, kTech Systems LLC. All rights reserved.
|
|
7
|
+
# Website:: http://ktechsystems.com
|
|
8
|
+
##############################################################################
|
|
9
|
+
|
|
10
|
+
require 'admin_module/pages'
|
|
11
|
+
require_relative 'cli/cli_parameter'
|
|
12
|
+
require_relative 'cli/cli_rule'
|
|
13
|
+
require_relative 'cli/cli_ruleset'
|
|
14
|
+
require_relative 'cli/cli_guideline'
|
|
15
|
+
require_relative 'cli/cli_lock'
|
|
16
|
+
require_relative 'cli/cli_stage'
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class AdminModule::CLI
|
|
20
|
+
include AdminModule::Pages
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def initialize
|
|
24
|
+
# Make sure the configuration has been initialized.
|
|
25
|
+
AdminModule.configure
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
##
|
|
29
|
+
# Set the current environment
|
|
30
|
+
|
|
31
|
+
def environment=(env)
|
|
32
|
+
raise "Unknown environment [#{env}]" unless AdminModule.configuration.credentials.key?(env)
|
|
33
|
+
@env = env
|
|
34
|
+
AdminModule.configure do |config|
|
|
35
|
+
config.default_environment = env
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
##
|
|
40
|
+
# Return the current environment
|
|
41
|
+
|
|
42
|
+
def environment
|
|
43
|
+
@env ||= AdminModule.configuration.default_environment
|
|
44
|
+
@env
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
##
|
|
48
|
+
# Return the credentials for the current environment
|
|
49
|
+
|
|
50
|
+
def credentials
|
|
51
|
+
return AdminModule.configuration.credentials[environment]
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
##
|
|
55
|
+
# Return the base url for the current environment
|
|
56
|
+
|
|
57
|
+
def base_url
|
|
58
|
+
return AdminModule.configuration.base_urls[environment]
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
##
|
|
62
|
+
# Login to the Admin Module
|
|
63
|
+
#
|
|
64
|
+
# If we're already logged in, do nothing unless the +force+ flag is true.
|
|
65
|
+
#
|
|
66
|
+
# +force+ force a re-login if we've already logged in
|
|
67
|
+
|
|
68
|
+
def login(force = false)
|
|
69
|
+
if force || @login_page.nil?
|
|
70
|
+
@login_page = LoginPage.new(browser, base_url)
|
|
71
|
+
@login_page.login_as(*credentials)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
@login_page
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def logout
|
|
78
|
+
@login_page.logout
|
|
79
|
+
@login_page = nil
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
##
|
|
83
|
+
# Close the browser
|
|
84
|
+
|
|
85
|
+
def quit
|
|
86
|
+
unless @browser.nil?
|
|
87
|
+
logout
|
|
88
|
+
@browser.close
|
|
89
|
+
@browser = nil
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
##############################################################################
|
|
2
|
+
# File:: client.rb
|
|
3
|
+
# Purpose:: AdminModule client object
|
|
4
|
+
#
|
|
5
|
+
# Author:: Jeff McAffee 07/11/2014
|
|
6
|
+
#
|
|
7
|
+
##############################################################################
|
|
8
|
+
|
|
9
|
+
module AdminModule
|
|
10
|
+
class Client
|
|
11
|
+
|
|
12
|
+
attr_writer :page_factory
|
|
13
|
+
|
|
14
|
+
#
|
|
15
|
+
# Override credentials
|
|
16
|
+
#
|
|
17
|
+
|
|
18
|
+
attr_writer :user
|
|
19
|
+
attr_writer :password
|
|
20
|
+
|
|
21
|
+
def env=(environment)
|
|
22
|
+
AdminModule.configuration.current_env = environment
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def env
|
|
26
|
+
AdminModule.configuration.current_env
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def guideline
|
|
30
|
+
login
|
|
31
|
+
Guideline.new page_factory
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def rulesets
|
|
35
|
+
login
|
|
36
|
+
Rulesets.new page_factory
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def rules
|
|
40
|
+
login
|
|
41
|
+
Rules.new page_factory
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def locks
|
|
45
|
+
login
|
|
46
|
+
Locks.new page_factory
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def stages
|
|
50
|
+
login
|
|
51
|
+
Stages.new page_factory
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def dcs
|
|
55
|
+
login
|
|
56
|
+
DC.new page_factory
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def snapshots
|
|
60
|
+
login
|
|
61
|
+
Snapshots.new page_factory
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def tasks
|
|
65
|
+
login
|
|
66
|
+
Tasks.new page_factory
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def ppms
|
|
70
|
+
login
|
|
71
|
+
Ppms.new page_factory
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def page_factory
|
|
75
|
+
@page_factory ||= AdminModule::PageFactory.new
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
##
|
|
79
|
+
# Login to the admin module.
|
|
80
|
+
#
|
|
81
|
+
# If no credentials are provided, try to get credentials from the config object.
|
|
82
|
+
#
|
|
83
|
+
|
|
84
|
+
def login(user = nil, pass = nil)
|
|
85
|
+
if @logged_in
|
|
86
|
+
return true
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
user, pass = verify_credentials user, pass
|
|
90
|
+
|
|
91
|
+
logout
|
|
92
|
+
page_factory.login_page(true).login_as(user, pass)
|
|
93
|
+
@logged_in = true
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
##
|
|
97
|
+
# Logout of the admin module
|
|
98
|
+
#
|
|
99
|
+
|
|
100
|
+
def logout
|
|
101
|
+
page_factory.login_page(true).logout
|
|
102
|
+
@logged_in = false
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
##
|
|
106
|
+
# Logout of the admin module and quit the browser
|
|
107
|
+
#
|
|
108
|
+
|
|
109
|
+
def quit
|
|
110
|
+
logout
|
|
111
|
+
page_factory.login_page(false).browser.close
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
private
|
|
115
|
+
|
|
116
|
+
##
|
|
117
|
+
# If credential args are empty, attempt to look them up,
|
|
118
|
+
# first in the client attributes, then in the config obj.
|
|
119
|
+
|
|
120
|
+
def verify_credentials user, pass
|
|
121
|
+
return [user, pass] if valid_user_and_pass? user, pass
|
|
122
|
+
|
|
123
|
+
# Pull values stored in this client.
|
|
124
|
+
user, pass = @user, @password
|
|
125
|
+
return [user, pass] if valid_user_and_pass? user, pass
|
|
126
|
+
|
|
127
|
+
# Pull values stored in the config.
|
|
128
|
+
user, pass = AdminModule.configuration.user_credentials
|
|
129
|
+
return [user, pass] if valid_user_and_pass? user, pass
|
|
130
|
+
|
|
131
|
+
fail AuthenticationRequired.new("Missing credentials for #{env}")
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def valid_user_and_pass? user, pass
|
|
135
|
+
if user.nil? || user.empty?
|
|
136
|
+
return false
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
if pass.nil? || pass.empty?
|
|
140
|
+
return false
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
true
|
|
144
|
+
end
|
|
145
|
+
end # Client
|
|
146
|
+
end # AdminModule
|