openshift-origin-console 1.3.2
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.
- 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,68 @@
|
|
|
1
|
+
require File.expand_path('../../test_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
class CartridgeTypesIsolationControllerTest < ActionController::TestCase
|
|
4
|
+
tests CartridgeTypesController
|
|
5
|
+
|
|
6
|
+
uses_http_mock :sometimes
|
|
7
|
+
|
|
8
|
+
setup :with_unique_user
|
|
9
|
+
|
|
10
|
+
def domain
|
|
11
|
+
{:id => 'test'}
|
|
12
|
+
end
|
|
13
|
+
def app
|
|
14
|
+
{:name => 'test', :framework => 'php-5.3'}
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def mock_app
|
|
18
|
+
Rails.cache.clear # cart metadata is mocked
|
|
19
|
+
allow_http_mock
|
|
20
|
+
ActiveResource::HttpMock.respond_to({},true) do |mock|
|
|
21
|
+
mock.get '/broker/rest/domains.json', json_header, [domain].to_json
|
|
22
|
+
mock.get '/broker/rest/domains/test/applications/test.json', json_header, app.to_json
|
|
23
|
+
mock.get '/broker/rest/domains/test/applications/test/cartridges.json', json_header, [].to_json
|
|
24
|
+
mock.get '/broker/rest/cartridges.json', anonymous_json_header, [{:name => 'fake-cart-1', :type => :embedded}].to_json
|
|
25
|
+
end
|
|
26
|
+
app
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
test "should list a new server cart with no metadata" do
|
|
30
|
+
mock_app
|
|
31
|
+
get :index, :application_id => 'test'
|
|
32
|
+
assert_response :success
|
|
33
|
+
|
|
34
|
+
assert a = assigns(:application)
|
|
35
|
+
assert_equal app[:name], a.name
|
|
36
|
+
assert d = assigns(:domain)
|
|
37
|
+
assert_equal domain[:id], d.id
|
|
38
|
+
|
|
39
|
+
assert types = assigns(:installed)
|
|
40
|
+
assert_equal 0, types.length
|
|
41
|
+
assert types = assigns(:conflicts)
|
|
42
|
+
assert_equal 0, types.length
|
|
43
|
+
assert types = assigns(:requires)
|
|
44
|
+
assert types.length == 0
|
|
45
|
+
assert types = assigns(:blacklist)
|
|
46
|
+
assert types.length == 0
|
|
47
|
+
assert types = assigns(:carts)
|
|
48
|
+
assert types.length > 0
|
|
49
|
+
|
|
50
|
+
cached = CartridgeType.cached.all
|
|
51
|
+
assert cached.all? {|t| (t.tags & [:installed, :inactive, 'inactive']).empty? }, cached.pretty_inspect
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
test "should show a new server cart with no metadata" do
|
|
55
|
+
mock_app
|
|
56
|
+
get :show, :application_id => 'test', :id => 'fake_cart_1'
|
|
57
|
+
assert_response :success
|
|
58
|
+
|
|
59
|
+
assert a = assigns(:application)
|
|
60
|
+
assert_equal app[:name], a.name
|
|
61
|
+
assert d = assigns(:domain)
|
|
62
|
+
assert_equal domain[:id], d.id
|
|
63
|
+
|
|
64
|
+
assert type = assigns(:cartridge_type)
|
|
65
|
+
assert_equal 'fake_cart_1', type.name
|
|
66
|
+
assert assigns(:cartridge)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
require File.expand_path('../../test_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
class CartridgeTypesControllerTest < ActionController::TestCase
|
|
4
|
+
|
|
5
|
+
test "should show index" do
|
|
6
|
+
get :index, :application_id => with_app.name
|
|
7
|
+
assert_response :success
|
|
8
|
+
|
|
9
|
+
assert app = assigns(:application)
|
|
10
|
+
assert_equal with_app.name, app.name
|
|
11
|
+
assert domain = assigns(:domain)
|
|
12
|
+
assert_equal with_app.domain_id, domain.id
|
|
13
|
+
|
|
14
|
+
assert types = assigns(:installed)
|
|
15
|
+
assert_equal 0, types.length
|
|
16
|
+
assert types = assigns(:conflicts)
|
|
17
|
+
assert_equal 0, types.length
|
|
18
|
+
assert types = assigns(:requires)
|
|
19
|
+
assert types.length > 0
|
|
20
|
+
assert types = assigns(:blacklist)
|
|
21
|
+
assert types.length > 0
|
|
22
|
+
assert types = assigns(:carts)
|
|
23
|
+
assert types.length > 0
|
|
24
|
+
|
|
25
|
+
cached = CartridgeType.cached.all
|
|
26
|
+
assert cached.all? {|t| (t.tags & [:installed, :inactive, 'inactive']).empty? }, cached.pretty_inspect
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
test "should show type page" do
|
|
30
|
+
t = CartridgeType.embedded.first
|
|
31
|
+
get :show, :application_id => with_app.name, :id => t.name
|
|
32
|
+
assert_response :success
|
|
33
|
+
assert type = assigns(:cartridge_type)
|
|
34
|
+
assert_equal t.name, type.name
|
|
35
|
+
assert assigns(:cartridge)
|
|
36
|
+
assert assigns(:application)
|
|
37
|
+
assert assigns(:domain)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
test "should not raise on missing type" do
|
|
41
|
+
# We allow arbitrary cartridges, but we may want to change that
|
|
42
|
+
#assert_raise(StandardError) do
|
|
43
|
+
get :show, :application_id => with_app.name, :id => 'missing_cartridge_type'
|
|
44
|
+
assert_response :success
|
|
45
|
+
#end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
require File.expand_path('../../test_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
class CartridgesControllerTest < ActionController::TestCase
|
|
4
|
+
|
|
5
|
+
def with_testable_app(remove_carts=false)
|
|
6
|
+
use_app(:cart_testable_app) { Application.new({:name => "carttestable", :cartridge => 'ruby-1.9', :as => new_named_user('user_with_cartridge_testable_app')}) }.tap do |app|
|
|
7
|
+
if remove_carts
|
|
8
|
+
Cartridge.all(app.send(:child_options)).each do |cart|
|
|
9
|
+
next if cart.name == app.framework
|
|
10
|
+
#puts "Destroying cart #{cart.name}"
|
|
11
|
+
begin
|
|
12
|
+
cart.destroy
|
|
13
|
+
rescue => e
|
|
14
|
+
puts "Unable to delete cart #{cart.name}: #{e.message}, #{e.backtrace.join("\n")}"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
test "should create one cartridge" do
|
|
22
|
+
with_testable_app(true)
|
|
23
|
+
|
|
24
|
+
post(:create, get_post_form)
|
|
25
|
+
assert cart = assigns(:cartridge)
|
|
26
|
+
assert cart.errors.empty?, cart.errors.to_hash.inspect
|
|
27
|
+
assert_response :success
|
|
28
|
+
assert_template :next_steps
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
test "should create two cartridges" do
|
|
32
|
+
with_testable_app(true)
|
|
33
|
+
|
|
34
|
+
post(:create, get_post_form)
|
|
35
|
+
assert cart = assigns(:cartridge)
|
|
36
|
+
assert cart.errors.empty?, cart.errors.to_hash.inspect
|
|
37
|
+
assert_response :success
|
|
38
|
+
assert_template :next_steps
|
|
39
|
+
|
|
40
|
+
post_form = get_post_form
|
|
41
|
+
post_form[:cartridge][:name] = 'cron-1.4'
|
|
42
|
+
post(:create, post_form)
|
|
43
|
+
assert cart = assigns(:cartridge)
|
|
44
|
+
assert cart.errors.empty?, cart.errors.to_hash.inspect
|
|
45
|
+
|
|
46
|
+
assert_response :success
|
|
47
|
+
assert_template :next_steps
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
test "should error out if cartridge is installed" do
|
|
51
|
+
with_testable_app(true)
|
|
52
|
+
|
|
53
|
+
post(:create, get_post_form)
|
|
54
|
+
assert cart = assigns(:cartridge)
|
|
55
|
+
assert cart.errors.empty?, cart.errors.to_hash.inspect
|
|
56
|
+
assert_response :success
|
|
57
|
+
assert_template :next_steps
|
|
58
|
+
|
|
59
|
+
post(:create, get_post_form)
|
|
60
|
+
assert_response :success
|
|
61
|
+
assert cart = assigns(:cartridge)
|
|
62
|
+
assert !cart.errors.empty?, cart.errors.to_hash.inspect
|
|
63
|
+
assert cart.errors[:base].present?
|
|
64
|
+
assert_equal 1, cart.errors[:base].length
|
|
65
|
+
|
|
66
|
+
assert_response :success
|
|
67
|
+
assert_template 'cartridge_types/show'
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
#test "should be able to view next steps cartridge page" do
|
|
71
|
+
# with_testable_app(true)
|
|
72
|
+
|
|
73
|
+
# get :next_steps, get_post_form
|
|
74
|
+
# assert_response :success
|
|
75
|
+
# assert_template :next_steps
|
|
76
|
+
#end
|
|
77
|
+
|
|
78
|
+
def get_post_form
|
|
79
|
+
{:cartridge => {:name => 'mysql-5.1', :type => 'embedded'},
|
|
80
|
+
:application_id => with_testable_app.id,
|
|
81
|
+
:domain_id => @domain.id}
|
|
82
|
+
end
|
|
83
|
+
end
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
require File.expand_path('../../test_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
class ConsoleAuthBasicControllerTest < ActionController::TestCase
|
|
4
|
+
uses_http_mock :sometimes
|
|
5
|
+
|
|
6
|
+
class ConsoleAuthBasicController < ActionController::Base
|
|
7
|
+
include Console::Rescue
|
|
8
|
+
include Console::Auth::Basic
|
|
9
|
+
|
|
10
|
+
before_filter :authenticate_user!, :except => :unprotected
|
|
11
|
+
|
|
12
|
+
def protected
|
|
13
|
+
render :status => 200, :nothing => true
|
|
14
|
+
end
|
|
15
|
+
def unprotected
|
|
16
|
+
render :status => 200, :nothing => true
|
|
17
|
+
end
|
|
18
|
+
def restapi
|
|
19
|
+
@user = User.find :one, :as => current_user
|
|
20
|
+
render :status => 200, :nothing => true
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
setup{ Rails.application.routes.draw{ match ':action' => ConsoleAuthBasicController } }
|
|
25
|
+
teardown{ Rails.application.reload_routes! }
|
|
26
|
+
|
|
27
|
+
tests ConsoleAuthBasicController
|
|
28
|
+
|
|
29
|
+
test 'should challenge when protected' do
|
|
30
|
+
get :protected
|
|
31
|
+
assert_response :unauthorized
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
test 'should challenge when username empty' do
|
|
35
|
+
@request.env['HTTP_AUTHORIZATION'] = ActionController::HttpAuthentication::Basic.encode_credentials(nil, 'password')
|
|
36
|
+
|
|
37
|
+
get :protected
|
|
38
|
+
assert_response :unauthorized
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
test 'should render when protected' do
|
|
42
|
+
@request.env['HTTP_AUTHORIZATION'] = ActionController::HttpAuthentication::Basic.encode_credentials('bob', 'password')
|
|
43
|
+
|
|
44
|
+
get :protected
|
|
45
|
+
|
|
46
|
+
assert_response :success
|
|
47
|
+
assert assigns(:authenticated_user)
|
|
48
|
+
assert_equal 'bob', @controller.current_user.login
|
|
49
|
+
assert_equal 'bob', assigns(:authenticated_user).login
|
|
50
|
+
|
|
51
|
+
assert !@controller.current_user.persisted?
|
|
52
|
+
assert @controller.current_user.email_address.nil?
|
|
53
|
+
assert @controller.user_signed_in?
|
|
54
|
+
assert !@controller.previously_signed_in?
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
test 'should pass headers to REST API' do
|
|
58
|
+
@request.env['HTTP_AUTHORIZATION'] = ActionController::HttpAuthentication::Basic.encode_credentials('bob', 'password')
|
|
59
|
+
|
|
60
|
+
allow_http_mock
|
|
61
|
+
ActiveResource::HttpMock.respond_to do |mock|
|
|
62
|
+
mock.get '/broker/rest/user.json', anonymous_json_header.merge('Authorization' => @request.env['HTTP_AUTHORIZATION']), {:login => 'foo'}.to_json
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
get :restapi
|
|
66
|
+
assert_response :success
|
|
67
|
+
assert user = assigns(:user)
|
|
68
|
+
assert_equal 'foo', user.login
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
test 'should challenge when broker rejects password' do
|
|
72
|
+
@request.env['HTTP_AUTHORIZATION'] = ActionController::HttpAuthentication::Basic.encode_credentials('bob', 'password')
|
|
73
|
+
|
|
74
|
+
allow_http_mock
|
|
75
|
+
ActiveResource::HttpMock.respond_to do |mock|
|
|
76
|
+
mock.get '/broker/rest/user.json', anonymous_json_header.merge('Authorization' => @request.env['HTTP_AUTHORIZATION']), nil, 401
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
get :restapi
|
|
80
|
+
assert_response :unauthorized
|
|
81
|
+
end
|
|
82
|
+
end
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
require File.expand_path('../../test_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
class ConsoleAuthRemoteUserControllerTest < ActionController::TestCase
|
|
4
|
+
uses_http_mock :sometimes
|
|
5
|
+
|
|
6
|
+
class ConsoleAuthRemoteUserController < ActionController::Base
|
|
7
|
+
include Console::Rescue
|
|
8
|
+
include Console::Auth::RemoteUser
|
|
9
|
+
|
|
10
|
+
before_filter :authenticate_user!, :except => :unprotected
|
|
11
|
+
|
|
12
|
+
def protected
|
|
13
|
+
render :status => 200, :nothing => true
|
|
14
|
+
end
|
|
15
|
+
def unprotected
|
|
16
|
+
render :status => 200, :nothing => true
|
|
17
|
+
end
|
|
18
|
+
def restapi
|
|
19
|
+
@user = User.find :one, :as => current_user
|
|
20
|
+
render :status => 200, :nothing => true
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
setup{ Rails.application.routes.draw{ match ':action' => ConsoleAuthRemoteUserController } }
|
|
25
|
+
teardown{ Rails.application.reload_routes! }
|
|
26
|
+
|
|
27
|
+
setup{ Console.config.expects(:remote_user_header).at_least_once.returns('HTTP_X_REMOTE_USER') }
|
|
28
|
+
setup{ Console.config.stubs(:remote_user_copy_headers).returns(['X-Remote-User','X-Other-Header']) }
|
|
29
|
+
|
|
30
|
+
tests ConsoleAuthRemoteUserController
|
|
31
|
+
|
|
32
|
+
test 'should redirect when protected' do
|
|
33
|
+
get :protected
|
|
34
|
+
assert_redirected_to @controller.unauthorized_path
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
test 'should render when protected' do
|
|
38
|
+
@request.env['HTTP_X_REMOTE_USER'] = 'bob'
|
|
39
|
+
|
|
40
|
+
get :protected
|
|
41
|
+
|
|
42
|
+
assert_response :success
|
|
43
|
+
assert assigns(:authenticated_user)
|
|
44
|
+
assert_equal 'bob', @controller.current_user.login
|
|
45
|
+
assert_equal 'bob', assigns(:authenticated_user).login
|
|
46
|
+
|
|
47
|
+
assert !@controller.current_user.persisted?
|
|
48
|
+
assert @controller.user_signed_in?
|
|
49
|
+
assert !@controller.previously_signed_in?
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
test 'should override name configured' do
|
|
53
|
+
Console.config.expects(:remote_user_name_header).at_least_once.returns('HTTP_X_REMOTE_USER_NAME')
|
|
54
|
+
@request.env['HTTP_X_REMOTE_USER'] = 'bob'
|
|
55
|
+
@request.env['HTTP_X_REMOTE_USER_NAME'] = 'alice'
|
|
56
|
+
|
|
57
|
+
get :protected
|
|
58
|
+
|
|
59
|
+
assert_response :success
|
|
60
|
+
assert assigns(:authenticated_user)
|
|
61
|
+
assert_equal 'alice', @controller.current_user.login
|
|
62
|
+
assert_equal 'alice', assigns(:authenticated_user).login
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
test 'should pass headers to REST API' do
|
|
66
|
+
@request.env['HTTP_X_REMOTE_USER'] = 'bob'
|
|
67
|
+
|
|
68
|
+
allow_http_mock
|
|
69
|
+
ActiveResource::HttpMock.respond_to do |mock|
|
|
70
|
+
mock.get '/broker/rest/user.json', anonymous_json_header.merge('X-Remote-User' => 'bob'), {:login => 'foo'}.to_json
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
get :restapi
|
|
74
|
+
assert_response :success
|
|
75
|
+
assert user = assigns(:user)
|
|
76
|
+
assert_equal 'foo', user.login
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
test 'should redirect when misconfigured' do
|
|
80
|
+
@request.env['HTTP_X_REMOTE_USER'] = 'bob'
|
|
81
|
+
|
|
82
|
+
allow_http_mock
|
|
83
|
+
ActiveResource::HttpMock.respond_to do |mock|
|
|
84
|
+
mock.get '/broker/rest/user.json', anonymous_json_header.merge('X-Remote-User' => 'bob'), nil, 401
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
get :restapi
|
|
88
|
+
assert_redirected_to @controller.unauthorized_path
|
|
89
|
+
end
|
|
90
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require File.expand_path('../../test_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
class ConsoleIndexControllerTest < ActionController::TestCase
|
|
4
|
+
test 'redirect to applications path' do
|
|
5
|
+
with_configured_user
|
|
6
|
+
get :index
|
|
7
|
+
assert_redirected_to applications_path
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
test 'render unauthorized' do
|
|
11
|
+
get :unauthorized
|
|
12
|
+
assert_response :success
|
|
13
|
+
assert_template 'console/unauthorized'
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
test 'render help' do
|
|
17
|
+
with_configured_user
|
|
18
|
+
get :help
|
|
19
|
+
assert_response :success
|
|
20
|
+
assert_template 'console/help'
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
require File.expand_path('../../test_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
class DomainsControllerTest < ActionController::TestCase
|
|
4
|
+
|
|
5
|
+
@@user = nil
|
|
6
|
+
|
|
7
|
+
def setup
|
|
8
|
+
with_unique_user
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def with_particular_user
|
|
12
|
+
if @@user
|
|
13
|
+
set_user(@@user)
|
|
14
|
+
else
|
|
15
|
+
@@user = @user
|
|
16
|
+
end
|
|
17
|
+
with_domain
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def with_domain
|
|
21
|
+
@domain = Domain.first :as => @user
|
|
22
|
+
unless @domain
|
|
23
|
+
@domain = Domain.new(get_post_form.merge(:as => @user))
|
|
24
|
+
flunk @domain.errors.inspect unless @domain.save
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def unique_name_format
|
|
29
|
+
"d#{uuid[0..10]}%i"
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
test "should display domain creation form" do
|
|
33
|
+
get :new
|
|
34
|
+
|
|
35
|
+
assert domain = assigns(:domain)
|
|
36
|
+
assert_response :success
|
|
37
|
+
assert_template :new
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
test "should create domain" do
|
|
41
|
+
post :create, {:domain => get_post_form}
|
|
42
|
+
|
|
43
|
+
assert domain = assigns(:domain)
|
|
44
|
+
assert domain.errors.empty?, domain.errors.inspect
|
|
45
|
+
assert_redirected_to account_path
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
test "should clear domain session cache" do
|
|
49
|
+
session[:domain] = 'foo'
|
|
50
|
+
post :create, {:domain => get_post_form}
|
|
51
|
+
|
|
52
|
+
assert domain = assigns(:domain)
|
|
53
|
+
assert domain.errors.empty?, domain.errors.inspect
|
|
54
|
+
assert_redirected_to account_path
|
|
55
|
+
assert_nil session[:domain]
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
test "should assign errors on empty name" do
|
|
59
|
+
post :create, {:domain => get_post_form.merge(:name => '')}
|
|
60
|
+
|
|
61
|
+
assert domain = assigns(:domain)
|
|
62
|
+
assert !domain.errors.empty?
|
|
63
|
+
assert domain.errors[:name].present?, domain.errors.inspect
|
|
64
|
+
assert_equal 1, domain.errors[:name].length
|
|
65
|
+
assert_template :new
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
test "should assign errors on long name" do
|
|
69
|
+
post :create, {:domain => get_post_form.merge(:name => 'aoeu'*2000)}
|
|
70
|
+
|
|
71
|
+
assert domain = assigns(:domain)
|
|
72
|
+
assert !domain.errors.empty?
|
|
73
|
+
assert domain.errors[:name].present?, domain.errors.inspect
|
|
74
|
+
assert_equal 1, domain.errors[:name].length, domain.errors.inspect
|
|
75
|
+
assert_template :new
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
test "should assign errors on invalid name" do
|
|
79
|
+
post :create, {:domain => get_post_form.merge(:name => '@@@@')}
|
|
80
|
+
|
|
81
|
+
assert domain = assigns(:domain)
|
|
82
|
+
assert !domain.errors.empty?
|
|
83
|
+
assert domain.errors[:name].present?, domain.errors.inspect
|
|
84
|
+
assert_equal 1, domain.errors[:name].length, domain.errors.inspect
|
|
85
|
+
assert_template :new
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
test "should assign errors on duplicate name" do
|
|
89
|
+
assert (domain = Domain.new(get_post_form.merge(:as => unique_user))).save, domain.errors.inspect
|
|
90
|
+
|
|
91
|
+
post :create, {:domain => get_post_form.merge(:name => domain.name)}
|
|
92
|
+
|
|
93
|
+
assert domain = assigns(:domain)
|
|
94
|
+
assert !domain.errors.empty?
|
|
95
|
+
assert domain.errors[:name].present?, domain.errors.inspect
|
|
96
|
+
assert_equal 1, domain.errors[:name].length, domain.errors.inspect
|
|
97
|
+
assert_template :new
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
#test "should allow only one domain" do
|
|
101
|
+
# with_domain
|
|
102
|
+
|
|
103
|
+
# post :create, {:domain => {:name => unique_name}}
|
|
104
|
+
|
|
105
|
+
# assert domain = assigns(:domain)
|
|
106
|
+
# assert !domain.errors.empty?
|
|
107
|
+
# assert domain.errors[:name].present?, domain.errors.inspect
|
|
108
|
+
# assert_equal 1, domain.errors[:name].length, domain.errors.inspect
|
|
109
|
+
# assert_template :new
|
|
110
|
+
#end
|
|
111
|
+
|
|
112
|
+
test "should show edit domain page" do
|
|
113
|
+
with_domain
|
|
114
|
+
|
|
115
|
+
get :edit
|
|
116
|
+
assert_template :edit
|
|
117
|
+
assert_response :success
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
test "should update domain" do
|
|
121
|
+
with_particular_user
|
|
122
|
+
|
|
123
|
+
put :update, {:domain => {:name => unique_name}}
|
|
124
|
+
|
|
125
|
+
assert domain = assigns(:domain)
|
|
126
|
+
assert domain.errors.empty?, domain.errors.inspect
|
|
127
|
+
assert_redirected_to account_path
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
test "should update domain and clear session cache" do
|
|
131
|
+
with_particular_user
|
|
132
|
+
session[:domain] = 'foo'
|
|
133
|
+
|
|
134
|
+
put :update, {:domain => {:name => unique_name}}
|
|
135
|
+
|
|
136
|
+
assert domain = assigns(:domain)
|
|
137
|
+
assert domain.errors.empty?, domain.errors.inspect
|
|
138
|
+
assert_redirected_to account_path
|
|
139
|
+
assert_nil session[:domain]
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
test "update should assign errors on empty name" do
|
|
143
|
+
with_particular_user
|
|
144
|
+
|
|
145
|
+
put :update, {:domain => {:name => ''}}
|
|
146
|
+
|
|
147
|
+
assert domain = assigns(:domain)
|
|
148
|
+
assert !domain.errors.empty?
|
|
149
|
+
assert domain.errors[:name].present?, domain.errors.inspect
|
|
150
|
+
assert_equal 1, domain.errors[:name].length
|
|
151
|
+
assert_template :edit
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
test "update should assign errors on long name" do
|
|
155
|
+
with_particular_user
|
|
156
|
+
|
|
157
|
+
put :update, {:domain => {:name => 'aoeu'*2000}}
|
|
158
|
+
|
|
159
|
+
assert domain = assigns(:domain)
|
|
160
|
+
assert !domain.errors.empty?
|
|
161
|
+
assert domain.errors[:name].present?, domain.errors.inspect
|
|
162
|
+
assert_equal 1, domain.errors[:name].length
|
|
163
|
+
assert_template :edit
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
test "update should assign errors on invalid name" do
|
|
167
|
+
with_particular_user
|
|
168
|
+
|
|
169
|
+
put :update, {:domain => {:name => '@@@@'}}
|
|
170
|
+
|
|
171
|
+
assert domain = assigns(:domain)
|
|
172
|
+
assert !domain.errors.empty?, domain.inspect
|
|
173
|
+
assert domain.errors[:name].present?, domain.inspect
|
|
174
|
+
assert_equal 1, domain.errors[:name].length
|
|
175
|
+
assert_template :edit
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
test "update should assign errors on duplicate name" do
|
|
179
|
+
with_particular_user
|
|
180
|
+
assert (domain = Domain.new(get_post_form.merge(:name => "d#{new_uuid[0..12]}", :as => unique_user))).save, domain.errors.inspect
|
|
181
|
+
|
|
182
|
+
put :update, {:domain => {:name => domain.name}}
|
|
183
|
+
|
|
184
|
+
assert domain = assigns(:domain)
|
|
185
|
+
assert !domain.errors.empty?
|
|
186
|
+
assert domain.errors[:name].present?, domain.errors.inspect
|
|
187
|
+
assert_equal 1, domain.errors[:name].length
|
|
188
|
+
assert_template :edit
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
def get_post_form
|
|
192
|
+
{:name => "d#{uuid[0..12]}"}
|
|
193
|
+
end
|
|
194
|
+
end
|