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,115 @@
|
|
|
1
|
+
require File.expand_path('../../../test_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
class RestApiApplicationTest < ActiveSupport::TestCase
|
|
4
|
+
include RestApiAuth
|
|
5
|
+
|
|
6
|
+
def test_create
|
|
7
|
+
with_configured_user
|
|
8
|
+
setup_domain
|
|
9
|
+
|
|
10
|
+
app = Application.new :as => @user
|
|
11
|
+
assert_raise(ActiveResource::MissingPrefixParam) { app.save }
|
|
12
|
+
|
|
13
|
+
app.domain = @domain
|
|
14
|
+
|
|
15
|
+
assert !app.save
|
|
16
|
+
assert app.errors[:name].present?, app.errors.inspect
|
|
17
|
+
|
|
18
|
+
app.name = 'test'
|
|
19
|
+
|
|
20
|
+
assert !app.save
|
|
21
|
+
assert app.errors[:cartridge].present?, app.errors.inspect
|
|
22
|
+
|
|
23
|
+
app.cartridge = 'php-5.3'
|
|
24
|
+
|
|
25
|
+
assert app.save, app.errors.inspect
|
|
26
|
+
saved_app = @domain.find_application('test')
|
|
27
|
+
app.schema.each_key do |key|
|
|
28
|
+
value = app.send(key)
|
|
29
|
+
assert_equal app.send(key), saved_app.send(key) unless value.nil?
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
assert_nil app.building_app
|
|
33
|
+
assert_nil app.building_with
|
|
34
|
+
|
|
35
|
+
prefix_options = app.prefix_options
|
|
36
|
+
app.reload
|
|
37
|
+
assert_equal prefix_options, app.prefix_options
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_retrieve_cartridges
|
|
41
|
+
#setup_domain
|
|
42
|
+
#app = Application.create :name => 'test', :domain => @domain, :cartridge => 'php-5.3', :as => @user
|
|
43
|
+
app = with_app
|
|
44
|
+
|
|
45
|
+
assert cartridges = app.cartridges
|
|
46
|
+
assert_equal 1, cartridges.length
|
|
47
|
+
assert cart = cartridges.first
|
|
48
|
+
assert_equal app.framework, cart.name
|
|
49
|
+
assert cart.description
|
|
50
|
+
assert cart.tags.present?
|
|
51
|
+
|
|
52
|
+
# scaling parameters
|
|
53
|
+
assert_nil cart.scales_with
|
|
54
|
+
assert_equal 1, cart.supported_scales_from
|
|
55
|
+
assert_equal 1, cart.supported_scales_to
|
|
56
|
+
assert_equal 1, cart.current_scale
|
|
57
|
+
assert_equal 1, cart.scales_from
|
|
58
|
+
assert_equal 1, cart.scales_to
|
|
59
|
+
assert !cart.scales?
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def test_create_multiple_cartridges
|
|
63
|
+
with_configured_user
|
|
64
|
+
setup_domain
|
|
65
|
+
|
|
66
|
+
assert_create_app({:cartridges => ['ruby-1.9','mysql-5.1']}, "Simple cartridges list") do |app|
|
|
67
|
+
assert_equal ['ruby-1.9', 'mysql-5.1'], app.cartridges.map(&:name)
|
|
68
|
+
end
|
|
69
|
+
assert_create_app({:cartridges => [{:name => 'ruby-1.9'},'mysql-5.1']}, "Mixed objects list") do |app|
|
|
70
|
+
assert_equal ['ruby-1.9', 'mysql-5.1'], app.cartridges.map(&:name)
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def test_create_app_with_initial_git_url
|
|
75
|
+
with_configured_user
|
|
76
|
+
setup_domain
|
|
77
|
+
|
|
78
|
+
assert_create_app({:initial_git_url => 'https://github.com/openshift/wordpress-example', :cartridges => ['php-5.3']}, "Set initial git URL") do |app|
|
|
79
|
+
assert_equal ['php-5.3'], app.cartridges.map(&:name)
|
|
80
|
+
loaded_app = Application.find(app.name, :params => {:domain_id => @domain.id}, :as => @user)
|
|
81
|
+
omit("No initial_git_url returned") unless loaded_app.initial_git_url
|
|
82
|
+
assert_equal "https://github.com/openshift/wordpress-example", loaded_app.initial_git_url
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def assert_create_app(options, message="", &block)
|
|
87
|
+
app = Application.new({:name => 'test', :domain => @domain}.merge(options))
|
|
88
|
+
assert app.save, "#{description} could not be saved, #{app.errors.to_hash.inspect}"
|
|
89
|
+
begin
|
|
90
|
+
yield app
|
|
91
|
+
ensure
|
|
92
|
+
puts "Unable to delete app" unless app.destroy
|
|
93
|
+
end
|
|
94
|
+
app
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def test_retrieve_gear_groups
|
|
98
|
+
app = with_app
|
|
99
|
+
|
|
100
|
+
cart = Cartridge.new :name => app.framework
|
|
101
|
+
|
|
102
|
+
assert groups = app.gear_groups
|
|
103
|
+
|
|
104
|
+
assert_equal 1, groups.length
|
|
105
|
+
group = groups[0]
|
|
106
|
+
assert group.is_a? GearGroup
|
|
107
|
+
assert group.name
|
|
108
|
+
assert_equal [cart], group.cartridges
|
|
109
|
+
assert_equal 1, group.gears.length
|
|
110
|
+
gear = group.gears[0]
|
|
111
|
+
assert gear.is_a? Gear
|
|
112
|
+
assert [:started, :idle].include? gear.state
|
|
113
|
+
assert gear.id
|
|
114
|
+
end
|
|
115
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require File.expand_path('../../../test_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
class RestApiCartridgeTest < ActiveSupport::TestCase
|
|
4
|
+
include RestApiAuth
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
with_configured_user
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
test 'cartridge scale parameters can be changed' do
|
|
11
|
+
app = with_scalable_app
|
|
12
|
+
|
|
13
|
+
carts = app.cartridges.select{ |c| c.scales? }
|
|
14
|
+
assert_equal 1, carts.length
|
|
15
|
+
|
|
16
|
+
cart = carts.first
|
|
17
|
+
assert cart.tags.include? :web_framework
|
|
18
|
+
assert cart.scales_from > 0
|
|
19
|
+
assert cart.scales_to != 0
|
|
20
|
+
assert cart.supported_scales_from > 0
|
|
21
|
+
assert_equal(-1, cart.supported_scales_to)
|
|
22
|
+
|
|
23
|
+
base = Range.new(cart.supported_scales_from, cart.supported_scales_to == -1 ? User.find(:one, :as => @user).max_gears : [100,cart.supported_scales_to].min).to_a.sample
|
|
24
|
+
|
|
25
|
+
name = cart.name
|
|
26
|
+
|
|
27
|
+
prefix = cart.prefix_options.dup
|
|
28
|
+
|
|
29
|
+
cart.scales_from = base
|
|
30
|
+
cart.scales_to = base
|
|
31
|
+
assert cart.save, "Unable to set scales_from/to to #{base}: #{cart.errors.full_messages}"
|
|
32
|
+
|
|
33
|
+
assert_equal base, cart.scales_from
|
|
34
|
+
assert_equal base, cart.scales_to
|
|
35
|
+
|
|
36
|
+
assert_equal prefix, cart.prefix_options
|
|
37
|
+
|
|
38
|
+
cart.reload
|
|
39
|
+
|
|
40
|
+
assert_equal base, cart.scales_from
|
|
41
|
+
assert_equal base, cart.scales_to
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
require File.expand_path('../../../test_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
class RestApiCartridgeTypeTest < ActiveSupport::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
with_configured_user
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def log_types(types)
|
|
10
|
+
types.each do |t|
|
|
11
|
+
Rails.logger.debug <<-TYPE.strip_heredoc
|
|
12
|
+
Type #{t.display_name} (#{t.id})
|
|
13
|
+
description: #{t.description}
|
|
14
|
+
tags: #{t.tags.inspect}
|
|
15
|
+
version: #{t.version}
|
|
16
|
+
cartridges: #{t.respond_to?(:cartridges) ? t.cartridges.inspect : 'n/a'}
|
|
17
|
+
priority: #{t.priority}
|
|
18
|
+
#{log_extra(t)}
|
|
19
|
+
TYPE
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
def log_extra(type)
|
|
23
|
+
if type.respond_to?(:requires)
|
|
24
|
+
" requires: #{type.requires.inspect}\n"
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
test 'should load embedded cartridge types from server' do
|
|
29
|
+
types = CartridgeType.embedded
|
|
30
|
+
assert types.length > 0
|
|
31
|
+
types.sort!
|
|
32
|
+
|
|
33
|
+
log_types(types)
|
|
34
|
+
|
|
35
|
+
assert type = types.find{ |t| t.name.starts_with?('phpmyadmin-') }
|
|
36
|
+
assert type.requires.find{ |r| r.starts_with?('mysql-') }, type.requires.inspect
|
|
37
|
+
assert type.tags.include? :administration
|
|
38
|
+
assert_not_equal type.name, type.display_name
|
|
39
|
+
|
|
40
|
+
assert (required = types.select{ |t| t.requires.present? }).length > 1
|
|
41
|
+
assert types.all?{ |t| t.tags.present? }
|
|
42
|
+
assert types.all?{ |t| t.tags.present? }
|
|
43
|
+
assert types.all?{ |t| (t.tags & t.categories).sort.uniq == t.categories.sort.uniq }
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
test 'should load standalone cartridge types' do
|
|
47
|
+
types = CartridgeType.standalone
|
|
48
|
+
assert types.length > 0
|
|
49
|
+
types.sort!
|
|
50
|
+
|
|
51
|
+
log_types(types)
|
|
52
|
+
|
|
53
|
+
assert types[0].name.starts_with?('jbosseap-')
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
test 'should load metadata from broker' do
|
|
57
|
+
assert type = CartridgeType.find('zend-5.6')
|
|
58
|
+
assert type.tags.include?(:web_framework), type.tags.inspect
|
|
59
|
+
assert_not_equal type.name, type.display_name
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
test 'should load application types' do
|
|
63
|
+
types = ApplicationType.all
|
|
64
|
+
assert types.length > 0
|
|
65
|
+
|
|
66
|
+
types.sort!
|
|
67
|
+
log_types(types)
|
|
68
|
+
|
|
69
|
+
assert types[0].id.starts_with?('cart!jbosseap'), types[0].id
|
|
70
|
+
|
|
71
|
+
type = types.find(&:template?)
|
|
72
|
+
omit("No templates defined on this server") if type.nil?
|
|
73
|
+
|
|
74
|
+
template = type.template
|
|
75
|
+
assert template.name
|
|
76
|
+
assert template.description
|
|
77
|
+
assert template.version
|
|
78
|
+
assert template.website
|
|
79
|
+
assert template.git_url
|
|
80
|
+
assert template.git_project_url
|
|
81
|
+
assert_equal type.id, "template!#{template.name}"
|
|
82
|
+
assert template.git_project_url
|
|
83
|
+
assert_same template.tags, template.tags
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
test 'sort cartridges' do
|
|
87
|
+
array = ['diy-0.1','mongodb-2.2'].map{ |s| Cartridge.new(:name => s) }
|
|
88
|
+
assert_equal array.map(&:name), array.sort.map(&:name)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
test 'cartridges are sorted properly' do
|
|
92
|
+
ruby18 = CartridgeType.find 'ruby-1.8'
|
|
93
|
+
ruby = CartridgeType.find 'ruby-1.9'
|
|
94
|
+
php = CartridgeType.find 'php-5.3'
|
|
95
|
+
mongo = CartridgeType.find 'mongodb-2.2'
|
|
96
|
+
cron = CartridgeType.find 'cron-1.4'
|
|
97
|
+
jenkins = CartridgeType.find 'jenkins-client-1.4'
|
|
98
|
+
|
|
99
|
+
assert ruby18 > ruby
|
|
100
|
+
assert ruby < ruby18
|
|
101
|
+
|
|
102
|
+
assert cron > ruby
|
|
103
|
+
assert ruby < cron
|
|
104
|
+
|
|
105
|
+
assert mongo < cron
|
|
106
|
+
assert cron > mongo
|
|
107
|
+
|
|
108
|
+
assert ruby < mongo
|
|
109
|
+
assert mongo > ruby
|
|
110
|
+
|
|
111
|
+
assert php < ruby
|
|
112
|
+
assert ruby > php
|
|
113
|
+
|
|
114
|
+
assert php < jenkins
|
|
115
|
+
assert ruby < jenkins
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
test 'matching cartridges types' do
|
|
119
|
+
found, missing = ApplicationType.matching_cartridges('php-')
|
|
120
|
+
assert_equal ['php-5.3'], found['php-'].map(&:name), found.inspect
|
|
121
|
+
assert missing.empty?
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# Currently /application_templates/<string>.json can return an array
|
|
125
|
+
# if the value is not a properly formatted ID. This is questionable,
|
|
126
|
+
# and this test is only to protect us in the case that we have code
|
|
127
|
+
# depending on that behavior. If this behavior is moved to a new
|
|
128
|
+
# route then we can remove this.
|
|
129
|
+
test 'application template names returned by server' do
|
|
130
|
+
template = ApplicationTemplate.first(:from => :wordpress)
|
|
131
|
+
omit("No templates defined on this server") unless template
|
|
132
|
+
assert_equal 'WordPress', template.display_name
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
test 'match cartridges' do
|
|
136
|
+
assert_equal [], CartridgeType.cached.matches('bra').map(&:name)
|
|
137
|
+
assert_equal ['ruby-1.9','ruby-1.8'], CartridgeType.cached.matches('ruby').map(&:name)
|
|
138
|
+
assert_equal ['ruby-1.9','ruby-1.8'], CartridgeType.cached.matches('ruby*').map(&:name)
|
|
139
|
+
assert_equal ['ruby-1.9','ruby-1.8'], CartridgeType.cached.matches('*uby*').map(&:name)
|
|
140
|
+
assert_equal ['zend-5.6','php-5.3'], CartridgeType.cached.matches('zend-|php-').map(&:name)
|
|
141
|
+
assert_equal ['php-5.3','zend-5.6'], CartridgeType.cached.matches('php-|zend-').map(&:name)
|
|
142
|
+
end
|
|
143
|
+
end
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
require File.expand_path('../../../test_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
class RestApiDomainTest < ActiveSupport::TestCase
|
|
4
|
+
include RestApiAuth
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
with_configured_user
|
|
8
|
+
end
|
|
9
|
+
def teardown
|
|
10
|
+
cleanup_domain
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def test_load_setup_domain
|
|
14
|
+
setup_domain
|
|
15
|
+
setup_domain
|
|
16
|
+
assert @domain
|
|
17
|
+
assert @domain.errors.empty?
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_domains_get
|
|
21
|
+
setup_domain
|
|
22
|
+
domains = Domain.find :all, :as => @user
|
|
23
|
+
assert_equal 1, domains.length
|
|
24
|
+
assert_equal "#{uuid}", domains[0].name
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_domains_first
|
|
28
|
+
setup_domain
|
|
29
|
+
domain = Domain.find :one, :as => @user
|
|
30
|
+
assert_equal "#{uuid}", domain.name
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_domain_exists_error
|
|
34
|
+
setup_domain
|
|
35
|
+
domain = Domain.find :one, :as => @user
|
|
36
|
+
domain2 = Domain.new :name => domain.name, :as => @user
|
|
37
|
+
assert !domain2.save
|
|
38
|
+
assert domain2.errors[:name].is_a?(Array), domain2.errors.inspect
|
|
39
|
+
assert domain2.errors[:name][0].is_a?(String), domain2.errors.inspect
|
|
40
|
+
assert domain2.errors[:name][0].include?('Name'), domain2.errors[:name][0]
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def test_domains_update
|
|
44
|
+
setup_domain
|
|
45
|
+
domains = Domain.find :all, :as => @user
|
|
46
|
+
assert_equal 1, domains.length
|
|
47
|
+
assert_equal "#{uuid}", domains[0].name
|
|
48
|
+
|
|
49
|
+
d = domains[0]
|
|
50
|
+
assert !d.changed?
|
|
51
|
+
assert_equal "#{uuid}", d.id
|
|
52
|
+
|
|
53
|
+
# change name twice to make sure id doesn't change
|
|
54
|
+
d.name = "notsaved"
|
|
55
|
+
assert d.changed?
|
|
56
|
+
assert_equal "#{uuid}", d.to_param
|
|
57
|
+
d.name = "#{uuid.reverse}"
|
|
58
|
+
assert_equal "#{uuid}", d.to_param
|
|
59
|
+
|
|
60
|
+
assert d.save, d.errors.inspect
|
|
61
|
+
assert !d.changed?
|
|
62
|
+
# make sure the param value == the current name
|
|
63
|
+
assert_equal "#{uuid.reverse}", d.to_param
|
|
64
|
+
|
|
65
|
+
domains = Domain.find :all, :as => @user
|
|
66
|
+
assert_equal 1, domains.length
|
|
67
|
+
assert_equal "#{uuid.reverse}", domains[0].name
|
|
68
|
+
|
|
69
|
+
#cleanup
|
|
70
|
+
domains.each {|d| d.destroy_recursive}
|
|
71
|
+
@domain = nil
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def test_domain_delete
|
|
75
|
+
setup_domain
|
|
76
|
+
domain = @domain
|
|
77
|
+
name = domain.name
|
|
78
|
+
|
|
79
|
+
assert_difference('Domain.find(:all, :as => @user).length', -1) do
|
|
80
|
+
assert domain.destroy
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
@domain = nil # don't need to clear the first domain now
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def test_domain_find_throws
|
|
87
|
+
assert_raise RestApi::ResourceNotFound do
|
|
88
|
+
Domain.find 'invalid_name', :as => @user
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
require File.expand_path('../../../test_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
class RestApiInfoTest < ActiveSupport::TestCase
|
|
4
|
+
test "retrieve api info" do
|
|
5
|
+
assert info = RestApi::Info.find(:one)
|
|
6
|
+
assert info.version.to_f >= 1.0
|
|
7
|
+
assert info.supported_api_versions.length.present?
|
|
8
|
+
end
|
|
9
|
+
end
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
require File.expand_path('../../../test_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
class RestApiKeyTest < ActiveSupport::TestCase
|
|
4
|
+
include RestApiAuth
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
with_configured_user
|
|
8
|
+
once :remove_keys do
|
|
9
|
+
user = @user
|
|
10
|
+
lambda { Key.find(:all, :as => user).map(&:destroy) rescue nil }
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
def teardown
|
|
14
|
+
cleanup_domain
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def unique_name
|
|
18
|
+
super "#{uuid}%i"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def test_key_get_all
|
|
22
|
+
assert Key.find :all, :as => @user
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def test_key_first
|
|
26
|
+
assert_equal Key.first(:as => @user), Key.find(:all, :as => @user)[0]
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_key_create
|
|
30
|
+
assert_difference('Key.find(:all, :as => @user).length', 1) do
|
|
31
|
+
key = Key.new :type => 'ssh-rsa', :name => unique_name, :content => unique_name, :as => @user
|
|
32
|
+
assert key.save, key.errors.inspect
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def test_key_create_custom_type
|
|
37
|
+
assert_difference('Key.find(:all, :as => @user).length', 1) do
|
|
38
|
+
key = Key.new :type => 'ecdsa-sha2-nistp521', :name => unique_name, :content => unique_name, :as => @user
|
|
39
|
+
assert key.save
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def test_invalid_key_create
|
|
44
|
+
assert_difference('Key.find(:all, :as => @user).length', 0) do
|
|
45
|
+
key = Key.new :type => 'ssh-rsa', :name => "invalid_name#{uuid}", :content => uuid, :as => @user
|
|
46
|
+
assert !key.save
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def test_key_server_validation
|
|
51
|
+
key = Key.new :as => @user
|
|
52
|
+
assert !key.save(:validate => false) # don't check client validations
|
|
53
|
+
assert !key.errors.empty?
|
|
54
|
+
assert_equal ['Key name is required and cannot be blank.'], key.errors[:name]
|
|
55
|
+
assert_equal ['Key content is required and cannot be blank.'], key.errors[:content]
|
|
56
|
+
assert key.errors[:type].first =~ /Your SSH public key appears to be invalid/
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_key_delete
|
|
60
|
+
key = nil
|
|
61
|
+
assert_difference('Key.find(:all, :as => @user).length', 1) do
|
|
62
|
+
key = Key.new :type => 'ssh-rsa', :name => unique_name, :content => unique_name, :as => @user
|
|
63
|
+
assert key.save, key.errors.inspect
|
|
64
|
+
end
|
|
65
|
+
assert_difference('Key.find(:all, :as => @user).length', -1) do
|
|
66
|
+
key.destroy
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def test_user_get
|
|
71
|
+
user = User.find :one, :as => @user
|
|
72
|
+
assert user
|
|
73
|
+
assert_equal @user.login, user.login
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def test_key_list
|
|
77
|
+
key = Key.new :raw_content => "ssh-rsa #{unique_name}", :name => unique_name, :as => @user
|
|
78
|
+
assert key.save, key.errors.inspect
|
|
79
|
+
|
|
80
|
+
keys = Key.find :all, :as => @user
|
|
81
|
+
assert keys.length > 0
|
|
82
|
+
assert found_key = keys.find {|k| k.name == key.name }
|
|
83
|
+
assert_attr_equal key, found_key
|
|
84
|
+
end
|
|
85
|
+
end
|