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,163 @@
|
|
|
1
|
+
require File.expand_path('../../test_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
class KeysControllerTest < ActionController::TestCase
|
|
4
|
+
|
|
5
|
+
setup :with_configured_user
|
|
6
|
+
setup :delete_keys
|
|
7
|
+
|
|
8
|
+
def unique_name_format
|
|
9
|
+
'key%i'
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
test "should show key creation form" do
|
|
13
|
+
get :new
|
|
14
|
+
assert_response :success
|
|
15
|
+
assert_template :new
|
|
16
|
+
assert_nil assigns(:first)
|
|
17
|
+
assert key = assigns(:key)
|
|
18
|
+
assert !key.persisted?
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
test "should create key" do
|
|
22
|
+
post :create, {:key => get_post_form}
|
|
23
|
+
|
|
24
|
+
assert key = assigns(:key)
|
|
25
|
+
assert key.errors.empty?, key.errors.inspect
|
|
26
|
+
assert_redirected_to account_path
|
|
27
|
+
#since this is only key the user has then it cannot be deleted (because of the old client tools)
|
|
28
|
+
#assert key.destroy
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
test "should create key and redirect back" do
|
|
32
|
+
@request.env['HTTP_REFERER'] = 'http://arbitrary/back'
|
|
33
|
+
|
|
34
|
+
post :create, {:key => get_post_form, :first => true}
|
|
35
|
+
|
|
36
|
+
assert key = assigns(:key)
|
|
37
|
+
assert key.errors.empty?, key.errors.inspect
|
|
38
|
+
assert_redirected_to 'http://arbitrary/back'
|
|
39
|
+
assert flash[:success]
|
|
40
|
+
|
|
41
|
+
#since this is only key the user has then it cannot be deleted (because of the old client tools)
|
|
42
|
+
#assert key.destroy
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
test "should create key and redirect back without referrer" do
|
|
46
|
+
post :create, {:key => get_post_form, :first => true}
|
|
47
|
+
|
|
48
|
+
assert key = assigns(:key)
|
|
49
|
+
assert key.errors.empty?, key.errors.inspect
|
|
50
|
+
assert_redirected_to account_path
|
|
51
|
+
assert flash[:success]
|
|
52
|
+
|
|
53
|
+
#since this is only key the user has then it cannot be deleted (because of the old client tools)
|
|
54
|
+
#assert key.destroy
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
test "should overwrite default key" do
|
|
58
|
+
(key = Key.new(:name => 'default', :raw_content => 'ssh-rsa defaultkey1', :as => @user)).save!
|
|
59
|
+
|
|
60
|
+
post :create, {:key => {:name => 'default', :raw_content => 'ssh-rsa defaultkey2'}, :first => true}
|
|
61
|
+
|
|
62
|
+
assert_redirected_to account_path
|
|
63
|
+
assert key = assigns(:key)
|
|
64
|
+
assert_equal 'defaultkey2', key.content
|
|
65
|
+
assert key.errors.empty?, key.errors.inspect
|
|
66
|
+
assert flash[:success]
|
|
67
|
+
|
|
68
|
+
key.destroy
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
test "should give key new name" do
|
|
72
|
+
(key = Key.new(:name => 'test', :raw_content => 'ssh-rsa nameuniquekey1', :as => @user)).save!
|
|
73
|
+
|
|
74
|
+
post :create, {:key => {:name => 'test', :raw_content => 'ssh-rsa nameuniquekey2'}, :first => true}
|
|
75
|
+
|
|
76
|
+
assert_redirected_to account_path
|
|
77
|
+
assert assigns(:first)
|
|
78
|
+
assert key = assigns(:key)
|
|
79
|
+
assert_equal 'test2', key.name
|
|
80
|
+
assert_equal 'nameuniquekey2', key.content
|
|
81
|
+
assert key.errors.empty?, key.errors.inspect
|
|
82
|
+
assert flash[:success]
|
|
83
|
+
|
|
84
|
+
assert key.destroy
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
test "should destroy key" do
|
|
88
|
+
(key = Key.new(get_post_form.merge(:as => @user))).save!
|
|
89
|
+
delete :destroy, :id => key.id
|
|
90
|
+
assert_redirected_to account_path
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
test "should destroy default key" do
|
|
94
|
+
(key = Key.new(get_post_form.merge(:name => 'default', :as => @user))).save!
|
|
95
|
+
delete :destroy, :id => key.id
|
|
96
|
+
assert_redirected_to account_path
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
test "should assign errors on empty name" do
|
|
100
|
+
post :create, {:key => get_post_form.merge(:name => '')}
|
|
101
|
+
|
|
102
|
+
assert_response :success
|
|
103
|
+
assert_template :new
|
|
104
|
+
|
|
105
|
+
assert key = assigns(:key)
|
|
106
|
+
assert !key.errors.empty?
|
|
107
|
+
assert key.errors[:name].present?, key.errors.inspect
|
|
108
|
+
assert_equal 1, key.errors[:name].length
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
test "should assign errors on long name" do
|
|
112
|
+
post :create, {:key => get_post_form.merge(:name => 'aoeu'*2000)}
|
|
113
|
+
|
|
114
|
+
assert_response :success
|
|
115
|
+
assert_template :new
|
|
116
|
+
|
|
117
|
+
assert key = assigns(:key)
|
|
118
|
+
assert !key.errors.empty?
|
|
119
|
+
assert key.errors[:name].present?, key.errors.inspect
|
|
120
|
+
assert_equal 1, key.errors[:name].length
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
test "should assign errors on invalid name" do
|
|
124
|
+
post :create, {:key => get_post_form.merge(:name => '@@@@')}
|
|
125
|
+
|
|
126
|
+
assert_response :success
|
|
127
|
+
assert_template :new
|
|
128
|
+
|
|
129
|
+
assert key = assigns(:key)
|
|
130
|
+
assert !key.errors.empty?
|
|
131
|
+
assert key.errors[:name].present?, key.errors.inspect
|
|
132
|
+
assert_equal 1, key.errors[:name].length
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
test "should assign errors on duplicate name" do
|
|
136
|
+
(key = Key.new(get_post_form.merge(:as => @user))).save!
|
|
137
|
+
|
|
138
|
+
post :create, {:key => get_post_form.merge(:name => key.name, :raw_content => 'ssh-rsa XYZ')}
|
|
139
|
+
|
|
140
|
+
assert_response :success
|
|
141
|
+
assert_template :new
|
|
142
|
+
|
|
143
|
+
assert key = assigns(:key)
|
|
144
|
+
assert !key.errors.empty?
|
|
145
|
+
assert key.errors[:name].present?, key.errors.inspect
|
|
146
|
+
assert_equal 1, key.errors[:name].length
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
test "should clear session cache" do
|
|
150
|
+
session[:has_sshkey] = 'true'
|
|
151
|
+
post :create, {:key => get_post_form}
|
|
152
|
+
|
|
153
|
+
assert key = assigns(:key)
|
|
154
|
+
assert key.errors.empty?, key.errors.inspect
|
|
155
|
+
assert_redirected_to account_path
|
|
156
|
+
assert_nil session[:key]
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
def get_post_form
|
|
160
|
+
name = unique_name
|
|
161
|
+
{:name => name, :raw_content => "ssh-rsa value#{name}"}
|
|
162
|
+
end
|
|
163
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": [
|
|
3
|
+
{
|
|
4
|
+
"quickstart": {
|
|
5
|
+
"body": "<p>A rich blogging platform with a comprehensive ecosystem of plugins and tools.</p>",
|
|
6
|
+
"id": "12069",
|
|
7
|
+
"href": "/community/content/wordpress-34",
|
|
8
|
+
"name": "Wordpress 3.4",
|
|
9
|
+
"updated": "1351452778",
|
|
10
|
+
"cartridges": "php-5.3, mysql-5.1",
|
|
11
|
+
"initial_git_url": "https://github.com/openshift/wordpress-example",
|
|
12
|
+
"language": "PHP",
|
|
13
|
+
"tags": "blog, example, php, wordpress"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
require File.expand_path('../../test_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class ScalingControllerTest < ActionController::TestCase
|
|
5
|
+
|
|
6
|
+
uses_http_mock :sometimes
|
|
7
|
+
|
|
8
|
+
def mock_domain
|
|
9
|
+
{:id => 'test'}
|
|
10
|
+
end
|
|
11
|
+
def app_without_scaling
|
|
12
|
+
{:name => 'test', :framework => 'php-5.3', :git_url => 'ssh://foo@bar-domain.rhcloud.com/~/something/repo.git'}
|
|
13
|
+
end
|
|
14
|
+
def app_with_scaling
|
|
15
|
+
{:name => 'test', :framework => 'php-5.3', :git_url => 'ssh://foo@bar-domain.rhcloud.com/~/something/repo.git', :scale => true}
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def cartridges_without_scaling
|
|
19
|
+
[
|
|
20
|
+
{:name => 'php-5.3', :current_scale => 1, :scales_from => 1, :scales_to => 1},
|
|
21
|
+
]
|
|
22
|
+
end
|
|
23
|
+
def cartridges_with_scaling(multiplier)
|
|
24
|
+
[
|
|
25
|
+
{:name => 'php-5.3', :collocated_with => ['extra-1.0', 'haproxy-1.4'], :scales_from => 1, :scales_to => multiplier*2, :current_scale => multiplier},
|
|
26
|
+
{:name => 'extra-1.0', :collocated_with => ['php-5.3', 'haproxy-1.4'], :scales_from => 1, :scales_to => 1, :current_scale => 1},
|
|
27
|
+
{:name => 'haproxy-1.4', :collocated_with => ['php-5.3', 'extra-1.0'], :scales_from => 1, :scales_to => 1, :current_scale => 1},
|
|
28
|
+
{:name => 'mysql-5.0', :scales_from => 1, :scales_to => 1, :current_scale => 1},
|
|
29
|
+
]
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def with_mock_app(app=app_without_scaling, cartridges=cartridges_without_scaling)
|
|
33
|
+
with_unique_user
|
|
34
|
+
|
|
35
|
+
allow_http_mock
|
|
36
|
+
ActiveResource::HttpMock.respond_to(false) do |mock|
|
|
37
|
+
mock.get '/broker/rest/cartridges.json', anonymous_json_header, [].to_json
|
|
38
|
+
mock.get '/broker/rest/user.json', json_header, {:max_gears => 16}.to_json
|
|
39
|
+
mock.get '/broker/rest/domains.json', json_header, [mock_domain].to_json
|
|
40
|
+
mock.get '/broker/rest/domains/test/applications/test.json', json_header, app.to_json
|
|
41
|
+
mock.get '/broker/rest/domains/test/applications.json', json_header, [app].compact.to_json
|
|
42
|
+
mock.get '/broker/rest/domains/test/applications/test/cartridges.json', json_header, cartridges.to_json
|
|
43
|
+
end
|
|
44
|
+
{:application_id => 'test'}
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def without_scaling
|
|
48
|
+
with_unique_user
|
|
49
|
+
with_mock_app
|
|
50
|
+
end
|
|
51
|
+
def with_scaling(multiplier=1)
|
|
52
|
+
with_unique_user
|
|
53
|
+
with_mock_app(app_with_scaling, cartridges_with_scaling(multiplier))
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
test 'displays form and title for scaling' do
|
|
57
|
+
get :show, with_scaling(2)
|
|
58
|
+
assert_select 'h2', "php-5.3"
|
|
59
|
+
assert_select 'h2', "extra-1.0"
|
|
60
|
+
assert_select 'h2', "mysql-5.0"
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def scalable_app_params
|
|
64
|
+
{
|
|
65
|
+
:application_id => with_scalable_app.to_param,
|
|
66
|
+
:id => scalable_cartridge.name
|
|
67
|
+
}
|
|
68
|
+
end
|
|
69
|
+
def scalable_cartridge
|
|
70
|
+
with_scalable_app.cartridges.find(&:scales?)
|
|
71
|
+
end
|
|
72
|
+
def assert_cart_scales(from, to, message='Cartridge scaling not set correctly')
|
|
73
|
+
scalable_cartridge.reload.tap{ |c| assert_equal [from,to], [c.scales_from, c.scales_to], message }
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
test 'updates scale range' do
|
|
77
|
+
put :update, {:cartridge => {:scales_from => 2, :scales_to => 3}}.merge(scalable_app_params)
|
|
78
|
+
assert_redirected_to application_scaling_path
|
|
79
|
+
assert_cart_scales 2, 3
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
test 'allows fixed scale range' do
|
|
83
|
+
put :update, {:cartridge => {:scales_from => 3, :scales_to => 3}}.merge(scalable_app_params)
|
|
84
|
+
assert_redirected_to application_scaling_path, assigns(:cartridge).errors.inspect
|
|
85
|
+
assert_cart_scales 3, 3
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
test 'allows unlimited scale range' do
|
|
89
|
+
put :update, {:cartridge => {:scales_from => 3, :scales_to => -1}}.merge(scalable_app_params)
|
|
90
|
+
assert_redirected_to application_scaling_path, assigns(:cartridge).errors.inspect
|
|
91
|
+
assert_cart_scales 3, -1
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
test 'flips scale range if necessary' do
|
|
95
|
+
put :update, {:cartridge => {:scales_from => 3, :scales_to => 2}}.merge(scalable_app_params)
|
|
96
|
+
assert_redirected_to application_scaling_path
|
|
97
|
+
assert_equal [2, 3], [assigns(:cartridge).scales_from, assigns(:cartridge).scales_to]
|
|
98
|
+
assert_cart_scales 2, 3
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
test 'rejects unlimited scales_from' do
|
|
102
|
+
put :update, {:cartridge => {:scales_from => -1, :scales_to => 2}}.merge(scalable_app_params)
|
|
103
|
+
assert_response :success
|
|
104
|
+
assert_select 'ul.alert-error > li', /Invalid scales_(from|to) factor -?\d+ provided/
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
test 'rejects out of range scales_from' do
|
|
108
|
+
if scalable_cartridge.supported_scales_from > 0
|
|
109
|
+
put :update, {:cartridge => {:scales_from => 0, :scales_to => 2}}.merge(scalable_app_params)
|
|
110
|
+
assert_response :success
|
|
111
|
+
assert_select 'ul.alert-error > li', /Invalid scales_(from|to) factor -?\d+ provided/
|
|
112
|
+
else
|
|
113
|
+
fail 'Test case needs to be updated, a cart can be scaled to 0 now'
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
test 'rejects impossible scales_to' do
|
|
118
|
+
put :update, {:cartridge => {:scales_from => 2, :scales_to => -2}}.merge(scalable_app_params)
|
|
119
|
+
assert_response :success
|
|
120
|
+
assert_select 'ul.alert-error > li', /Invalid scales_(from|to) factor -?\d+ provided/
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
[true, false].each do |mock|
|
|
124
|
+
test "should get redirected from show without scaling #{'(mock)' if mock}" do
|
|
125
|
+
get :show, mock ? without_scaling : {:application_id => with_app.to_param}
|
|
126
|
+
assert app = assigns(:application)
|
|
127
|
+
assert assigns(:domain)
|
|
128
|
+
assert_redirected_to new_application_scaling_path(app)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
test "should get redirected from delete without scaling #{'(mock)' if mock}" do
|
|
132
|
+
get :delete, mock ? without_scaling : {:application_id => with_app.to_param}
|
|
133
|
+
assert app = assigns(:application)
|
|
134
|
+
assert assigns(:domain)
|
|
135
|
+
assert_redirected_to new_application_scaling_path(app)
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
test "should see new page without scaling #{'(mock)' if mock}" do
|
|
139
|
+
get :new, mock ? without_scaling : {:application_id => with_app.to_param}
|
|
140
|
+
assert app = assigns(:application)
|
|
141
|
+
assert assigns(:domain)
|
|
142
|
+
assert_response :success
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
test "should show if all components exist #{'(mock)' if mock}" do
|
|
146
|
+
get :show, mock ? with_scaling : {:application_id => with_scalable_app.to_param}
|
|
147
|
+
assert app = assigns(:application), @response.pretty_inspect
|
|
148
|
+
assert app.ssh_string
|
|
149
|
+
assert assigns(:domain)
|
|
150
|
+
assert_response :success
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require File.expand_path('../../test_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
class AssetsTest < ActionDispatch::IntegrationTest
|
|
4
|
+
setup { open_session }
|
|
5
|
+
|
|
6
|
+
test 'retrieve the main javascript resource' do
|
|
7
|
+
get '/assets/console.js'
|
|
8
|
+
assert_response :success
|
|
9
|
+
assert_equal 'application/javascript', @response.content_type
|
|
10
|
+
assert @response.body.length > 10*1024
|
|
11
|
+
assert @response.body.include?("jQuery")
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
test 'retrieve an image' do
|
|
15
|
+
get '/assets/sprite-vert.png'
|
|
16
|
+
assert_response :success
|
|
17
|
+
assert_equal 'image/png', @response.content_type
|
|
18
|
+
assert @response.body.length > 1*1024
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
test 'retrieve common.css' do
|
|
22
|
+
get '/assets/common.css'
|
|
23
|
+
assert_response :success
|
|
24
|
+
assert_equal 'text/css', @response.content_type
|
|
25
|
+
assert @response.body.length > 20*1024
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
test 'retrieve origin.css' do
|
|
29
|
+
get '/assets/origin.css'
|
|
30
|
+
assert_response :success
|
|
31
|
+
assert_equal 'text/css', @response.content_type
|
|
32
|
+
assert @response.body.length > 20*1024
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require File.expand_path('../../test_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
class HelpLinkTest < ActionDispatch::IntegrationTest
|
|
4
|
+
class << self
|
|
5
|
+
def urls_from_module(mod)
|
|
6
|
+
obj = Class.new { include mod }.new
|
|
7
|
+
|
|
8
|
+
mod.public_instance_methods.collect do |name|
|
|
9
|
+
mod.instance_method(name)
|
|
10
|
+
end.select do |m|
|
|
11
|
+
m.name =~ /_url$/ && m.arity == 0
|
|
12
|
+
end.inject({}) do |hash, m|
|
|
13
|
+
uri = URI.parse(obj.send(m.name))
|
|
14
|
+
hash["#{mod.name}##{m.name}"] = uri if uri.is_a?(URI::HTTPS) || uri.is_a?(URI::HTTP)
|
|
15
|
+
hash
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
def create_test(name, uri)
|
|
19
|
+
test "can access #{name}(#{uri})" do
|
|
20
|
+
check_url(name, uri)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def check_url(name, uri)
|
|
26
|
+
begin
|
|
27
|
+
req = Net::HTTP.new(uri.host, uri.port)
|
|
28
|
+
if uri.is_a?(URI::HTTPS)
|
|
29
|
+
req.use_ssl = true
|
|
30
|
+
req.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
|
31
|
+
end
|
|
32
|
+
res = req.start do |http|
|
|
33
|
+
http.get(uri.request_uri)
|
|
34
|
+
end
|
|
35
|
+
assert 200, res.code
|
|
36
|
+
rescue Exception => e
|
|
37
|
+
raise e, "Could not retrieve #{name}(#{uri}): #{e.message}"
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
urls_from_module(Console::HelpHelper).each_pair{ |name,uri| self.create_test(name,uri) }
|
|
42
|
+
urls_from_module(Console::CommunityHelper).each_pair{ |name,uri| self.create_test(name,uri) }
|
|
43
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require File.expand_path('../../test_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
class QuickstartsTest < ActiveSupport::TestCase
|
|
4
|
+
|
|
5
|
+
test 'retrieve quickstarts' do
|
|
6
|
+
quickstart = Quickstart.promoted.first
|
|
7
|
+
omit('Quickstarts are not present on the server') if quickstart.nil?
|
|
8
|
+
assert quickstart.tags.is_a? Array
|
|
9
|
+
assert quickstart.tags.present?
|
|
10
|
+
assert quickstart.tags.all?{ |t| t.is_a? Symbol }
|
|
11
|
+
assert quickstart.name.present?
|
|
12
|
+
assert quickstart.summary.present?
|
|
13
|
+
if quickstart.body.present?
|
|
14
|
+
assert quickstart.href.present?
|
|
15
|
+
assert quickstart.updated > 1.year.ago
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
test 'search quickstarts' do
|
|
20
|
+
quickstarts = Quickstart.search('blog')
|
|
21
|
+
omit('Quickstarts do not have a result matching "blog"') unless quickstarts.present?
|
|
22
|
+
assert quickstarts.first.tags.include?(:blog)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require File.expand_path('../../test_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
class RescueFromTest < ActionDispatch::IntegrationTest
|
|
4
|
+
setup { open_session }
|
|
5
|
+
|
|
6
|
+
def with_user
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def controller_raises(exception)
|
|
10
|
+
with_configured_user
|
|
11
|
+
ConsoleIndexController.any_instance.expects(:index).raises(exception)
|
|
12
|
+
with_rescue_from do
|
|
13
|
+
get '/', nil, {'HTTP_AUTHORIZATION' => ActionController::HttpAuthentication::Basic.encode_credentials(@user.login, @user.password)}
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def default_error_message
|
|
18
|
+
/An error has occurred/i
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
test 'render unexpected error page' do
|
|
22
|
+
controller_raises(ActiveResource::ConnectionError.new(nil))
|
|
23
|
+
assert_error_page
|
|
24
|
+
end
|
|
25
|
+
end
|