openshift-origin-console 1.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/COPYRIGHT +1 -0
- data/Gemfile +21 -0
- data/LICENSE +203 -0
- data/README.md +123 -0
- data/Rakefile +44 -0
- data/app/assets/images/cartridge-edge.gif +0 -0
- data/app/assets/images/console/arrow-down.png +0 -0
- data/app/assets/images/console/console-sprite.png +0 -0
- data/app/assets/images/favicon-32.png +0 -0
- data/app/assets/images/loader-dark.gif +0 -0
- data/app/assets/images/loader.gif +0 -0
- data/app/assets/images/sprite-vert.png +0 -0
- data/app/assets/javascripts/console.js +10 -0
- data/app/assets/javascripts/console/form.js.coffee +51 -0
- data/app/assets/stylesheets/_alerts.scss +84 -0
- data/app/assets/stylesheets/_breadcrumbs.scss +31 -0
- data/app/assets/stylesheets/_buttons.scss +229 -0
- data/app/assets/stylesheets/_code.scss +86 -0
- data/app/assets/stylesheets/_custom.scss +207 -0
- data/app/assets/stylesheets/_footer.scss +54 -0
- data/app/assets/stylesheets/_forms.scss +710 -0
- data/app/assets/stylesheets/_grid.scss +28 -0
- data/app/assets/stylesheets/_input-prepend-append.scss +138 -0
- data/app/assets/stylesheets/_labels.scss +40 -0
- data/app/assets/stylesheets/_mixins.scss +76 -0
- data/app/assets/stylesheets/_override-variables.scss +1 -0
- data/app/assets/stylesheets/_responsive.scss +438 -0
- data/app/assets/stylesheets/_ribbon.scss +57 -0
- data/app/assets/stylesheets/_type.scss +306 -0
- data/app/assets/stylesheets/_utilities.scss +10 -0
- data/app/assets/stylesheets/_variables.scss +131 -0
- data/app/assets/stylesheets/common.css.scss +82 -0
- data/app/assets/stylesheets/console/_application.scss +194 -0
- data/app/assets/stylesheets/console/_base.scss +26 -0
- data/app/assets/stylesheets/console/_breadcrumbs.scss +32 -0
- data/app/assets/stylesheets/console/_buttons.scss +214 -0
- data/app/assets/stylesheets/console/_core.scss +1002 -0
- data/app/assets/stylesheets/console/_dropdowns.scss +63 -0
- data/app/assets/stylesheets/console/_help.scss +54 -0
- data/app/assets/stylesheets/console/_mixins.scss +11 -0
- data/app/assets/stylesheets/console/_navbar.scss +415 -0
- data/app/assets/stylesheets/console/_ribbon.scss +82 -0
- data/app/assets/stylesheets/console/_tile.scss +122 -0
- data/app/assets/stylesheets/origin.css.scss +37 -0
- data/app/controllers/account/dashboard.rb +13 -0
- data/app/controllers/account_controller.rb +3 -0
- data/app/controllers/application_types_controller.rb +80 -0
- data/app/controllers/applications_controller.rb +183 -0
- data/app/controllers/building_controller.rb +81 -0
- data/app/controllers/capability_aware.rb +18 -0
- data/app/controllers/cartridge_types_controller.rb +53 -0
- data/app/controllers/cartridges_controller.rb +43 -0
- data/app/controllers/console/auth/basic.rb +65 -0
- data/app/controllers/console/auth/none.rb +5 -0
- data/app/controllers/console/auth/remote_user.rb +69 -0
- data/app/controllers/console/rescue.rb +48 -0
- data/app/controllers/console_controller.rb +19 -0
- data/app/controllers/console_index_controller.rb +14 -0
- data/app/controllers/domain_aware.rb +26 -0
- data/app/controllers/domain_session_sweeper.rb +29 -0
- data/app/controllers/domains_controller.rb +30 -0
- data/app/controllers/keys_controller.rb +43 -0
- data/app/controllers/scaling_controller.rb +46 -0
- data/app/controllers/sshkey_aware.rb +23 -0
- data/app/controllers/sshkey_session_sweeper.rb +29 -0
- data/app/controllers/user_session_sweeper.rb +29 -0
- data/app/helpers/console/community_helper.rb +78 -0
- data/app/helpers/console/console_helper.rb +26 -0
- data/app/helpers/console/help_helper.rb +270 -0
- data/app/helpers/console/html5_boilerplate_helper.rb +63 -0
- data/app/helpers/console/layout_helper.rb +277 -0
- data/app/helpers/console/model_helper.rb +106 -0
- data/app/helpers/console/secured_helper.rb +5 -0
- data/app/models/alias.rb +10 -0
- data/app/models/application.rb +148 -0
- data/app/models/application_associations.rb +36 -0
- data/app/models/application_template.rb +90 -0
- data/app/models/application_type.rb +258 -0
- data/app/models/async_aware.rb +60 -0
- data/app/models/capabilities.rb +62 -0
- data/app/models/cartridge.rb +122 -0
- data/app/models/cartridge_type.rb +140 -0
- data/app/models/domain.rb +44 -0
- data/app/models/domain_associations.rb +33 -0
- data/app/models/embedded.rb +11 -0
- data/app/models/gear.rb +13 -0
- data/app/models/gear_group.rb +104 -0
- data/app/models/key.rb +87 -0
- data/app/models/quickstart.rb +135 -0
- data/app/models/rest_api.rb +130 -0
- data/app/models/rest_api/base.rb +781 -0
- data/app/models/rest_api/cacheable.rb +91 -0
- data/app/models/rest_api/environment.rb +13 -0
- data/app/models/rest_api/info.rb +34 -0
- data/app/models/rest_api/log_subscriber.rb +29 -0
- data/app/models/rest_api/railties/controller_runtime.rb +37 -0
- data/app/models/user.rb +27 -0
- data/app/models/user_associations.rb +6 -0
- data/app/views/account/_domain.html.haml +14 -0
- data/app/views/account/_keys.html.haml +20 -0
- data/app/views/account/_user.html.haml +5 -0
- data/app/views/account/show.html.haml +15 -0
- data/app/views/application_templates/_application_template.html.haml +5 -0
- data/app/views/application_types/_application_type.html.haml +19 -0
- data/app/views/application_types/_custom.html.haml +19 -0
- data/app/views/application_types/_persisted.html.haml +26 -0
- data/app/views/application_types/_tile.html.haml +9 -0
- data/app/views/application_types/index.html.haml +87 -0
- data/app/views/application_types/search.html.haml +67 -0
- data/app/views/application_types/show.html.haml +219 -0
- data/app/views/applications/_application.html.haml +34 -0
- data/app/views/applications/_applications_filter.html.haml +8 -0
- data/app/views/applications/_footer.html.haml +0 -0
- data/app/views/applications/_name.html.haml +28 -0
- data/app/views/applications/delete.html.haml +19 -0
- data/app/views/applications/get_started.html.haml +145 -0
- data/app/views/applications/index.html.haml +55 -0
- data/app/views/applications/show.html.haml +193 -0
- data/app/views/building/delete.html.haml +22 -0
- data/app/views/building/new.html.haml +57 -0
- data/app/views/building/show.html.haml +12 -0
- data/app/views/cartridge_types/_cartridge_type.html.haml +61 -0
- data/app/views/cartridge_types/index.html.haml +37 -0
- data/app/views/cartridge_types/show.html.haml +21 -0
- data/app/views/cartridges/next_steps.html.haml +58 -0
- data/app/views/cartridges/show.html.haml +1 -0
- data/app/views/console/error.html.haml +58 -0
- data/app/views/console/help.html.haml +90 -0
- data/app/views/console/not_found.html.haml +69 -0
- data/app/views/console/unauthorized.html.haml +7 -0
- data/app/views/domains/_domain.html.haml +14 -0
- data/app/views/domains/_form.html.haml +13 -0
- data/app/views/domains/edit.html.haml +5 -0
- data/app/views/domains/new.html.haml +6 -0
- data/app/views/keys/_form.html.haml +14 -0
- data/app/views/keys/_simple_form.html.haml +14 -0
- data/app/views/keys/new.html.haml +2 -0
- data/app/views/layouts/_footer.html.haml +38 -0
- data/app/views/layouts/_head.html.haml +35 -0
- data/app/views/layouts/console.html.haml +60 -0
- data/app/views/layouts/console/_header.html.haml +44 -0
- data/app/views/layouts/console/_identity.html.haml +7 -0
- data/app/views/layouts/console/_javascripts.html.haml +5 -0
- data/app/views/layouts/console/_stylesheets.html.haml +6 -0
- data/app/views/scaling/delete.html.haml +17 -0
- data/app/views/scaling/new.html.haml +24 -0
- data/app/views/scaling/show.html.haml +81 -0
- data/app/views/shared/_tracking.html.haml +0 -0
- data/conf/console.conf.example +108 -0
- data/conf/openshift_console.conf +10 -0
- data/config/cartridge_types.yml +54 -0
- data/config/initializers/barista_config.rb +86 -0
- data/config/initializers/cartridge_types.rb +5 -0
- data/config/initializers/console_security.rb +1 -0
- data/config/initializers/date_helper.rb +5 -0
- data/config/initializers/extended_logger.rb +51 -0
- data/config/initializers/formtastic.rb +100 -0
- data/config/initializers/inflections.rb +38 -0
- data/config/initializers/rdiscount.rb +8 -0
- data/config/initializers/rest_api.rb +22 -0
- data/config/initializers/sass.rb +30 -0
- data/config/initializers/session_trace.rb +32 -0
- data/config/initializers/x_frame_options.rb +53 -0
- data/config/locales/en.yml +12 -0
- data/lib/active_resource/associations.rb +107 -0
- data/lib/active_resource/associations/builder/association.rb +35 -0
- data/lib/active_resource/associations/builder/belongs_to.rb +5 -0
- data/lib/active_resource/associations/builder/has_many.rb +5 -0
- data/lib/active_resource/associations/builder/has_one.rb +5 -0
- data/lib/active_resource/persistent_connection.rb +341 -0
- data/lib/active_resource/persistent_http_mock.rb +68 -0
- data/lib/active_resource/reflection.rb +78 -0
- data/lib/console.rb +8 -0
- data/lib/console/config_file.rb +13 -0
- data/lib/console/configuration.rb +163 -0
- data/lib/console/engine.rb +28 -0
- data/lib/console/formtastic/bootstrap_form_builder.rb +369 -0
- data/lib/console/rails/app_redirector.rb +40 -0
- data/lib/console/rails/filter_hash.rb +15 -0
- data/lib/console/rails/routes.rb +51 -0
- data/lib/console/version.rb +5 -0
- data/lib/tasks/assets.rake +79 -0
- data/lib/tasks/stats.rake +18 -0
- data/lib/tasks/test_suites.rake +73 -0
- data/test/coverage_helper.rb +27 -0
- data/test/fixtures/cartridges.json +1 -0
- data/test/fixtures/quickstarts.csv +3 -0
- data/test/functional/account_controller_test.rb +14 -0
- data/test/functional/application_types_controller_test.rb +251 -0
- data/test/functional/applications_controller_sanity_test.rb +26 -0
- data/test/functional/applications_controller_test.rb +365 -0
- data/test/functional/building_controller_test.rb +203 -0
- data/test/functional/cartridge_types_controller_isolation_test.rb +68 -0
- data/test/functional/cartridge_types_controller_test.rb +48 -0
- data/test/functional/cartridges_controller_test.rb +83 -0
- data/test/functional/console_auth_basic_controller_test.rb +82 -0
- data/test/functional/console_auth_remote_user_controller_test.rb +90 -0
- data/test/functional/console_index_controller_test.rb +22 -0
- data/test/functional/domains_controller_test.rb +194 -0
- data/test/functional/keys_controller_test.rb +163 -0
- data/test/functional/quickstarts.json +18 -0
- data/test/functional/scaling_controller_test.rb +153 -0
- data/test/integration/assets_test.rb +34 -0
- data/test/integration/help_link_test.rb +43 -0
- data/test/integration/quickstarts_test.rb +24 -0
- data/test/integration/rescue_from_test.rb +25 -0
- data/test/integration/rest_api/application_test.rb +115 -0
- data/test/integration/rest_api/cartridge_test.rb +44 -0
- data/test/integration/rest_api/cartridge_type_test.rb +143 -0
- data/test/integration/rest_api/domain_test.rb +91 -0
- data/test/integration/rest_api/info_test.rb +9 -0
- data/test/integration/rest_api/key_test.rb +85 -0
- data/test/integration/static_pages_test.rb +44 -0
- data/test/rails_app/Rakefile +7 -0
- data/test/rails_app/app/controllers/application_controller.rb +5 -0
- data/test/rails_app/config.ru +4 -0
- data/test/rails_app/config/application.rb +48 -0
- data/test/rails_app/config/boot.rb +10 -0
- data/test/rails_app/config/database.yml +25 -0
- data/test/rails_app/config/environment.rb +5 -0
- data/test/rails_app/config/environments/development.rb +38 -0
- data/test/rails_app/config/environments/production.rb +70 -0
- data/test/rails_app/config/environments/test.rb +43 -0
- data/test/rails_app/config/initializers/auth.rb +0 -0
- data/test/rails_app/config/initializers/backtrace_silencers.rb +7 -0
- data/test/rails_app/config/initializers/inflections.rb +10 -0
- data/test/rails_app/config/initializers/mime_types.rb +5 -0
- data/test/rails_app/config/initializers/secret_token.rb +7 -0
- data/test/rails_app/config/initializers/session_store.rb +8 -0
- data/test/rails_app/config/locales/en.yml +5 -0
- data/test/rails_app/config/routes.rb +4 -0
- data/test/rails_app/script/rails +6 -0
- data/test/support/auth.rb +111 -0
- data/test/support/base.rb +142 -0
- data/test/support/errors.rb +28 -0
- data/test/support/rest_api.rb +189 -0
- data/test/test_helper.rb +14 -0
- data/test/unit/active_model_compliance_test.rb +23 -0
- data/test/unit/async_aware_test.rb +55 -0
- data/test/unit/configuration_test.rb +158 -0
- data/test/unit/filter_hash_test.rb +64 -0
- data/test/unit/helpers/model_helper_test.rb +61 -0
- data/test/unit/overrides_test.rb +9 -0
- data/test/unit/rest_api_test.rb +1590 -0
- data/vendor/assets/javascripts/MIT-LICENSE.txt +20 -0
- data/vendor/assets/javascripts/bootstrap-collapse.js +157 -0
- data/vendor/assets/javascripts/bootstrap-dropdown.js +100 -0
- data/vendor/assets/javascripts/bootstrap-tab.js +135 -0
- data/vendor/assets/javascripts/bootstrap-transition.js +61 -0
- data/vendor/assets/javascripts/jquery.spin.js +47 -0
- data/vendor/assets/javascripts/jquery.ui.widget.js +16 -0
- data/vendor/assets/javascripts/jquery_cookie.js +41 -0
- data/vendor/assets/javascripts/jquery_validate_min.js +51 -0
- data/vendor/assets/javascripts/modernizr.min.js +2 -0
- data/vendor/assets/javascripts/plugins.js +16 -0
- data/vendor/assets/stylesheets/bootstrap/_accordion.scss +28 -0
- data/vendor/assets/stylesheets/bootstrap/_alerts.scss +70 -0
- data/vendor/assets/stylesheets/bootstrap/_breadcrumbs.scss +22 -0
- data/vendor/assets/stylesheets/bootstrap/_button-groups.scss +147 -0
- data/vendor/assets/stylesheets/bootstrap/_buttons.scss +183 -0
- data/vendor/assets/stylesheets/bootstrap/_carousel.scss +121 -0
- data/vendor/assets/stylesheets/bootstrap/_close.scss +18 -0
- data/vendor/assets/stylesheets/bootstrap/_code.scss +57 -0
- data/vendor/assets/stylesheets/bootstrap/_component-animations.scss +18 -0
- data/vendor/assets/stylesheets/bootstrap/_dropdowns.scss +130 -0
- data/vendor/assets/stylesheets/bootstrap/_forms.scss +522 -0
- data/vendor/assets/stylesheets/bootstrap/_grid.scss +8 -0
- data/vendor/assets/stylesheets/bootstrap/_hero-unit.scss +20 -0
- data/vendor/assets/stylesheets/bootstrap/_labels.scss +32 -0
- data/vendor/assets/stylesheets/bootstrap/_layouts.scss +17 -0
- data/vendor/assets/stylesheets/bootstrap/_mixins.scss +602 -0
- data/vendor/assets/stylesheets/bootstrap/_modals.scss +84 -0
- data/vendor/assets/stylesheets/bootstrap/_navbar.scss +299 -0
- data/vendor/assets/stylesheets/bootstrap/_navs.scss +353 -0
- data/vendor/assets/stylesheets/bootstrap/_pager.scss +30 -0
- data/vendor/assets/stylesheets/bootstrap/_pagination.scss +55 -0
- data/vendor/assets/stylesheets/bootstrap/_popovers.scss +49 -0
- data/vendor/assets/stylesheets/bootstrap/_progress-bars.scss +95 -0
- data/vendor/assets/stylesheets/bootstrap/_reset.scss +126 -0
- data/vendor/assets/stylesheets/bootstrap/_scaffolding.scss +33 -0
- data/vendor/assets/stylesheets/bootstrap/_sprites.scss +158 -0
- data/vendor/assets/stylesheets/bootstrap/_tables.scss +150 -0
- data/vendor/assets/stylesheets/bootstrap/_thumbnails.scss +35 -0
- data/vendor/assets/stylesheets/bootstrap/_tooltip.scss +35 -0
- data/vendor/assets/stylesheets/bootstrap/_type.scss +218 -0
- data/vendor/assets/stylesheets/bootstrap/_utilities.scss +23 -0
- data/vendor/assets/stylesheets/bootstrap/_variables.scss +107 -0
- data/vendor/assets/stylesheets/bootstrap/_wells.scss +17 -0
- data/vendor/assets/stylesheets/bootstrap/bootstrap.scss +66 -0
- data/vendor/assets/stylesheets/bootstrap/responsive.scss +334 -0
- metadata +506 -0
@@ -0,0 +1,40 @@
|
|
1
|
+
module ActionDispatch::Routing
|
2
|
+
class Mapper
|
3
|
+
module ApplicationRedirector
|
4
|
+
#
|
5
|
+
# Provide a redirect helper which allows the user to redirect
|
6
|
+
# to an application relative url.
|
7
|
+
#
|
8
|
+
# Usage (in routes.rb):
|
9
|
+
#
|
10
|
+
# match 'power' => app_redirect('platform')
|
11
|
+
# match 'email_confirm_express' => app_redirect {|p, req| "email_confirm?#{req.query_string}"}
|
12
|
+
#
|
13
|
+
# will generate a redirect from /<appbaseuri>/power to /<appbaseuri>/platform, regardless of
|
14
|
+
# whether Rails is run as a root site or as a subsite. Should respond to the same arguments as
|
15
|
+
# redirect.
|
16
|
+
#
|
17
|
+
def app_redirect(*args, &block)
|
18
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
19
|
+
path = args.shift || block
|
20
|
+
path_proc = path.is_a?(Proc) ? path : lambda do |params|
|
21
|
+
path % params
|
22
|
+
end
|
23
|
+
block = lambda do |params, req|
|
24
|
+
newargs = [params]
|
25
|
+
newargs << req if path_proc.arity > 1
|
26
|
+
uri = URI.join('http://localhost', "#{req.script_name}/", path_proc.call(*newargs))
|
27
|
+
Rails.logger.debug "URI #{uri}, #{req.script_name}"
|
28
|
+
if uri.host == 'localhost'
|
29
|
+
uri.request_uri
|
30
|
+
else
|
31
|
+
uri
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
redirect(block, options)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
include ApplicationRedirector
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module FilterHash
|
2
|
+
def self.safe_values(h)
|
3
|
+
tests = filters
|
4
|
+
out = nil
|
5
|
+
h.keys.each do |k|
|
6
|
+
key_s = k.to_s.downcase
|
7
|
+
(out ||= h.dup)[k] = '[FILTERED]' if tests.any?{ |s| key_s.include?(s) }
|
8
|
+
end
|
9
|
+
out || h
|
10
|
+
end
|
11
|
+
protected
|
12
|
+
def self.filters
|
13
|
+
@filters ||= Rails.application.config.filter_parameters.map(&:to_s).map(&:downcase).uniq
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module ActionDispatch::Routing
|
2
|
+
class Mapper
|
3
|
+
|
4
|
+
def openshift_console(*args)
|
5
|
+
opts = args.extract_options!
|
6
|
+
openshift_console_routes
|
7
|
+
openshift_account_routes unless (Array(opts[:skip]).include? :account || Console.config.disable_account)
|
8
|
+
root :to => 'console_index#index', :via => :get, :as => :console
|
9
|
+
end
|
10
|
+
|
11
|
+
protected
|
12
|
+
|
13
|
+
def openshift_console_routes
|
14
|
+
match 'help' => 'console_index#help', :via => :get, :as => 'console_help'
|
15
|
+
match 'unauthorized' => 'console_index#unauthorized', :via => :get, :as => 'unauthorized'
|
16
|
+
|
17
|
+
# Application specific resources
|
18
|
+
resources :application_types, :only => [:show, :index], :id => /[^\/]+/
|
19
|
+
resources :applications do
|
20
|
+
resources :cartridges, :only => [:show, :create, :index], :id => /[^\/]+/
|
21
|
+
resources :cartridge_types, :only => [:show, :index], :id => /[^\/]+/
|
22
|
+
|
23
|
+
resource :building, :controller => :building, :id => /[^\/]+/, :only => [:show, :new, :destroy, :create] do
|
24
|
+
get :delete
|
25
|
+
end
|
26
|
+
|
27
|
+
resource :scaling, :controller => :scaling, :only => [:show, :new] do
|
28
|
+
get :delete
|
29
|
+
resources :cartridges, :controller => :scaling, :only => [:update], :id => /[^\/]+/, :format => false #, :format => /json|csv|xml|yaml/
|
30
|
+
end
|
31
|
+
|
32
|
+
member do
|
33
|
+
get :delete
|
34
|
+
get :get_started
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def openshift_account_routes
|
40
|
+
# Account specific resources
|
41
|
+
resource :account,
|
42
|
+
:controller => :account,
|
43
|
+
:only => [:show]
|
44
|
+
|
45
|
+
scope 'account' do
|
46
|
+
resource :domain, :only => [:new, :create, :edit, :update]
|
47
|
+
resources :keys, :only => [:new, :create, :destroy]
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
class GenerateConsoleViewTask < Rake::TaskLib
|
2
|
+
attr_accessor :layout, :views
|
3
|
+
|
4
|
+
def initialize(name)
|
5
|
+
yield self if block_given?
|
6
|
+
define(name)
|
7
|
+
end
|
8
|
+
def define(name)
|
9
|
+
task name => [:environment] do
|
10
|
+
views.each_pair do |view_path, file|
|
11
|
+
File.open(File.join(Rails.root, 'public', file), 'w') do |f|
|
12
|
+
f.write(render(view_path))
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
protected
|
19
|
+
def render(template)
|
20
|
+
view.render :template => template.dup, :layout => layout
|
21
|
+
end
|
22
|
+
def controller_class
|
23
|
+
ConsoleController
|
24
|
+
end
|
25
|
+
def controller
|
26
|
+
controller = controller_class.new
|
27
|
+
controller.request = ActionDispatch::TestRequest.new({'SCRIPT_NAME' => ENV['RAILS_RELATIVE_URL_ROOT']})
|
28
|
+
controller.env = controller.request.env
|
29
|
+
controller
|
30
|
+
end
|
31
|
+
|
32
|
+
def add_view_helpers(view, routes)
|
33
|
+
view.class_eval do
|
34
|
+
include routes.url_helpers
|
35
|
+
|
36
|
+
include Console::LayoutHelper
|
37
|
+
include Console::HelpHelper
|
38
|
+
include Console::Html5BoilerplateHelper
|
39
|
+
include Console::ModelHelper
|
40
|
+
include Console::SecuredHelper
|
41
|
+
include Console::CommunityHelper
|
42
|
+
include Console::ConsoleHelper
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def subclass_view(view, routes)
|
47
|
+
view.class_eval do
|
48
|
+
def protect_against_forgery?
|
49
|
+
false
|
50
|
+
end
|
51
|
+
|
52
|
+
def default_url_options
|
53
|
+
{:host => 'localhost'}
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def view
|
59
|
+
view = ActionView::Base.new(ActionController::Base.view_paths, {}, controller)
|
60
|
+
|
61
|
+
routes = Rails.application.routes
|
62
|
+
routes.default_url_options = {:host => 'localhost'}
|
63
|
+
|
64
|
+
add_view_helpers(view, routes)
|
65
|
+
subclass_view(view, routes)
|
66
|
+
|
67
|
+
view
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
namespace :assets do
|
72
|
+
GenerateConsoleViewTask.new(:public_pages) do |t|
|
73
|
+
t.layout = 'layouts/console'
|
74
|
+
t.views = {
|
75
|
+
'console/not_found' => '404.html',
|
76
|
+
'console/error' => '500.html',
|
77
|
+
}
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
namespace :engine do
|
2
|
+
desc "Report code statistics (KLOCs, etc) from the application"
|
3
|
+
task :stats do
|
4
|
+
ENGINE_STATS_DIRECTORIES = [
|
5
|
+
%w(Controllers app/controllers),
|
6
|
+
%w(Helpers app/helpers),
|
7
|
+
%w(Models app/models),
|
8
|
+
%w(Libraries lib/),
|
9
|
+
%w(APIs app/apis),
|
10
|
+
%w(Integration\ tests test/integration),
|
11
|
+
%w(Functional\ tests test/functional),
|
12
|
+
%w(Unit\ tests test/unit)
|
13
|
+
].collect { |name, dir| [ name, "#{ENGINE_PATH}/#{dir}" ] }.select { |name, dir| File.directory?(dir) }
|
14
|
+
|
15
|
+
require 'rails/code_statistics'
|
16
|
+
CodeStatistics.new(*ENGINE_STATS_DIRECTORIES).to_s
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
|
2
|
+
class Rake::Task
|
3
|
+
def abandon
|
4
|
+
prerequisites.clear
|
5
|
+
@actions.clear
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
namespace :test do
|
10
|
+
namespace :prepare do
|
11
|
+
task :ci_reporter do
|
12
|
+
# removed deletion of test cases
|
13
|
+
if Gem.loaded_specs['ci_reporter']
|
14
|
+
require 'ci/reporter/rake/test_unit'
|
15
|
+
path = File.join(Gem.loaded_specs["ci_reporter"].full_gem_path, 'lib', 'ci', 'reporter', 'rake', 'test_unit_loader.rb')
|
16
|
+
test_loader = CI::Reporter.maybe_quote_filename path
|
17
|
+
ENV["TESTOPTS"] = "#{ENV["TESTOPTS"]} #{test_loader}"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
task 'test:prepare' => 'test:prepare:ci_reporter'
|
22
|
+
|
23
|
+
Rake::TestTask.new :restapi => 'test:prepare' do |t|
|
24
|
+
t.libs << 'test'
|
25
|
+
t.test_files = FileList[
|
26
|
+
'test/**/rest_api_test.rb',
|
27
|
+
'test/**/rest_api/*_test.rb',
|
28
|
+
]
|
29
|
+
end
|
30
|
+
|
31
|
+
namespace :check do
|
32
|
+
covered = []
|
33
|
+
|
34
|
+
Rake::TestTask.new :applications => ['test:prepare'] do |t|
|
35
|
+
t.libs << 'test'
|
36
|
+
covered.concat(t.test_files = FileList[
|
37
|
+
'test/functional/applications_controller_sanity_test.rb',
|
38
|
+
'test/functional/applications_controller_test.rb',
|
39
|
+
'test/functional/application_types_controller_test.rb',
|
40
|
+
])
|
41
|
+
end
|
42
|
+
|
43
|
+
Rake::TestTask.new :cartridges => ['test:prepare'] do |t|
|
44
|
+
t.libs << 'test'
|
45
|
+
covered.concat(t.test_files = FileList[
|
46
|
+
'test/functional/cartridges_controller_test.rb',
|
47
|
+
'test/functional/cartridge_types_controller_test.rb',
|
48
|
+
])
|
49
|
+
end
|
50
|
+
|
51
|
+
Rake::TestTask.new :misc1 => ['test:prepare'] do |t|
|
52
|
+
t.libs << 'test'
|
53
|
+
covered.concat(t.test_files = FileList[
|
54
|
+
'test/functional/domains_controller_test.rb',
|
55
|
+
'test/functional/scaling_controller_test.rb',
|
56
|
+
])
|
57
|
+
end
|
58
|
+
|
59
|
+
Rake::TestTask.new :restapi_integration => ['test:prepare'] do |t|
|
60
|
+
t.libs << 'test'
|
61
|
+
covered.concat(t.test_files = FileList[
|
62
|
+
'test/integration/rest_api/**_test.rb',
|
63
|
+
])
|
64
|
+
end
|
65
|
+
|
66
|
+
Rake::TestTask.new :base => ['test:prepare'] do |t|
|
67
|
+
t.libs << 'test'
|
68
|
+
t.test_files = FileList['test/**/*_test.rb'] - covered
|
69
|
+
end
|
70
|
+
end
|
71
|
+
task :check => Rake::Task.tasks.select{ |t| t.name.match(/\Atest:check:/) }.map(&:name)
|
72
|
+
task :extended => []
|
73
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# Must be the first module imported at entry points (executables that run
|
2
|
+
# in seperate processes from the test harness) otherwise coverage will be
|
3
|
+
# incomplete
|
4
|
+
|
5
|
+
require 'simplecov'
|
6
|
+
SimpleCov.start 'rails' do
|
7
|
+
coverage_dir 'test/coverage/'
|
8
|
+
command_name 'Console tests'
|
9
|
+
|
10
|
+
# Filters - these files will be ignored.
|
11
|
+
add_filter 'app/models/rest_api/railties'
|
12
|
+
|
13
|
+
merge_timeout 1000
|
14
|
+
|
15
|
+
# Groups - general categories of test areas
|
16
|
+
#add_group('Controllers') { |src_file| src_file.filename.include?(File.join(%w[lib rhc commands])) }
|
17
|
+
#add_group('REST API') { |src_file| src_file.filename.include?(File.join(%w[lib rhc])) }
|
18
|
+
#add_group('REST') { |src_file| src_file.filename.include?(File.join(%w[lib rhc/rest])) }
|
19
|
+
#add_group('Legacy') { |src_file| src_file.filename.include?(File.join(%w[bin])) or
|
20
|
+
# src_file.filename.include?(File.join(%w[lib rhc-common.rb])) }
|
21
|
+
#add_group('Test') { |src_file| src_file.filename.include?(File.join(%w[features])) or
|
22
|
+
# src_file.filename.include?(File.join(%w[spec])) }
|
23
|
+
|
24
|
+
#use_merging = true
|
25
|
+
# Note, the #:nocov: coverage exclusion should only be used on external functions
|
26
|
+
# that cannot be nondestructively tested in a developer environment.
|
27
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
[{"scales_from":1,"name":"nodejs-0.6","current_scale":0,"status_messages":null,"scales_with":"haproxy-1.4","license":"ASL 2.0","properties":[{"name":"OPENSHIFT_NODEJS_LOG_DIR","description":"Directory to store application log files.","type":"environment"},{"name":"OPENSHIFT_TMP_DIR","description":"Directory to store application temporary files.","type":"environment"},{"name":"OPENSHIFT_REPO_DIR","description":"Application root directory where application files reside. This directory is reset everytime you do a git-push","type":"environment"},{"name":"OPENSHIFT_INTERNAL_PORT","description":"Internal port to which the web-framework binds to.","type":"environment"},{"name":"OPENSHIFT_INTERNAL_IP","description":"Internal IP to which the web-framework binds to.","type":"environment"},{"name":"OPENSHIFT_APP_DNS","description":"Fully qualified domain name for the application.","type":"environment"},{"name":"OPENSHIFT_APP_NAME","description":"Application name","type":"environment"},{"name":"OPENSHIFT_DATA_DIR","description":"Directory to store application data files. Preserved across git-pushes. Not shared across gears.","type":"environment"},{"name":"OPENSHIFT_APP_UUID","description":"Unique ID which identified the application. Does not change between gears.","type":"environment"},{"name":"OPENSHIFT_GEAR_UUID","description":"Unique ID which identified the gear. This value changes between gears.","type":"environment"}],"help_topics":{"Developer Center":"https://openshift.redhat.com/community/developers"},"website":"","gear_profile":null,"supported_scales_to":-1,"supported_scales_from":1,"scales_to":-1,"license_url":"","collocated_with":[],"display_name":"Node.js 0.6","tags":["cartridge","javascript","nodejs","web_framework"],"description":"Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js is perfect for data-intensive real-time applications that run across distributed devices.","version":"0.6.10","type":"standalone"},{"scales_from":1,"name":"zend-5.6","current_scale":0,"status_messages":null,"scales_with":"haproxy-1.4","license":"Commercial","properties":[{"name":"OPENSHIFT_LOG_DIR","description":"Directory to store application log files.","type":"environment"},{"name":"OPENSHIFT_TMP_DIR","description":"Directory to store application temporary files.","type":"environment"},{"name":"OPENSHIFT_REPO_DIR","description":"Application root directory where application files reside. This directory is reset everytime you do a git-push","type":"environment"},{"name":"OPENSHIFT_INTERNAL_PORT","description":"Internal port to which the web-framework binds to.","type":"environment"},{"name":"OPENSHIFT_INTERNAL_IP","description":"Internal IP to which the web-framework binds to.","type":"environment"},{"name":"OPENSHIFT_APP_DNS","description":"Fully qualified domain name for the application.","type":"environment"},{"name":"OPENSHIFT_APP_NAME","description":"Application name","type":"environment"},{"name":"OPENSHIFT_DATA_DIR","description":"Directory to store application data files. Preserved across git-pushes. Not shared across gears.","type":"environment"},{"name":"OPENSHIFT_APP_UUID","description":"Unique ID which identified the application. Does not change between gears.","type":"environment"},{"name":"OPENSHIFT_GEAR_UUID","description":"Unique ID which identified the gear. This value changes between gears.","type":"environment"}],"help_topics":{"Developer Center":"https://openshift.redhat.com/community/developers"},"website":"http://www.zend.com","gear_profile":null,"supported_scales_to":-1,"supported_scales_from":1,"scales_to":-1,"license_url":"http://static.zend.com/topics/Zend-License-EULA-2010-09-2.pdf","collocated_with":[],"display_name":"Zend Server 5.6","tags":["cartridge","php","web_framework"],"description":"A PHP server by Zend for applications that require performance, reliability and security. Zend Server combined with Zend Studio offers code optimization, debugging, and code assist.","version":5.6,"type":"standalone"},{"scales_from":1,"name":"ruby-1.9","current_scale":0,"status_messages":null,"scales_with":"haproxy-1.4","license":"ASL 2.0","properties":[{"name":"OPENSHIFT_REPO_DIR","description":"Application root directory where application files reside. This directory is reset everytime you do a git-push","type":"environment"},{"name":"OPENSHIFT_INTERNAL_PORT","description":"Internal port to which the web-framework binds to.","type":"environment"},{"name":"OPENSHIFT_INTERNAL_IP","description":"Internal IP to which the web-framework binds to.","type":"environment"},{"name":"OPENSHIFT_APP_DNS","description":"Fully qualified domain name for the application.","type":"environment"},{"name":"OPENSHIFT_APP_NAME","description":"Application name","type":"environment"},{"name":"OPENSHIFT_APP_UUID","description":"Unique ID which identified the application. Does not change between gears.","type":"environment"},{"name":"OPENSHIFT_GEAR_UUID","description":"Unique ID which identified the gear. This value changes between gears.","type":"environment"}],"help_topics":{"Developer Center":"https://openshift.redhat.com/community/developers"},"website":"www.ruby-lang.org","gear_profile":null,"supported_scales_to":-1,"supported_scales_from":1,"scales_to":-1,"license_url":"","collocated_with":[],"display_name":"Ruby 1.9","tags":["cartridge","ruby","web_framework"],"description":"Ruby is a dynamic, reflective, general-purpose object-oriented programming language. Popular development frameworks include Ruby on Rails and Sinatra.","version":"1.0.0","type":"standalone"},{"scales_from":1,"name":"jbossas-7","current_scale":0,"status_messages":null,"scales_with":"haproxy-1.4","license":"ASL 2.0","properties":[{"name":"OPENSHIFT_JBOSSAS_LOG_DIR","description":"Directory to store application log files.","type":"environment"},{"name":"OPENSHIFT_TMP_DIR","description":"Directory to store application temporary files.","type":"environment"},{"name":"OPENSHIFT_REPO_DIR","description":"Application root directory where application files reside. This directory is reset everytime you do a git-push","type":"environment"},{"name":"OPENSHIFT_INTERNAL_PORT","description":"Internal port to which the web-framework binds to.","type":"environment"},{"name":"OPENSHIFT_INTERNAL_IP","description":"Internal IP to which the web-framework binds to.","type":"environment"},{"name":"OPENSHIFT_APP_DNS","description":"Fully qualified domain name for the application.","type":"environment"},{"name":"OPENSHIFT_APP_NAME","description":"Application name","type":"environment"},{"name":"OPENSHIFT_DATA_DIR","description":"Directory to store application data files. Preserved across git-pushes. Not shared across gears.","type":"environment"},{"name":"OPENSHIFT_APP_UUID","description":"Unique ID which identified the application. Does not change between gears.","type":"environment"},{"name":"OPENSHIFT_GEAR_UUID","description":"Unique ID which identified the gear. This value changes between gears.","type":"environment"}],"help_topics":{"Developer Center":"https://openshift.redhat.com/community/developers"},"website":"http://www.jboss.org","gear_profile":null,"supported_scales_to":-1,"supported_scales_from":1,"scales_to":-1,"license_url":"","collocated_with":[],"display_name":"JBoss Application Server 7.1","tags":["cartridge","java","jboss","web_framework"],"description":"The leading open source Java EE6 application server for enterprise Java applications. Popular development frameworks include Seam, CDI, Weld, and Spring.","version":"7.1.0","type":"standalone"},{"scales_from":1,"name":"python-2.6","current_scale":0,"status_messages":null,"scales_with":"haproxy-1.4","license":"ASL 2.0","properties":[{"name":"OPENSHIFT_REPO_DIR","description":"Application root directory where application files reside. This directory is reset everytime you do a git-push","type":"environment"},{"name":"OPENSHIFT_INTERNAL_PORT","description":"Internal port to which the web-framework binds to.","type":"environment"},{"name":"OPENSHIFT_INTERNAL_IP","description":"Internal IP to which the web-framework binds to.","type":"environment"},{"name":"OPENSHIFT_APP_DNS","description":"Fully qualified domain name for the application.","type":"environment"},{"name":"OPENSHIFT_APP_NAME","description":"Application name","type":"environment"},{"name":"OPENSHIFT_APP_UUID","description":"Unique ID which identified the application. Does not change between gears.","type":"environment"},{"name":"OPENSHIFT_GEAR_UUID","description":"Unique ID which identified the gear. This value changes between gears.","type":"environment"}],"help_topics":{"Developer Center":"https://openshift.redhat.com/community/developers"},"website":"http://www.python.org","gear_profile":null,"supported_scales_to":-1,"supported_scales_from":1,"scales_to":-1,"license_url":"","collocated_with":[],"display_name":"Python 2.6","tags":["cartridge","python","web_framework"],"description":"Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Popular development frameworks include: Django, Bottle, Pylons, Zope and TurboGears.","version":"1.0.0","type":"standalone"},{"scales_from":1,"name":"jenkins-1.4","current_scale":0,"status_messages":null,"scales_with":"haproxy-1.4","license":"ASL 2.0","properties":[{"name":"OPENSHIFT_JENKINS_LOG_DIR","description":"Directory to store application log files.","type":"environment"},{"name":"OPENSHIFT_REPO_DIR","description":"Application root directory where application files reside. This directory is reset everytime you do a git-push","type":"environment"},{"name":"OPENSHIFT_INTERNAL_PORT","description":"Internal port to which the web-framework binds to.","type":"environment"},{"name":"OPENSHIFT_INTERNAL_IP","description":"Internal IP to which the web-framework binds to.","type":"environment"},{"name":"OPENSHIFT_APP_DNS","description":"Fully qualified domain name for the application.","type":"environment"},{"name":"OPENSHIFT_APP_NAME","description":"Application name","type":"environment"},{"name":"OPENSHIFT_DATA_DIR","description":"Directory to store application data files. Preserved across git-pushes. Not shared across gears.","type":"environment"},{"name":"OPENSHIFT_APP_UUID","description":"Unique ID which identified the application. Does not change between gears.","type":"environment"},{"name":"OPENSHIFT_GEAR_UUID","description":"Unique ID which identified the gear. This value changes between gears.","type":"environment"},{"name":"JENKINS_URL","description":"URL for the jenkins server","type":"environment"},{"name":"JENKINS_USERNAME","description":"Admin user on jenkins server","type":"environment"},{"name":"JENKINS_PASSWORD","description":"Admin user's password for jenkins server","type":"environment"},{"name":"username","description":"Admin user on jenkins server","type":"cart_data"},{"name":"password","description":"Admin user's passowrd on jenkins server","type":"cart_data"}],"help_topics":{"Developer Center":"https://openshift.redhat.com/community/developers"},"website":"http://www.jenkins-ci.org","gear_profile":null,"supported_scales_to":1,"supported_scales_from":1,"scales_to":1,"license_url":"","collocated_with":[],"display_name":"Jenkins Server 1.4","tags":["cartridge","web_framework","ci"],"description":"Jenkins is a continuous integration (CI) build server that is deeply integrated into OpenShift. See the Jenkins info page for more.","version":"0.84.1","type":"standalone"},{"scales_from":1,"name":"ruby-1.8","current_scale":0,"status_messages":null,"scales_with":"haproxy-1.4","license":"ASL 2.0","properties":[{"name":"OPENSHIFT_TMP_DIR","description":"Directory to store application temporary files.","type":"environment"},{"name":"OPENSHIFT_REPO_DIR","description":"Application root directory where application files reside. This directory is reset everytime you do a git-push","type":"environment"},{"name":"OPENSHIFT_INTERNAL_PORT","description":"Internal port to which the web-framework binds to.","type":"environment"},{"name":"OPENSHIFT_INTERNAL_IP","description":"Internal IP to which the web-framework binds to.","type":"environment"},{"name":"OPENSHIFT_APP_DNS","description":"Fully qualified domain name for the application.","type":"environment"},{"name":"OPENSHIFT_APP_NAME","description":"Application name","type":"environment"},{"name":"OPENSHIFT_DATA_DIR","description":"Directory to store application data files. Preserved across git-pushes. Not shared across gears.","type":"environment"},{"name":"OPENSHIFT_APP_UUID","description":"Unique ID which identified the application. Does not change between gears.","type":"environment"},{"name":"OPENSHIFT_GEAR_UUID","description":"Unique ID which identified the gear. This value changes between gears.","type":"environment"}],"help_topics":{"Developer Center":"https://openshift.redhat.com/community/developers"},"website":"www.ruby-lang.org","gear_profile":null,"supported_scales_to":-1,"supported_scales_from":1,"scales_to":-1,"license_url":"","collocated_with":[],"display_name":"Ruby 1.8","tags":["cartridge","ruby","web_framework"],"description":"Ruby is a dynamic, reflective, general-purpose object-oriented programming language. We recommend using Ruby 1.9 for new applications.","version":"1.0.0","type":"standalone"},{"scales_from":1,"name":"jbosseap-6.0","current_scale":0,"status_messages":null,"scales_with":"haproxy-1.4","license":"ASL 2.0","properties":[{"name":"OPENSHIFT_JBOSSEAP_LOG_DIR","description":"Directory to store application log files.","type":"environment"},{"name":"OPENSHIFT_TMP_DIR","description":"Directory to store application temporary files.","type":"environment"},{"name":"OPENSHIFT_REPO_DIR","description":"Application root directory where application files reside. This directory is reset everytime you do a git-push","type":"environment"},{"name":"OPENSHIFT_INTERNAL_PORT","description":"Internal port to which the web-framework binds to.","type":"environment"},{"name":"OPENSHIFT_INTERNAL_IP","description":"Internal IP to which the web-framework binds to.","type":"environment"},{"name":"OPENSHIFT_APP_DNS","description":"Fully qualified domain name for the application.","type":"environment"},{"name":"OPENSHIFT_APP_NAME","description":"Application name","type":"environment"},{"name":"OPENSHIFT_DATA_DIR","description":"Directory to store application data files. Preserved across git-pushes. Not shared across gears.","type":"environment"},{"name":"OPENSHIFT_APP_UUID","description":"Unique ID which identified the application. Does not change between gears.","type":"environment"},{"name":"OPENSHIFT_GEAR_UUID","description":"Unique ID which identified the gear. This value changes between gears.","type":"environment"}],"help_topics":{"Developer Center":"https://openshift.redhat.com/community/developers"},"website":"http://www.redhat.com/products/jbossenterprisemiddleware/application-platform/","gear_profile":null,"supported_scales_to":-1,"supported_scales_from":1,"scales_to":-1,"license_url":"","collocated_with":[],"display_name":"JBoss Enterprise Application Platform 6.0","tags":["cartridge","java","jboss","jee_full_profile","web_framework"],"description":"Market-leading open source enterprise platform for next-generation, highly transactional enterprise Java applications. Build and deploy enterprise Java in the cloud.","version":"6.0.0","type":"standalone"},{"scales_from":1,"name":"diy-0.1","current_scale":0,"status_messages":null,"scales_with":"haproxy-1.4","license":"ASL 2.0","properties":[{"name":"OPENSHIFT_DIY_LOG_DIR","description":"Directory to store application log files.","type":"environemnt"},{"name":"OPENSHIFT_TMP_DIR","description":"Directory to store application temporary files.","type":"environemnt"},{"name":"OPENSHIFT_REPO_DIR","description":"Application root directory where application files reside. This directory is reset everytime you do a git-push","type":"environemnt"},{"name":"OPENSHIFT_INTERNAL_PORT","description":"Internal port to which the web-framework binds to.","type":"environemnt"},{"name":"OPENSHIFT_INTERNAL_IP","description":"Internal IP to which the web-framework binds to.","type":"environemnt"},{"name":"OPENSHIFT_APP_DNS","description":"Fully qualified domain name for the application.","type":"environemnt"},{"name":"OPENSHIFT_APP_NAME","description":"Application name","type":"environemnt"},{"name":"OPENSHIFT_DATA_DIR","description":"Directory to store application data files. Preserved across git-pushes. Not shared across gears.","type":"environemnt"},{"name":"OPENSHIFT_APP_UUID","description":"Unique ID which identified the application. Does not change between gears.","type":"environemnt"},{"name":"OPENSHIFT_GEAR_UUID","description":"Unique ID which identified the gear. This value changes between gears.","type":"environemnt"}],"help_topics":{"Getting Started":"https://www.openshift.com/community/videos/getting-started-with-diy-applications-on-openshift"},"website":"","gear_profile":null,"supported_scales_to":1,"supported_scales_from":1,"scales_to":1,"license_url":"http://www.apache.org/licenses/LICENSE-2.0.txt","collocated_with":[],"display_name":"Do-It-Yourself","tags":["cartridge","web_framework","experimental"],"description":"The Do-It-Yourself (DIY) application type is a blank slate for trying unsupported languages, frameworks, and middleware on OpenShift. See the community site for examples of bringing your favorite framework to OpenShift.","version":"1.0.0","type":"standalone"},{"scales_from":1,"name":"jbossews-1.0","current_scale":0,"status_messages":null,"scales_with":"haproxy-1.4","license":"ASL 2.0","properties":[{"name":"OPENSHIFT_JBOSSEAP_LOG_DIR","description":"Directory to store application log files.","type":"environment"},{"name":"OPENSHIFT_TMP_DIR","description":"Directory to store application temporary files.","type":"environment"},{"name":"OPENSHIFT_REPO_DIR","description":"Application root directory where application files reside. This directory is reset everytime you do a git-push","type":"environment"},{"name":"OPENSHIFT_INTERNAL_PORT","description":"Internal port to which the web-framework binds to.","type":"environment"},{"name":"OPENSHIFT_INTERNAL_IP","description":"Internal IP to which the web-framework binds to.","type":"environment"},{"name":"OPENSHIFT_APP_DNS","description":"Fully qualified domain name for the application.","type":"environment"},{"name":"OPENSHIFT_APP_NAME","description":"Application name","type":"environment"},{"name":"OPENSHIFT_DATA_DIR","description":"Directory to store application data files. Preserved across git-pushes. Not shared across gears.","type":"environment"},{"name":"OPENSHIFT_APP_UUID","description":"Unique ID which identified the application. Does not change between gears.","type":"environment"},{"name":"OPENSHIFT_GEAR_UUID","description":"Unique ID which identified the gear. This value changes between gears.","type":"environment"}],"help_topics":{"Developer Center":"https://openshift.redhat.com/community/developers"},"website":"http://www.redhat.com/products/jbossenterprisemiddleware/application-platform/","gear_profile":null,"supported_scales_to":-1,"supported_scales_from":1,"scales_to":-1,"license_url":"","collocated_with":[],"display_name":"JBoss Enterprise Web Server 1.0","tags":["cartridge","java","jboss","tomcat","web_framework"],"description":"Market-leading open source enterprise platform for next-generation, highly transactional enterprise Java applications. Build and deploy enterprise Java in the cloud.","version":"1.0.2","type":"standalone"},{"scales_from":1,"name":"php-5.3","current_scale":0,"status_messages":null,"scales_with":"haproxy-1.4","license":"The PHP License, version 3.0","properties":[{"name":"OPENSHIFT_TMP_DIR","description":"Directory to store application temporary files.","type":"environment"},{"name":"OPENSHIFT_REPO_DIR","description":"Application root directory where application files reside. This directory is reset everytime you do a git-push","type":"environment"},{"name":"OPENSHIFT_INTERNAL_PORT","description":"Internal port to which the web-framework binds to.","type":"environment"},{"name":"OPENSHIFT_INTERNAL_IP","description":"Internal IP to which the web-framework binds to.","type":"environment"},{"name":"OPENSHIFT_APP_DNS","description":"Fully qualified domain name for the application.","type":"environment"},{"name":"OPENSHIFT_APP_NAME","description":"Application name","type":"environment"},{"name":"OPENSHIFT_DATA_DIR","description":"Directory to store application data files. Preserved across git-pushes. Not shared across gears.","type":"environment"},{"name":"OPENSHIFT_APP_UUID","description":"Unique ID which identified the application. Does not change between gears.","type":"environment"},{"name":"OPENSHIFT_GEAR_UUID","description":"Unique ID which identified the gear. This value changes between gears.","type":"environment"}],"help_topics":{"Developer Center":"https://openshift.redhat.com/community/developers"},"website":"http://www.php.net","gear_profile":null,"supported_scales_to":-1,"supported_scales_from":1,"scales_to":-1,"license_url":"http://www.php.net/license/3_0.txt","collocated_with":[],"display_name":"PHP 5.3","tags":["cartridge","php","web_framework"],"description":"PHP is a general-purpose server-side scripting language originally designed for Web development to produce dynamic Web pages. Popular development frameworks include: CakePHP, Zend, Symfony, and Code Igniter.","version":"5.3.2","type":"standalone"},{"scales_from":1,"name":"perl-5.10","current_scale":0,"status_messages":null,"scales_with":"haproxy-1.4","license":"ASL 2.0","properties":[{"name":"OPENSHIFT_PERL_LOG_DIR","description":"Directory to store application log files.","type":"environment"},{"name":"OPENSHIFT_TMP_DIR","description":"Directory to store application temporary files.","type":"environment"},{"name":"OPENSHIFT_REPO_DIR","description":"Application root directory where application files reside. This directory is reset everytime you do a git-push","type":"environment"},{"name":"OPENSHIFT_INTERNAL_PORT","description":"Internal port to which the web-framework binds to.","type":"environment"},{"name":"OPENSHIFT_INTERNAL_IP","description":"Internal IP to which the web-framework binds to.","type":"environment"},{"name":"OPENSHIFT_APP_DNS","description":"Fully qualified domain name for the application.","type":"environment"},{"name":"OPENSHIFT_APP_NAME","description":"Application name","type":"environment"},{"name":"OPENSHIFT_DATA_DIR","description":"Directory to store application data files. Preserved across git-pushes. Not shared across gears.","type":"environment"},{"name":"OPENSHIFT_APP_UUID","description":"Unique ID which identified the application. Does not change between gears.","type":"environment"},{"name":"OPENSHIFT_GEAR_UUID","description":"Unique ID which identified the gear. This value changes between gears.","type":"environment"}],"help_topics":{"Developer Center":"https://openshift.redhat.com/community/developers"},"website":"http://www.perl.org","gear_profile":null,"supported_scales_to":-1,"supported_scales_from":1,"scales_to":-1,"license_url":"","collocated_with":[],"display_name":"Perl 5.10","tags":["cartridge","perl","web_framework"],"description":"Perl is a high-level, general-purpose, interpreted, dynamic programming language. Dynamic content produced by Perl scripts can be served in response to incoming web requests.","version":"1.0.0","type":"standalone"},{"scales_from":1,"name":"mongodb-2.2","current_scale":0,"status_messages":null,"scales_with":"haproxy-1.4","license":"ASL 2.0","properties":[{"name":"username","description":"Root user on mongo database","type":"cart_data"},{"name":"password","description":"Password for root user on mongo database","type":"cart_data"},{"name":"database_name","description":"Mongo DB name","type":"cart_data"},{"name":"connection_url","description":"Mongo DB connection URL","type":"cart_data"}],"help_topics":[{"Building with MongoDB":"https://openshift.redhat.com/community/developers/mongodb"}],"website":"http://www.10gen.com","gear_profile":null,"supported_scales_to":1,"supported_scales_from":1,"scales_to":1,"license_url":"http://www.apache.org/licenses/LICENSE-2.0.txt","collocated_with":[],"display_name":"MongoDB NoSQL Database 2.2","tags":["cartridge","database","nosql"],"description":"MongoDB is a scalable, high-performance, open source NoSQL database.","version":"2.2.0","type":"embedded"},{"scales_from":1,"name":"cron-1.4","current_scale":0,"status_messages":null,"scales_with":"haproxy-1.4","license":"ASL 2.0","properties":[],"help_topics":{"Getting Started Guide":"https://openshift.redhat.com/community/blogs/getting-started-with-cron-jobs-on-openshift"},"website":"","gear_profile":null,"supported_scales_to":1,"supported_scales_from":1,"scales_to":1,"license_url":"http://www.apache.org/licenses/LICENSE-2.0.txt","collocated_with":[],"display_name":"Cron 1.4","tags":["cartridge"],"description":"The Cron cartridge allows you to run command line programs at scheduled times. Use this for background jobs and periodic processing.","version":1.4,"type":"embedded"},{"scales_from":1,"name":"mysql-5.1","current_scale":0,"status_messages":null,"scales_with":"haproxy-1.4","license":"ASL 2.0","properties":[{"name":"username","description":"Root user on mysql database","type":"cart_data"},{"name":"password","description":"Password for root user on mysql database","type":"cart_data"},{"name":"database_name","description":"MySQL DB name","type":"cart_data"},{"name":"connection_url","description":"MySQL DB connection URL","type":"cart_data"}],"help_topics":[{"Building with MySQL":"http://docs.redhat.com/docs/en-US/OpenShift/2.0/html/User_Guide/sect-User_Guide-Working_With_Database_Cartridges.html"}],"website":"http://www.mysql.com","gear_profile":null,"supported_scales_to":1,"supported_scales_from":1,"scales_to":1,"license_url":"","collocated_with":[],"display_name":"MySQL Database 5.1","tags":["cartridge","database"],"description":"MySQL is a multi-user, multi-threaded SQL database server.","version":5.1,"type":"embedded"},{"scales_from":1,"name":"postgresql-8.4","current_scale":0,"status_messages":null,"scales_with":"haproxy-1.4","license":"ASL 2.0","properties":[{"name":"username","description":"Root user on PostgreSQL database","type":"cart_data"},{"name":"password","description":"Password for root user on PostgreSQL database","type":"cart_data"},{"name":"database_name","description":"PostgreSQL DB name","type":"cart_data"},{"name":"connection_url","description":"PostgreSQL DB connection URL","type":"cart_data"}],"help_topics":[{"Building with PostGreSQL":"http://docs.redhat.com/docs/en-US/OpenShift/2.0/html/User_Guide/sect-User_Guide-Working_With_Database_Cartridges.html"}],"website":"http://www.postgresql.org","gear_profile":null,"supported_scales_to":1,"supported_scales_from":1,"scales_to":1,"license_url":"","collocated_with":[],"display_name":"PostgreSQL Database 8.4","tags":["cartridge","database"],"description":"PostgreSQL is an advanced Object-Relational database management system","version":8.4,"type":"embedded"},{"scales_from":1,"name":"haproxy-1.4","current_scale":0,"status_messages":null,"scales_with":null,"license":"unknown","properties":[],"help_topics":{},"website":"","gear_profile":null,"supported_scales_to":1,"supported_scales_from":1,"scales_to":1,"license_url":"","collocated_with":[],"display_name":"HAProxy 1.4","tags":["cartridge","web_proxy","git_host","scales"],"description":"HAProxy can be used as a load balancer and scaling agent for web frameworks","version":"1.4.20","type":"embedded"},{"scales_from":1,"name":"10gen-mms-agent-0.1","current_scale":0,"status_messages":null,"scales_with":"haproxy-1.4","license":"unknown","properties":[{"name":"monitoring_url","description":"10gen-mms-agent-0.1 monitoring URL","type":"cart_data"}],"help_topics":{"MMS Manual":"https://mms.10gen.com/help/"},"website":"https://mms.10gen.com/","gear_profile":null,"supported_scales_to":1,"supported_scales_from":1,"scales_to":1,"license_url":"https://mms.10gen.com/links/terms-of-service","collocated_with":[],"display_name":"10gen Mongo Monitoring Service Agent 0.1","tags":["cartridge","database-support"],"description":"MongoDB Monitoring Service (MMS) instruments MongoDB and provides information about current and historical operational metrics of your system.","version":"1.3.7","type":"embedded"},{"scales_from":1,"name":"phpmyadmin-3.4","current_scale":0,"status_messages":null,"scales_with":"haproxy-1.4","license":"ASL 2.0","properties":[{"name":"username","description":"Admin user on phpmyadmin interface","type":"cart_data"},{"name":"password","description":"Password for admin user on phpmyadmin interface","type":"cart_data"},{"name":"connection_url","description":"phpMyAdmin connection URL","type":"cart_data"}],"help_topics":{},"website":"","gear_profile":null,"supported_scales_to":1,"supported_scales_from":1,"scales_to":1,"license_url":"","collocated_with":[],"display_name":"phpMyAdmin 3.4","tags":["cartridge"],"description":"Web based MySQL admin tool. Requires the MySQL cartridge to be installed first.","version":"1.1.0","type":"embedded"},{"scales_from":1,"name":"metrics-0.1","current_scale":0,"status_messages":null,"scales_with":"haproxy-1.4","license":"GPLv2","properties":[{"name":"connection_url","description":"Application metrics URL","type":"cart_data"}],"help_topics":{},"website":"","gear_profile":null,"supported_scales_to":1,"supported_scales_from":1,"scales_to":1,"license_url":"","collocated_with":[],"display_name":"OpenShift Metrics 0.1","tags":["cartridge"],"description":"An experimental cartridge that demonstrates retrieving real-time statistics from your application. May be removed or replaced in the future.","version":"1.0.0","type":"embedded"},{"scales_from":1,"name":"phpmoadmin-1.0","current_scale":0,"status_messages":null,"scales_with":"haproxy-1.4","license":"ASL 2.0","properties":[{"name":"username","description":"Admin user on phpmoadmin interface","type":"cart_data"},{"name":"password","description":"Password for admin user on phpmoadmin interface","type":"cart_data"},{"name":"connection_url","description":"phpMoAdmin connection URL","type":"cart_data"}],"help_topics":{},"website":"http://www.phpmoadmin.com","gear_profile":null,"supported_scales_to":1,"supported_scales_from":1,"scales_to":1,"license_url":"","collocated_with":[],"display_name":"phpMoAdmin 1.0","tags":["cartridge"],"description":"Web based MongoDB administration tool. Requires the MongoDB cartridge to be installed first.","version":"1.0.0","type":"embedded"},{"scales_from":1,"name":"rockmongo-1.1","current_scale":0,"status_messages":null,"scales_with":"haproxy-1.4","license":"ASL 2.0","properties":[{"name":"username","description":"Admin user on rockmongo interface","type":"cart_data"},{"name":"password","description":"Password for admin user on rockmongo interface","type":"cart_data"},{"name":"connection_url","description":"RockMongo connection URL","type":"cart_data"}],"help_topics":{},"website":"","gear_profile":null,"supported_scales_to":1,"supported_scales_from":1,"scales_to":1,"license_url":"","collocated_with":[],"display_name":"RockMongo 1.1","tags":["cartridge"],"description":"Web based MongoDB administration tool. Requires the MongoDB cartridge to be installed first.","version":"1.1.0","type":"embedded"},{"scales_from":1,"name":"jenkins-client-1.4","current_scale":0,"status_messages":null,"scales_with":"haproxy-1.4","license":"ASL 2.0","properties":[{"name":"job_url","description":"URL for the build job submitted on jenkins server","type":"cart_data"}],"help_topics":{"Developer Center":"https://openshift.redhat.com/community/developers"},"website":"http://www.jenkins-ci.org","gear_profile":null,"supported_scales_to":-1,"supported_scales_from":1,"scales_to":-1,"license_url":"","collocated_with":[],"display_name":"Jenkins Client 1.4","tags":["cartridge","ci_builder"],"description":"The Jenkins client connects to your Jenkins application and enables builds and testing of your application. Requires the Jenkins Application to be created via the new application page.","version":"1.0.0","type":"embedded"}]
|
@@ -0,0 +1,3 @@
|
|
1
|
+
id href name updated summary body cartridges priority tags language icon website admin_tags initial_git_url
|
2
|
+
12069 /community/content/ruby-and-mongo Ruby and Mongo 1351681507 Start an application with ruby and mongo. <p>Start an application with ruby and mongo.</p> ruby-*, mongodb-* 1 mongo, ruby Ruby
|
3
|
+
12070 /community/content/wordpress-34 Wordpress 3.4 1351688441 A fantastic blog ecosystem <p>A fantastic blog ecosystem</p> php-5.3, mysql-5.1 blog, php, wordpress PHP /community/sites/default/files/quickstarts/g3281.png https://www.wordpress.org new https://github.com/openshift/wordpress-example
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require File.expand_path('../../test_helper', __FILE__)
|
2
|
+
|
3
|
+
class AccountControllerTest < ActionController::TestCase
|
4
|
+
|
5
|
+
test "should render dashboard" do
|
6
|
+
with_configured_user
|
7
|
+
get :show
|
8
|
+
|
9
|
+
assert_response :success
|
10
|
+
assert assigns(:user).login.present?
|
11
|
+
assert !assigns(:keys).nil?
|
12
|
+
assert assigns(:domain).nil?
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,251 @@
|
|
1
|
+
require File.expand_path('../../test_helper', __FILE__)
|
2
|
+
|
3
|
+
class ApplicationTypesControllerTest < ActionController::TestCase
|
4
|
+
|
5
|
+
setup{ Quickstart.reset! }
|
6
|
+
|
7
|
+
test 'should show index with proper title' do
|
8
|
+
with_unique_user
|
9
|
+
get :index
|
10
|
+
assert_response :success
|
11
|
+
assert_select 'head title', 'OpenShift Origin'
|
12
|
+
end
|
13
|
+
|
14
|
+
test "should show index" do
|
15
|
+
with_unique_user
|
16
|
+
get :index
|
17
|
+
assert_response :success
|
18
|
+
assert_template :index
|
19
|
+
assert groups = assigns(:type_groups)
|
20
|
+
assert groups.length > 1, groups.length.to_s
|
21
|
+
assert groups.any?{ |g| g[0] == 'Java' }
|
22
|
+
assert groups.first[1].present?
|
23
|
+
end
|
24
|
+
|
25
|
+
test "should be able to find templates" do
|
26
|
+
with_unique_user
|
27
|
+
types = ApplicationType.all
|
28
|
+
(templates,) = types.partition{|t| t.template?}
|
29
|
+
omit("No templates have been registered on this server") if templates.empty?
|
30
|
+
assert_not_equal 0, templates.length, "There should be templates to test against"
|
31
|
+
end
|
32
|
+
|
33
|
+
test "should be able to find quickstarts" do
|
34
|
+
with_unique_user
|
35
|
+
types = ApplicationType.all
|
36
|
+
(quickstarts,) = types.partition{|t| t.quickstart?}
|
37
|
+
omit("No quickstarts have been registered on this server") if quickstarts.empty?
|
38
|
+
assert_not_equal 0, quickstarts.length, "There should be quickstarts to test against"
|
39
|
+
end
|
40
|
+
|
41
|
+
test "should show empty search results" do
|
42
|
+
with_unique_user
|
43
|
+
ApplicationType.expects(:search).returns([])
|
44
|
+
get :index, :search => 'foo'
|
45
|
+
assert_response :success
|
46
|
+
assert_template :search
|
47
|
+
assert_equal 'foo', assigns(:search)
|
48
|
+
assert groups = assigns(:type_groups)
|
49
|
+
assert_equal 1, groups.length
|
50
|
+
assert_equal "Matches search 'foo'", groups.first[0]
|
51
|
+
assert groups.first[1].empty?
|
52
|
+
assert tags = assigns(:browse_tags)
|
53
|
+
assert tags.present?
|
54
|
+
assert tags.first[0].is_a? String
|
55
|
+
assert tags.first[1].is_a? Symbol
|
56
|
+
end
|
57
|
+
|
58
|
+
def assert_standard_show_type(t)
|
59
|
+
assert_response :success
|
60
|
+
assert type = assigns(:application_type)
|
61
|
+
assert_equal t.display_name, type.display_name
|
62
|
+
assert assigns(:application)
|
63
|
+
assert assigns(:domain)
|
64
|
+
assert css_select('input#application_domain_name').present?
|
65
|
+
if t.tags.include?(:template) or t.id == 'diy-0.1'
|
66
|
+
# Sanity-check known non-scalable types
|
67
|
+
assert_equal false, t.scalable?
|
68
|
+
elsif t.id == 'php-5.3'
|
69
|
+
# Sanity-check a known scaling-capable type
|
70
|
+
assert_equal true, t.scalable?
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
test "should show type page for cartridge" do
|
75
|
+
with_unique_user
|
76
|
+
type = ApplicationType.all.select{ |t| t.cartridge? }.sample(1).first
|
77
|
+
|
78
|
+
get :show, :id => type.id
|
79
|
+
assert_standard_show_type(type)
|
80
|
+
end
|
81
|
+
|
82
|
+
test "should show type page for quickstart" do
|
83
|
+
with_unique_user
|
84
|
+
type = ApplicationType.all.select(&:quickstart?).sample(1).first
|
85
|
+
omit("No quickstarts registered on this server") if type.nil?
|
86
|
+
|
87
|
+
get :show, :id => type.id
|
88
|
+
assert_standard_show_type(type)
|
89
|
+
end
|
90
|
+
|
91
|
+
test "should show type page for application template" do
|
92
|
+
with_unique_user
|
93
|
+
type = ApplicationType.all.select(&:template?).sample(1).first
|
94
|
+
omit("No templates registered on this server") if type.nil?
|
95
|
+
|
96
|
+
get :show, :id => type.id
|
97
|
+
assert_standard_show_type(type)
|
98
|
+
end
|
99
|
+
|
100
|
+
test "should handle invalid quickstart page" do
|
101
|
+
with_unique_user
|
102
|
+
type = Quickstart.new(:id => 'test', :name => '', :cartridges => '[{')
|
103
|
+
Quickstart.expects(:find).returns(type)
|
104
|
+
|
105
|
+
get :show, :id => 'quickstart!test'
|
106
|
+
assert_standard_show_type(type)
|
107
|
+
end
|
108
|
+
|
109
|
+
test "should render custom type" do
|
110
|
+
with_unique_user
|
111
|
+
get :show, :id => 'custom'
|
112
|
+
assert_response :success
|
113
|
+
assert_select '.alert.alert-error', /No cartridges are defined for this type/i
|
114
|
+
assert_select 'h3 > span.text-warning', 'None'
|
115
|
+
assert_select '.btn-primary[disabled=disabled]'
|
116
|
+
assert_select "input[name='application[initial_git_url]']", 0
|
117
|
+
end
|
118
|
+
|
119
|
+
test "should render custom single cart type" do
|
120
|
+
with_unique_user
|
121
|
+
get :show, :id => 'custom', :cartridges => 'ruby-1.9'
|
122
|
+
assert_response :success
|
123
|
+
assert_select 'h3', 'Ruby 1.9'
|
124
|
+
assert_select 'h3', 'From Scratch'
|
125
|
+
end
|
126
|
+
|
127
|
+
test "should render custom cart type with a choice" do
|
128
|
+
with_unique_user
|
129
|
+
get :show, :id => 'custom', :cartridges => 'ruby'
|
130
|
+
assert_response :success
|
131
|
+
assert_select "select[name='application[cartridges][]'] > option", 'Ruby 1.9'
|
132
|
+
assert_select "select[name='application[cartridges][]'] > option", 'Ruby 1.8'
|
133
|
+
end
|
134
|
+
|
135
|
+
test "should render custom multiple carts" do
|
136
|
+
with_unique_user
|
137
|
+
get :show, :id => 'custom', :cartridges => ['ruby-1.9', 'mysql-5.1']
|
138
|
+
assert_response :success
|
139
|
+
assert_select 'h3', /Ruby 1\.9/i
|
140
|
+
assert_select 'h3', /MySQL/i
|
141
|
+
end
|
142
|
+
|
143
|
+
test "should not render custom valid JSON" do
|
144
|
+
with_unique_user
|
145
|
+
get :show, :id => 'custom', :cartridges => ['ruby-1.9', 'mysql-5.1'].to_json
|
146
|
+
assert_response :success
|
147
|
+
assert assigns(:cartridges).blank?
|
148
|
+
assert_select '.alert.alert-error', /No cartridges are defined for this type/i
|
149
|
+
assert_select 'h3 > span.text-warning', 'None'
|
150
|
+
end
|
151
|
+
|
152
|
+
test "should not fail on custom invalid JSON" do
|
153
|
+
with_unique_user
|
154
|
+
get :show, :id => 'custom', :cartridges => "[{'ruby-1.9'}, {'mysql-5.1'}]"
|
155
|
+
assert_response :success
|
156
|
+
assert assigns(:cartridges).blank?
|
157
|
+
assert_select '.alert.alert-error', /No cartridges are defined for this type/i
|
158
|
+
assert_select 'h3 > span.text-warning', 'None'
|
159
|
+
end
|
160
|
+
|
161
|
+
test "should render custom initial_git_url" do
|
162
|
+
with_unique_user
|
163
|
+
get :show,
|
164
|
+
:id => 'custom',
|
165
|
+
:cartridges => 'ruby-1.9',
|
166
|
+
:initial_git_url => 'http://foo.com',
|
167
|
+
:initial_git_branch => 'bar'
|
168
|
+
assert_response :success
|
169
|
+
assert_select 'h3 > a', 'http://foo.com'
|
170
|
+
#assert_select 'h3', /branch 'bar'/
|
171
|
+
end
|
172
|
+
|
173
|
+
test "should render advanced custom type" do
|
174
|
+
with_unique_user
|
175
|
+
get :show, :id => 'custom', :advanced => true, :initial_git_url => 'http://foo.com', :initial_git_branch => 'bar'
|
176
|
+
assert_response :success
|
177
|
+
assert assigns(:advanced)
|
178
|
+
assert_select '.alert.alert-error', /No cartridges are defined for this type/i
|
179
|
+
assert_select 'h3 > span.text-warning', 'None'
|
180
|
+
assert_select '.btn-primary[disabled=disabled]'
|
181
|
+
assert_select "select[name='application[scale]']"
|
182
|
+
assert_select "input[name='application[initial_git_url]']" do |inputs|
|
183
|
+
assert inputs.first['value'] == 'http://foo.com'
|
184
|
+
end
|
185
|
+
#assert_select "input[name='application[initial_git_branch]']" do |inputs|
|
186
|
+
# assert inputs.first['value'] == 'bar'
|
187
|
+
#end
|
188
|
+
end
|
189
|
+
|
190
|
+
test "show page should cache user capabilities" do
|
191
|
+
# set up the test
|
192
|
+
with_user_with_multiple_gear_sizes
|
193
|
+
user = User.find(:one, :as => @controller.current_user)
|
194
|
+
types = ApplicationType.all
|
195
|
+
type = types[0]
|
196
|
+
|
197
|
+
# confirm the session is clear of relevant keys
|
198
|
+
assert session.has_key?(:user_capabilities) == false
|
199
|
+
|
200
|
+
# make the request
|
201
|
+
get :show, :id => type.id
|
202
|
+
|
203
|
+
# compare the session cache with expected values
|
204
|
+
assert_equal [user.max_gears, user.consumed_gears, user.gear_sizes], session[:user_capabilities]
|
205
|
+
assert_equal user.gear_sizes, assigns(:capabilities).gear_sizes
|
206
|
+
assert_equal user.max_gears, assigns(:capabilities).max_gears
|
207
|
+
assert_equal user.consumed_gears, assigns(:capabilities).consumed_gears
|
208
|
+
end
|
209
|
+
|
210
|
+
test "show page should refresh cached user_capabilities" do
|
211
|
+
# set up the test
|
212
|
+
with_user_with_multiple_gear_sizes
|
213
|
+
user = User.find(:one, :as => @controller.current_user)
|
214
|
+
types = ApplicationType.all
|
215
|
+
type = types[0]
|
216
|
+
|
217
|
+
# seed the cache with values that will never be returned by the broker.
|
218
|
+
session[:user_capabilities] = ['test_value','test_value',['test_value','test_value']]
|
219
|
+
|
220
|
+
# make the request
|
221
|
+
get :show, :id => type.id
|
222
|
+
|
223
|
+
# confirm that the assigned values match our cached values
|
224
|
+
assert_equal [user.max_gears, user.consumed_gears, user.gear_sizes], session[:user_capabilities]
|
225
|
+
assert_equal user.max_gears, assigns(:capabilities).max_gears
|
226
|
+
assert_equal user.consumed_gears, assigns(:capabilities).consumed_gears
|
227
|
+
assert_equal user.gear_sizes, assigns(:capabilities).gear_sizes
|
228
|
+
end
|
229
|
+
|
230
|
+
test "should raise on missing type" do
|
231
|
+
with_unique_user
|
232
|
+
get :show, :id => 'missing_application_type'
|
233
|
+
assert_response :success
|
234
|
+
assert_select 'h1', /Application Type 'missing_application_type' does not exist/
|
235
|
+
end
|
236
|
+
|
237
|
+
test "should fill domain info" do
|
238
|
+
with_unique_user
|
239
|
+
with_unique_domain
|
240
|
+
t = ApplicationType.all[0]
|
241
|
+
|
242
|
+
get :show, :id => t.id
|
243
|
+
assert_response :success
|
244
|
+
assert type = assigns(:application_type)
|
245
|
+
assert_equal t.display_name, type.display_name
|
246
|
+
assert assigns(:application)
|
247
|
+
assert domain = assigns(:domain)
|
248
|
+
assert_equal @domain.id, domain.id
|
249
|
+
assert css_select('input#application_domain_name').empty?
|
250
|
+
end
|
251
|
+
end
|