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,86 @@
|
|
|
1
|
+
##############################################################################
|
|
2
|
+
# File:: guideline.rb
|
|
3
|
+
# Purpose:: Interface to guideline functionality in admin module
|
|
4
|
+
#
|
|
5
|
+
# Author:: Jeff McAffee 06/30/2014
|
|
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
|
+
module AdminModule
|
|
13
|
+
|
|
14
|
+
class Guideline
|
|
15
|
+
attr_reader :page_factory
|
|
16
|
+
|
|
17
|
+
def initialize(page_factory)
|
|
18
|
+
@page_factory = page_factory
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def deploy srcdir, comments = nil
|
|
22
|
+
files = Pathname(srcdir).each_child.select { |f| f.file? && f.extname == '.xml' }
|
|
23
|
+
|
|
24
|
+
files.each do |file|
|
|
25
|
+
deploy_file file, comments
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def deploy_file xmlfile, comments = nil
|
|
30
|
+
gdlname = mapped_guideline(xmlfile)
|
|
31
|
+
|
|
32
|
+
page = guidelines_page
|
|
33
|
+
.open_guideline(gdlname)
|
|
34
|
+
.add_version
|
|
35
|
+
.upload(xmlfile.expand_path, comments_or_default(comments))
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def version gdls, comments = nil
|
|
39
|
+
gdls = Array(gdls)
|
|
40
|
+
page = guidelines_page
|
|
41
|
+
.version_all
|
|
42
|
+
|
|
43
|
+
gdl_list = page.get_guidelines
|
|
44
|
+
|
|
45
|
+
version_list = []
|
|
46
|
+
not_found_list = []
|
|
47
|
+
gdls.each do |gdl|
|
|
48
|
+
if gdl_list.include? gdl
|
|
49
|
+
version_list << gdl
|
|
50
|
+
else
|
|
51
|
+
mapped_name = mapped_guideline gdl
|
|
52
|
+
if mapped_name.nil?
|
|
53
|
+
not_found_list << gdl
|
|
54
|
+
else
|
|
55
|
+
version_list << mapped_name
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
if not_found_list.count > 0
|
|
61
|
+
puts "Can't find the following guidelines in the available list:"
|
|
62
|
+
not_found_list.each do |nf|
|
|
63
|
+
puts " #{nf}"
|
|
64
|
+
end
|
|
65
|
+
return page
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
page.version(version_list, comments_or_default(comments))
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
private
|
|
72
|
+
|
|
73
|
+
def guidelines_page
|
|
74
|
+
page_factory.guidelines_page
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def mapped_guideline xmlfile
|
|
78
|
+
AdminModule.configuration.xmlmap Pathname(xmlfile).basename('.xml').to_s
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def comments_or_default comments
|
|
82
|
+
return AdminModule.configuration.default_comment if comments.nil? || comments.empty?
|
|
83
|
+
comments
|
|
84
|
+
end
|
|
85
|
+
end # class Guideline
|
|
86
|
+
end # module
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
##############################################################################
|
|
2
|
+
# File:: locks.rb
|
|
3
|
+
# Purpose:: Interface to locks functionality in admin module
|
|
4
|
+
#
|
|
5
|
+
# Author:: Jeff McAffee 2014-07-18
|
|
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
|
+
module AdminModule
|
|
13
|
+
|
|
14
|
+
class Locks
|
|
15
|
+
attr_reader :page_factory
|
|
16
|
+
|
|
17
|
+
def initialize(page_factory)
|
|
18
|
+
@page_factory = page_factory
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def rename src, dest
|
|
22
|
+
src = assert_lock_exists( extract_lock_name(src) )
|
|
23
|
+
dest = assert_lock_does_not_exist( extract_lock_name(dest) )
|
|
24
|
+
|
|
25
|
+
locks_page
|
|
26
|
+
.modify(src)
|
|
27
|
+
.set_name(dest)
|
|
28
|
+
.save
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def list
|
|
32
|
+
locks_page.get_locks
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def create lock
|
|
36
|
+
lock_name = assert_lock_does_not_exist( extract_lock_name(lock) )
|
|
37
|
+
|
|
38
|
+
locks_page
|
|
39
|
+
.add
|
|
40
|
+
.set_lock_data(lock)
|
|
41
|
+
.save
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def read lock
|
|
45
|
+
lock_name = assert_lock_exists( extract_lock_name(lock) )
|
|
46
|
+
|
|
47
|
+
locks_page
|
|
48
|
+
.modify( lock_name )
|
|
49
|
+
.get_lock_data
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def update lock
|
|
53
|
+
lock_name = assert_lock_exists( extract_lock_name(lock) )
|
|
54
|
+
|
|
55
|
+
locks_page
|
|
56
|
+
.modify( lock_name )
|
|
57
|
+
.set_lock_data(lock)
|
|
58
|
+
.save
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
#
|
|
62
|
+
# No functionality exists to DELETE locks.
|
|
63
|
+
#
|
|
64
|
+
|
|
65
|
+
def export file_path
|
|
66
|
+
locks = list
|
|
67
|
+
export_data = {}
|
|
68
|
+
|
|
69
|
+
locks.each do |lock|
|
|
70
|
+
export_data[lock] = read lock
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
File.open(file_path, 'w') do |f|
|
|
74
|
+
f.write export_data.to_yaml
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
rescue Exception => e
|
|
78
|
+
if e.message.include? 'No such file or directory'
|
|
79
|
+
raise IOError, "No such directory - #{file_path}"
|
|
80
|
+
else
|
|
81
|
+
raise e
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
##
|
|
86
|
+
# Import lock configurations into the current environment from a file.
|
|
87
|
+
|
|
88
|
+
def import file_path, allow_create = false
|
|
89
|
+
raise IOError, "File not found: #{file_path}" unless File.exists?(file_path)
|
|
90
|
+
|
|
91
|
+
locks = {}
|
|
92
|
+
File.open(file_path, 'r') do |f|
|
|
93
|
+
# Read array of lock hashes.
|
|
94
|
+
locks = YAML.load(f)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
existing_locks = list
|
|
98
|
+
|
|
99
|
+
locks.each do |name, data|
|
|
100
|
+
if existing_locks.include?(name)
|
|
101
|
+
update(data)
|
|
102
|
+
else
|
|
103
|
+
if allow_create
|
|
104
|
+
create(data)
|
|
105
|
+
else
|
|
106
|
+
puts "Unable to create #{name}. allow_create = false"
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
private
|
|
113
|
+
|
|
114
|
+
def locks_page
|
|
115
|
+
page_factory.locks_page
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def extract_lock_name lock
|
|
119
|
+
lock_name = if lock.is_a? Hash
|
|
120
|
+
lock[:name]
|
|
121
|
+
else
|
|
122
|
+
String(lock)
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def assert_lock_exists lock_name
|
|
127
|
+
unless list.include? lock_name
|
|
128
|
+
fail ArgumentError.new("A lock named '#{lock_name}' does not exist")
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
lock_name
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def assert_lock_does_not_exist lock_name
|
|
135
|
+
if list.include? lock_name
|
|
136
|
+
fail ArgumentError.new("A lock named '#{lock_name}' already exists")
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
lock_name
|
|
140
|
+
end
|
|
141
|
+
end # class Locks
|
|
142
|
+
end # module
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
##############################################################################
|
|
2
|
+
# File:: page_factory.rb
|
|
3
|
+
# Purpose:: Provides Page objects
|
|
4
|
+
#
|
|
5
|
+
# Author:: Jeff McAffee 06/30/2014
|
|
6
|
+
#
|
|
7
|
+
##############################################################################
|
|
8
|
+
|
|
9
|
+
require 'admin_module/pages'
|
|
10
|
+
|
|
11
|
+
module AdminModule
|
|
12
|
+
class PageFactory
|
|
13
|
+
include AdminModule::Pages
|
|
14
|
+
|
|
15
|
+
def login_page(goto_page = true)
|
|
16
|
+
return Pages::LoginPage.new(browser, goto_page)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def guidelines_page(goto_page = true)
|
|
20
|
+
return Pages::GuidelinesPage.new(browser, goto_page)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def rulesets_page(goto_page = true)
|
|
24
|
+
return Pages::RulesetsPage.new(browser, goto_page)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def rules_page(goto_page = true)
|
|
28
|
+
return Pages::RulesPage.new(browser, goto_page)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def locks_page(goto_page = true)
|
|
32
|
+
return Pages::LockDefinitionsPage.new(browser, goto_page)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def stages_page(goto_page = true)
|
|
36
|
+
return Pages::WorkflowDetailsPage.new(browser, goto_page)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def dc_definitions_page(goto_page = true)
|
|
40
|
+
return Pages::DcDefinitionsPage.new(browser, goto_page)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def snapshot_definitions_page(goto_page = true)
|
|
44
|
+
return Pages::SnapshotDefinitionsPage.new(browser, goto_page)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def tasks_page(goto_page = true)
|
|
48
|
+
return Pages::WorkflowTasksPage.new(browser, goto_page)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def ppms_page(goto_page = true)
|
|
52
|
+
return Pages::PpmsPage.new(browser, goto_page)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end # AdminModule
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
##############################################################################
|
|
2
|
+
# File:: pages.rb
|
|
3
|
+
# Purpose:: Require all Page classes
|
|
4
|
+
#
|
|
5
|
+
# Author:: Jeff McAffee 11/15/2013
|
|
6
|
+
#
|
|
7
|
+
##############################################################################
|
|
8
|
+
|
|
9
|
+
require 'watir-webdriver'
|
|
10
|
+
require 'ktutils/os'
|
|
11
|
+
require 'admin_module/pages/select_list_syncable'
|
|
12
|
+
require 'admin_module/pages/login_page'
|
|
13
|
+
require 'admin_module/pages/guidelines_page'
|
|
14
|
+
require 'admin_module/pages/guidelines_version_all_page'
|
|
15
|
+
require 'admin_module/pages/guideline_page'
|
|
16
|
+
require 'admin_module/pages/guideline_version_page'
|
|
17
|
+
require 'admin_module/pages/lock_definitions_page'
|
|
18
|
+
require 'admin_module/pages/lock_definition_page'
|
|
19
|
+
require 'admin_module/pages/workflow_details_page'
|
|
20
|
+
require 'admin_module/pages/workflow_detail_page'
|
|
21
|
+
require 'admin_module/pages/workflow_detail_task_addl_detail_page'
|
|
22
|
+
require 'admin_module/pages/workflow_detail_task_screens_page'
|
|
23
|
+
require 'admin_module/pages/workflow_detail_task_mappings_page'
|
|
24
|
+
require 'admin_module/pages/rules_page'
|
|
25
|
+
require 'admin_module/pages/rule_page'
|
|
26
|
+
require 'admin_module/pages/rulesets_page'
|
|
27
|
+
require 'admin_module/pages/ruleset_page'
|
|
28
|
+
require 'admin_module/pages/parameters_page'
|
|
29
|
+
require 'admin_module/pages/parameter_page'
|
|
30
|
+
require 'admin_module/pages/dc_definitions_page'
|
|
31
|
+
require 'admin_module/pages/dc_detail_page'
|
|
32
|
+
require 'admin_module/pages/snapshot_definitions_page'
|
|
33
|
+
require 'admin_module/pages/snapshot_detail_page'
|
|
34
|
+
require 'admin_module/pages/workflow_task_page'
|
|
35
|
+
require 'admin_module/pages/workflow_tasks_page'
|
|
36
|
+
require 'admin_module/pages/ppms_page'
|
|
37
|
+
|
|
38
|
+
module AdminModule::Pages
|
|
39
|
+
|
|
40
|
+
##
|
|
41
|
+
# Return a configured browser object. If a browser has already been created,
|
|
42
|
+
# this returns the existing browser.
|
|
43
|
+
#
|
|
44
|
+
# An +at_exit+ proc is created to close the browser when the program exits.
|
|
45
|
+
|
|
46
|
+
def browser
|
|
47
|
+
if @browser.nil?
|
|
48
|
+
@browser = configure_browser
|
|
49
|
+
|
|
50
|
+
at_exit do
|
|
51
|
+
@browser.close unless @browser.nil?
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
@browser
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
private
|
|
59
|
+
|
|
60
|
+
def chromium_exe
|
|
61
|
+
if Ktutils::OS.windows?
|
|
62
|
+
# Downloaded from http://chromium.woolyss.com/
|
|
63
|
+
# Package: Chromium Package (32-bit)
|
|
64
|
+
# Version: 37.0.2011.0 (272392)
|
|
65
|
+
chromium_exe = File.absolute_path(File.join(__FILE__, '../../../bin/chrome-win32/chrome.exe'))
|
|
66
|
+
else
|
|
67
|
+
chromium_exe = `which chromium-browser`.chomp
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def configure_browser
|
|
72
|
+
# Specify chrome browser capabilities.
|
|
73
|
+
caps = Selenium::WebDriver::Remote::Capabilities.chrome
|
|
74
|
+
caps['chromeOptions'] = {'binary' => chromium_exe }
|
|
75
|
+
#caps['chromeOptions'] = {'binary' => '/opt/bin/test/chrome-27.0.1453.94.exe' }
|
|
76
|
+
# See http://peter.sh/experiments/chromium-command-line-switches/ for a list of available switches.
|
|
77
|
+
# See https://sites.google.com/a/chromium.org/chromedriver/capabilities for details on setting ChromeDriver caps.
|
|
78
|
+
|
|
79
|
+
# NOTE: The only way I've found to stop the EULA from being displayed is to
|
|
80
|
+
# use the user-data-dir switch and point to a dir where chrome can put the
|
|
81
|
+
# data indicating it (EULA) has already been accepted.
|
|
82
|
+
|
|
83
|
+
# Store chrome profile at test/chrome-data.
|
|
84
|
+
# user_data_dir must be expanded to a full (absolute) path. A relative path
|
|
85
|
+
# results in chromedriver failing to start.
|
|
86
|
+
user_data_dir = File.expand_path('test/chrome-data')
|
|
87
|
+
#puts "*** user_data_dir location: #{user_data_dir}"
|
|
88
|
+
|
|
89
|
+
# Create the data dir if it doesn't exist (or chromedriver fails to start).
|
|
90
|
+
unless File.exists?(user_data_dir) and File.directory?(user_data_dir)
|
|
91
|
+
FileUtils.makedirs user_data_dir
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# ignore-certificate-errors: Ignores certificate-related errors.
|
|
95
|
+
# disable-popup-blocking: Disable pop-up blocking.
|
|
96
|
+
# disable-translate: Allows disabling of translate from the command line to assist with automated browser testing
|
|
97
|
+
# no-first-run: Skip First Run tasks, whether or not it's actually the First Run.
|
|
98
|
+
# log-level: Sets the minimum log level. Valid values are from 0 to 3: INFO = 0, WARNING = 1, LOG_ERROR = 2, LOG_FATAL = 3.
|
|
99
|
+
switches = %w[--ignore-certificate-errors --disable-popup-blocking --disable-translate --no-first-run --log-level=3]
|
|
100
|
+
switches << "--user-data-dir=#{user_data_dir}"
|
|
101
|
+
|
|
102
|
+
proxy_port = ENV['BROWSER_PROXY_PORT']
|
|
103
|
+
unless proxy_port.nil? || proxy_port.empty?
|
|
104
|
+
proxy_connection_string = "socks://localhost:#{proxy_port}"
|
|
105
|
+
switches << "--proxy-server=#{proxy_connection_string}"
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# Create a client so we can adjust the timeout period.
|
|
109
|
+
client = Selenium::WebDriver::Remote::Http::Default.new
|
|
110
|
+
|
|
111
|
+
# Set the browser timeout. Default is 60 seconds.
|
|
112
|
+
client.timeout = AdminModule.configuration.browser_timeout
|
|
113
|
+
|
|
114
|
+
browser = Watir::Browser.new :chrome,
|
|
115
|
+
:switches => switches,
|
|
116
|
+
:http_client => client,
|
|
117
|
+
:service_log_path => user_data_dir + '/chromedriver.out',
|
|
118
|
+
:desired_capabilities => caps
|
|
119
|
+
end
|
|
120
|
+
end
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
##############################################################################
|
|
2
|
+
# File:: dc_definitions_page.rb
|
|
3
|
+
# Purpose:: Data Clearing Definitions page
|
|
4
|
+
#
|
|
5
|
+
# Note that the admin module has at least 3 pages that all reference
|
|
6
|
+
# the same url with the difference being the 'type' parameter.
|
|
7
|
+
#
|
|
8
|
+
# The DataClearing page has a type of 3:
|
|
9
|
+
#
|
|
10
|
+
# admin/security/ViewDefinitions.aspx?type=3
|
|
11
|
+
#
|
|
12
|
+
# Author:: Jeff McAffee 04/01/2015
|
|
13
|
+
#
|
|
14
|
+
##############################################################################
|
|
15
|
+
require 'page-object'
|
|
16
|
+
|
|
17
|
+
module AdminModule
|
|
18
|
+
module Pages
|
|
19
|
+
class DcDefinitionsPage
|
|
20
|
+
include PageObject
|
|
21
|
+
|
|
22
|
+
page_url(:get_dynamic_url)
|
|
23
|
+
|
|
24
|
+
def get_dynamic_url
|
|
25
|
+
AdminModule.configuration.base_url + "/admin/security/ViewDefinitions.aspx?type=3"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
select_list(:definitions,
|
|
29
|
+
id: 'ctl00_cntPlh_elViews_lstItems')
|
|
30
|
+
|
|
31
|
+
button(:add_button,
|
|
32
|
+
id: 'ctl00_cntPlh_elViews_btnAdd')
|
|
33
|
+
|
|
34
|
+
button(:modify_button,
|
|
35
|
+
id: 'ctl00_cntPlh_elViews_btnModify')
|
|
36
|
+
|
|
37
|
+
button(:delete_button,
|
|
38
|
+
id: 'ctl00_cntPlh_elViews_btnDelete')
|
|
39
|
+
|
|
40
|
+
def get_definitions
|
|
41
|
+
defn_list = []
|
|
42
|
+
Nokogiri::HTML(@browser.html).css("select#ctl00_cntPlh_elViews_lstItems>option").each do |elem|
|
|
43
|
+
defn_list << elem.text
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
defn_list
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def modify dc_name
|
|
50
|
+
definitions_element.select dc_name
|
|
51
|
+
self.modify_button
|
|
52
|
+
|
|
53
|
+
# Return the page object of the next page.
|
|
54
|
+
detail_page
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def add
|
|
58
|
+
self.add_button
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
# Return the page object of the next page.
|
|
62
|
+
detail_page
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
private
|
|
66
|
+
|
|
67
|
+
def detail_page
|
|
68
|
+
DcDetailPage.new(@browser, false)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|