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.
Files changed (141) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +19 -0
  3. data/.rspec +3 -0
  4. data/Gemfile +14 -0
  5. data/Guardfile +24 -0
  6. data/LICENSE +22 -0
  7. data/README.md +281 -0
  8. data/Rakefile +98 -0
  9. data/admin_module.gemspec +34 -0
  10. data/bin/admin_module +13 -0
  11. data/lib/admin_module.rb +260 -0
  12. data/lib/admin_module/cli.rb +54 -0
  13. data/lib/admin_module/cli/cli_guideline.rb +80 -0
  14. data/lib/admin_module/cli/cli_lock.rb +149 -0
  15. data/lib/admin_module/cli/cli_parameter.rb +66 -0
  16. data/lib/admin_module/cli/cli_task.rb +149 -0
  17. data/lib/admin_module/cli_old.rb +92 -0
  18. data/lib/admin_module/client.rb +146 -0
  19. data/lib/admin_module/command.rb +25 -0
  20. data/lib/admin_module/command/client_access.rb +43 -0
  21. data/lib/admin_module/command/config.rb +310 -0
  22. data/lib/admin_module/command/dc.rb +110 -0
  23. data/lib/admin_module/command/gdl.rb +71 -0
  24. data/lib/admin_module/command/lock.rb +110 -0
  25. data/lib/admin_module/command/ppm.rb +142 -0
  26. data/lib/admin_module/command/rule.rb +77 -0
  27. data/lib/admin_module/command/ruleset.rb +56 -0
  28. data/lib/admin_module/command/snapshot.rb +110 -0
  29. data/lib/admin_module/command/stage.rb +131 -0
  30. data/lib/admin_module/command/task.rb +110 -0
  31. data/lib/admin_module/config_helper.rb +33 -0
  32. data/lib/admin_module/dc.rb +133 -0
  33. data/lib/admin_module/guideline.rb +86 -0
  34. data/lib/admin_module/locks.rb +142 -0
  35. data/lib/admin_module/page_factory.rb +55 -0
  36. data/lib/admin_module/pages.rb +120 -0
  37. data/lib/admin_module/pages/dc_definitions_page.rb +73 -0
  38. data/lib/admin_module/pages/dc_detail_page.rb +187 -0
  39. data/lib/admin_module/pages/guideline_page.rb +35 -0
  40. data/lib/admin_module/pages/guideline_version_page.rb +140 -0
  41. data/lib/admin_module/pages/guidelines_page.rb +59 -0
  42. data/lib/admin_module/pages/guidelines_version_all_page.rb +116 -0
  43. data/lib/admin_module/pages/lock_definition_page.rb +178 -0
  44. data/lib/admin_module/pages/lock_definitions_page.rb +69 -0
  45. data/lib/admin_module/pages/login_page.rb +75 -0
  46. data/lib/admin_module/pages/parameter_page.rb +62 -0
  47. data/lib/admin_module/pages/parameters_page.rb +46 -0
  48. data/lib/admin_module/pages/ppms_page.rb +110 -0
  49. data/lib/admin_module/pages/rule_page.rb +68 -0
  50. data/lib/admin_module/pages/rules_page.rb +74 -0
  51. data/lib/admin_module/pages/ruleset_page.rb +64 -0
  52. data/lib/admin_module/pages/rulesets_page.rb +60 -0
  53. data/lib/admin_module/pages/select_list_syncable.rb +64 -0
  54. data/lib/admin_module/pages/snapshot_definitions_page.rb +73 -0
  55. data/lib/admin_module/pages/snapshot_detail_page.rb +246 -0
  56. data/lib/admin_module/pages/workflow_detail_page.rb +451 -0
  57. data/lib/admin_module/pages/workflow_detail_task_addl_detail_page.rb +172 -0
  58. data/lib/admin_module/pages/workflow_detail_task_mappings_page.rb +163 -0
  59. data/lib/admin_module/pages/workflow_detail_task_screens_page.rb +75 -0
  60. data/lib/admin_module/pages/workflow_details_page.rb +67 -0
  61. data/lib/admin_module/pages/workflow_task_page.rb +107 -0
  62. data/lib/admin_module/pages/workflow_tasks_page.rb +111 -0
  63. data/lib/admin_module/ppms.rb +78 -0
  64. data/lib/admin_module/rake.rb +22 -0
  65. data/lib/admin_module/rake/dc_tasks.rb +185 -0
  66. data/lib/admin_module/rake/deploy_task.rb +59 -0
  67. data/lib/admin_module/rake/gdl_tasks.rb +189 -0
  68. data/lib/admin_module/rake/lock_tasks.rb +189 -0
  69. data/lib/admin_module/rake/parameter_task.rb +86 -0
  70. data/lib/admin_module/rake/ppm_tasks.rb +248 -0
  71. data/lib/admin_module/rake/rule_tasks.rb +157 -0
  72. data/lib/admin_module/rake/snapshot_tasks.rb +223 -0
  73. data/lib/admin_module/rake/stage_tasks.rb +197 -0
  74. data/lib/admin_module/rake/stages_task.rb +197 -0
  75. data/lib/admin_module/rake/task_tasks.rb +189 -0
  76. data/lib/admin_module/rules.rb +50 -0
  77. data/lib/admin_module/rulesets.rb +42 -0
  78. data/lib/admin_module/snapshots.rb +133 -0
  79. data/lib/admin_module/stages.rb +171 -0
  80. data/lib/admin_module/tasks.rb +147 -0
  81. data/lib/admin_module/version.rb +3 -0
  82. data/old_spec/lib/admin_module/cli_configuration_spec.rb +126 -0
  83. data/old_spec/lib/admin_module/cli_create_stage_spec.rb +89 -0
  84. data/old_spec/lib/admin_module/cli_delete_rule_spec.rb +57 -0
  85. data/old_spec/lib/admin_module/cli_deploy_spec.rb +57 -0
  86. data/old_spec/lib/admin_module/cli_export_locks_spec.rb +62 -0
  87. data/old_spec/lib/admin_module/cli_export_stages_spec.rb +62 -0
  88. data/old_spec/lib/admin_module/cli_guidelines_version_all_spec.rb +58 -0
  89. data/old_spec/lib/admin_module/cli_import_locks_spec.rb +153 -0
  90. data/old_spec/lib/admin_module/cli_import_stages_spec.rb +173 -0
  91. data/old_spec/lib/admin_module/cli_modify_locks_spec.rb +128 -0
  92. data/old_spec/lib/admin_module/cli_modify_stages_spec.rb +88 -0
  93. data/old_spec/lib/admin_module/cli_rename_rule_spec.rb +53 -0
  94. data/old_spec/lib/admin_module/cli_rename_ruleset_spec.rb +53 -0
  95. data/old_spec/lib/admin_module/cli_var_spec.rb +41 -0
  96. data/old_spec/lib/admin_module/rake/deploy_task_spec.rb +85 -0
  97. data/old_spec/lib/admin_module/rake/parameter_task_spec.rb +58 -0
  98. data/old_spec/lib/admin_module/rake/rules_task_spec.rb +75 -0
  99. data/spec/data/build/test1.xml +0 -0
  100. data/spec/data/build/test2.xml +1 -0
  101. data/spec/data/import_dcs.yml +31 -0
  102. data/spec/data/import_locks.yml +4 -0
  103. data/spec/data/import_snapshots.yml +35 -0
  104. data/spec/data/import_stages.yml +4 -0
  105. data/spec/data/import_tasks.yml +25 -0
  106. data/spec/data/patch-test.xml +1 -0
  107. data/spec/data/remove_test_del_rule.xml +1 -0
  108. data/spec/data/stages.yml +518 -0
  109. data/spec/data/test_del_rule.xml +1 -0
  110. data/spec/lib/admin_module/admin_module_spec.rb +175 -0
  111. data/spec/lib/admin_module/cli_spec.rb +36 -0
  112. data/spec/lib/admin_module/client_spec.rb +158 -0
  113. data/spec/lib/admin_module/command/config_spec.rb +477 -0
  114. data/spec/lib/admin_module/command/dc_spec.rb +202 -0
  115. data/spec/lib/admin_module/command/gdl_spec.rb +139 -0
  116. data/spec/lib/admin_module/command/lock_spec.rb +207 -0
  117. data/spec/lib/admin_module/command/rule_spec.rb +163 -0
  118. data/spec/lib/admin_module/command/ruleset_spec.rb +124 -0
  119. data/spec/lib/admin_module/command/snapshot_spec.rb +202 -0
  120. data/spec/lib/admin_module/command/stage_spec.rb +259 -0
  121. data/spec/lib/admin_module/command/task_spec.rb +207 -0
  122. data/spec/lib/admin_module/dc_spec.rb +192 -0
  123. data/spec/lib/admin_module/guideline_spec.rb +177 -0
  124. data/spec/lib/admin_module/locks_spec.rb +188 -0
  125. data/spec/lib/admin_module/rules_spec.rb +110 -0
  126. data/spec/lib/admin_module/rulesets_spec.rb +85 -0
  127. data/spec/lib/admin_module/snapshot_spec.rb +192 -0
  128. data/spec/lib/admin_module/stages_spec.rb +179 -0
  129. data/spec/lib/admin_module/tasks_spec.rb +196 -0
  130. data/spec/spec_helper.rb +54 -0
  131. data/spec/support/asserts.rb +13 -0
  132. data/spec/support/data_clearing.rb +28 -0
  133. data/spec/support/dirs.rb +54 -0
  134. data/spec/support/helpers.rb +83 -0
  135. data/spec/support/lock.rb +23 -0
  136. data/spec/support/mocks.rb +213 -0
  137. data/spec/support/snapshot.rb +28 -0
  138. data/spec/support/stage.rb +22 -0
  139. data/spec/support/stage_factory.rb +138 -0
  140. data/spec/support/task.rb +23 -0
  141. 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