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.
Files changed (291) hide show
  1. data/COPYRIGHT +1 -0
  2. data/Gemfile +21 -0
  3. data/LICENSE +203 -0
  4. data/README.md +123 -0
  5. data/Rakefile +44 -0
  6. data/app/assets/images/cartridge-edge.gif +0 -0
  7. data/app/assets/images/console/arrow-down.png +0 -0
  8. data/app/assets/images/console/console-sprite.png +0 -0
  9. data/app/assets/images/favicon-32.png +0 -0
  10. data/app/assets/images/loader-dark.gif +0 -0
  11. data/app/assets/images/loader.gif +0 -0
  12. data/app/assets/images/sprite-vert.png +0 -0
  13. data/app/assets/javascripts/console.js +10 -0
  14. data/app/assets/javascripts/console/form.js.coffee +51 -0
  15. data/app/assets/stylesheets/_alerts.scss +84 -0
  16. data/app/assets/stylesheets/_breadcrumbs.scss +31 -0
  17. data/app/assets/stylesheets/_buttons.scss +229 -0
  18. data/app/assets/stylesheets/_code.scss +86 -0
  19. data/app/assets/stylesheets/_custom.scss +207 -0
  20. data/app/assets/stylesheets/_footer.scss +54 -0
  21. data/app/assets/stylesheets/_forms.scss +710 -0
  22. data/app/assets/stylesheets/_grid.scss +28 -0
  23. data/app/assets/stylesheets/_input-prepend-append.scss +138 -0
  24. data/app/assets/stylesheets/_labels.scss +40 -0
  25. data/app/assets/stylesheets/_mixins.scss +76 -0
  26. data/app/assets/stylesheets/_override-variables.scss +1 -0
  27. data/app/assets/stylesheets/_responsive.scss +438 -0
  28. data/app/assets/stylesheets/_ribbon.scss +57 -0
  29. data/app/assets/stylesheets/_type.scss +306 -0
  30. data/app/assets/stylesheets/_utilities.scss +10 -0
  31. data/app/assets/stylesheets/_variables.scss +131 -0
  32. data/app/assets/stylesheets/common.css.scss +82 -0
  33. data/app/assets/stylesheets/console/_application.scss +194 -0
  34. data/app/assets/stylesheets/console/_base.scss +26 -0
  35. data/app/assets/stylesheets/console/_breadcrumbs.scss +32 -0
  36. data/app/assets/stylesheets/console/_buttons.scss +214 -0
  37. data/app/assets/stylesheets/console/_core.scss +1002 -0
  38. data/app/assets/stylesheets/console/_dropdowns.scss +63 -0
  39. data/app/assets/stylesheets/console/_help.scss +54 -0
  40. data/app/assets/stylesheets/console/_mixins.scss +11 -0
  41. data/app/assets/stylesheets/console/_navbar.scss +415 -0
  42. data/app/assets/stylesheets/console/_ribbon.scss +82 -0
  43. data/app/assets/stylesheets/console/_tile.scss +122 -0
  44. data/app/assets/stylesheets/origin.css.scss +37 -0
  45. data/app/controllers/account/dashboard.rb +13 -0
  46. data/app/controllers/account_controller.rb +3 -0
  47. data/app/controllers/application_types_controller.rb +80 -0
  48. data/app/controllers/applications_controller.rb +183 -0
  49. data/app/controllers/building_controller.rb +81 -0
  50. data/app/controllers/capability_aware.rb +18 -0
  51. data/app/controllers/cartridge_types_controller.rb +53 -0
  52. data/app/controllers/cartridges_controller.rb +43 -0
  53. data/app/controllers/console/auth/basic.rb +65 -0
  54. data/app/controllers/console/auth/none.rb +5 -0
  55. data/app/controllers/console/auth/remote_user.rb +69 -0
  56. data/app/controllers/console/rescue.rb +48 -0
  57. data/app/controllers/console_controller.rb +19 -0
  58. data/app/controllers/console_index_controller.rb +14 -0
  59. data/app/controllers/domain_aware.rb +26 -0
  60. data/app/controllers/domain_session_sweeper.rb +29 -0
  61. data/app/controllers/domains_controller.rb +30 -0
  62. data/app/controllers/keys_controller.rb +43 -0
  63. data/app/controllers/scaling_controller.rb +46 -0
  64. data/app/controllers/sshkey_aware.rb +23 -0
  65. data/app/controllers/sshkey_session_sweeper.rb +29 -0
  66. data/app/controllers/user_session_sweeper.rb +29 -0
  67. data/app/helpers/console/community_helper.rb +78 -0
  68. data/app/helpers/console/console_helper.rb +26 -0
  69. data/app/helpers/console/help_helper.rb +270 -0
  70. data/app/helpers/console/html5_boilerplate_helper.rb +63 -0
  71. data/app/helpers/console/layout_helper.rb +277 -0
  72. data/app/helpers/console/model_helper.rb +106 -0
  73. data/app/helpers/console/secured_helper.rb +5 -0
  74. data/app/models/alias.rb +10 -0
  75. data/app/models/application.rb +148 -0
  76. data/app/models/application_associations.rb +36 -0
  77. data/app/models/application_template.rb +90 -0
  78. data/app/models/application_type.rb +258 -0
  79. data/app/models/async_aware.rb +60 -0
  80. data/app/models/capabilities.rb +62 -0
  81. data/app/models/cartridge.rb +122 -0
  82. data/app/models/cartridge_type.rb +140 -0
  83. data/app/models/domain.rb +44 -0
  84. data/app/models/domain_associations.rb +33 -0
  85. data/app/models/embedded.rb +11 -0
  86. data/app/models/gear.rb +13 -0
  87. data/app/models/gear_group.rb +104 -0
  88. data/app/models/key.rb +87 -0
  89. data/app/models/quickstart.rb +135 -0
  90. data/app/models/rest_api.rb +130 -0
  91. data/app/models/rest_api/base.rb +781 -0
  92. data/app/models/rest_api/cacheable.rb +91 -0
  93. data/app/models/rest_api/environment.rb +13 -0
  94. data/app/models/rest_api/info.rb +34 -0
  95. data/app/models/rest_api/log_subscriber.rb +29 -0
  96. data/app/models/rest_api/railties/controller_runtime.rb +37 -0
  97. data/app/models/user.rb +27 -0
  98. data/app/models/user_associations.rb +6 -0
  99. data/app/views/account/_domain.html.haml +14 -0
  100. data/app/views/account/_keys.html.haml +20 -0
  101. data/app/views/account/_user.html.haml +5 -0
  102. data/app/views/account/show.html.haml +15 -0
  103. data/app/views/application_templates/_application_template.html.haml +5 -0
  104. data/app/views/application_types/_application_type.html.haml +19 -0
  105. data/app/views/application_types/_custom.html.haml +19 -0
  106. data/app/views/application_types/_persisted.html.haml +26 -0
  107. data/app/views/application_types/_tile.html.haml +9 -0
  108. data/app/views/application_types/index.html.haml +87 -0
  109. data/app/views/application_types/search.html.haml +67 -0
  110. data/app/views/application_types/show.html.haml +219 -0
  111. data/app/views/applications/_application.html.haml +34 -0
  112. data/app/views/applications/_applications_filter.html.haml +8 -0
  113. data/app/views/applications/_footer.html.haml +0 -0
  114. data/app/views/applications/_name.html.haml +28 -0
  115. data/app/views/applications/delete.html.haml +19 -0
  116. data/app/views/applications/get_started.html.haml +145 -0
  117. data/app/views/applications/index.html.haml +55 -0
  118. data/app/views/applications/show.html.haml +193 -0
  119. data/app/views/building/delete.html.haml +22 -0
  120. data/app/views/building/new.html.haml +57 -0
  121. data/app/views/building/show.html.haml +12 -0
  122. data/app/views/cartridge_types/_cartridge_type.html.haml +61 -0
  123. data/app/views/cartridge_types/index.html.haml +37 -0
  124. data/app/views/cartridge_types/show.html.haml +21 -0
  125. data/app/views/cartridges/next_steps.html.haml +58 -0
  126. data/app/views/cartridges/show.html.haml +1 -0
  127. data/app/views/console/error.html.haml +58 -0
  128. data/app/views/console/help.html.haml +90 -0
  129. data/app/views/console/not_found.html.haml +69 -0
  130. data/app/views/console/unauthorized.html.haml +7 -0
  131. data/app/views/domains/_domain.html.haml +14 -0
  132. data/app/views/domains/_form.html.haml +13 -0
  133. data/app/views/domains/edit.html.haml +5 -0
  134. data/app/views/domains/new.html.haml +6 -0
  135. data/app/views/keys/_form.html.haml +14 -0
  136. data/app/views/keys/_simple_form.html.haml +14 -0
  137. data/app/views/keys/new.html.haml +2 -0
  138. data/app/views/layouts/_footer.html.haml +38 -0
  139. data/app/views/layouts/_head.html.haml +35 -0
  140. data/app/views/layouts/console.html.haml +60 -0
  141. data/app/views/layouts/console/_header.html.haml +44 -0
  142. data/app/views/layouts/console/_identity.html.haml +7 -0
  143. data/app/views/layouts/console/_javascripts.html.haml +5 -0
  144. data/app/views/layouts/console/_stylesheets.html.haml +6 -0
  145. data/app/views/scaling/delete.html.haml +17 -0
  146. data/app/views/scaling/new.html.haml +24 -0
  147. data/app/views/scaling/show.html.haml +81 -0
  148. data/app/views/shared/_tracking.html.haml +0 -0
  149. data/conf/console.conf.example +108 -0
  150. data/conf/openshift_console.conf +10 -0
  151. data/config/cartridge_types.yml +54 -0
  152. data/config/initializers/barista_config.rb +86 -0
  153. data/config/initializers/cartridge_types.rb +5 -0
  154. data/config/initializers/console_security.rb +1 -0
  155. data/config/initializers/date_helper.rb +5 -0
  156. data/config/initializers/extended_logger.rb +51 -0
  157. data/config/initializers/formtastic.rb +100 -0
  158. data/config/initializers/inflections.rb +38 -0
  159. data/config/initializers/rdiscount.rb +8 -0
  160. data/config/initializers/rest_api.rb +22 -0
  161. data/config/initializers/sass.rb +30 -0
  162. data/config/initializers/session_trace.rb +32 -0
  163. data/config/initializers/x_frame_options.rb +53 -0
  164. data/config/locales/en.yml +12 -0
  165. data/lib/active_resource/associations.rb +107 -0
  166. data/lib/active_resource/associations/builder/association.rb +35 -0
  167. data/lib/active_resource/associations/builder/belongs_to.rb +5 -0
  168. data/lib/active_resource/associations/builder/has_many.rb +5 -0
  169. data/lib/active_resource/associations/builder/has_one.rb +5 -0
  170. data/lib/active_resource/persistent_connection.rb +341 -0
  171. data/lib/active_resource/persistent_http_mock.rb +68 -0
  172. data/lib/active_resource/reflection.rb +78 -0
  173. data/lib/console.rb +8 -0
  174. data/lib/console/config_file.rb +13 -0
  175. data/lib/console/configuration.rb +163 -0
  176. data/lib/console/engine.rb +28 -0
  177. data/lib/console/formtastic/bootstrap_form_builder.rb +369 -0
  178. data/lib/console/rails/app_redirector.rb +40 -0
  179. data/lib/console/rails/filter_hash.rb +15 -0
  180. data/lib/console/rails/routes.rb +51 -0
  181. data/lib/console/version.rb +5 -0
  182. data/lib/tasks/assets.rake +79 -0
  183. data/lib/tasks/stats.rake +18 -0
  184. data/lib/tasks/test_suites.rake +73 -0
  185. data/test/coverage_helper.rb +27 -0
  186. data/test/fixtures/cartridges.json +1 -0
  187. data/test/fixtures/quickstarts.csv +3 -0
  188. data/test/functional/account_controller_test.rb +14 -0
  189. data/test/functional/application_types_controller_test.rb +251 -0
  190. data/test/functional/applications_controller_sanity_test.rb +26 -0
  191. data/test/functional/applications_controller_test.rb +365 -0
  192. data/test/functional/building_controller_test.rb +203 -0
  193. data/test/functional/cartridge_types_controller_isolation_test.rb +68 -0
  194. data/test/functional/cartridge_types_controller_test.rb +48 -0
  195. data/test/functional/cartridges_controller_test.rb +83 -0
  196. data/test/functional/console_auth_basic_controller_test.rb +82 -0
  197. data/test/functional/console_auth_remote_user_controller_test.rb +90 -0
  198. data/test/functional/console_index_controller_test.rb +22 -0
  199. data/test/functional/domains_controller_test.rb +194 -0
  200. data/test/functional/keys_controller_test.rb +163 -0
  201. data/test/functional/quickstarts.json +18 -0
  202. data/test/functional/scaling_controller_test.rb +153 -0
  203. data/test/integration/assets_test.rb +34 -0
  204. data/test/integration/help_link_test.rb +43 -0
  205. data/test/integration/quickstarts_test.rb +24 -0
  206. data/test/integration/rescue_from_test.rb +25 -0
  207. data/test/integration/rest_api/application_test.rb +115 -0
  208. data/test/integration/rest_api/cartridge_test.rb +44 -0
  209. data/test/integration/rest_api/cartridge_type_test.rb +143 -0
  210. data/test/integration/rest_api/domain_test.rb +91 -0
  211. data/test/integration/rest_api/info_test.rb +9 -0
  212. data/test/integration/rest_api/key_test.rb +85 -0
  213. data/test/integration/static_pages_test.rb +44 -0
  214. data/test/rails_app/Rakefile +7 -0
  215. data/test/rails_app/app/controllers/application_controller.rb +5 -0
  216. data/test/rails_app/config.ru +4 -0
  217. data/test/rails_app/config/application.rb +48 -0
  218. data/test/rails_app/config/boot.rb +10 -0
  219. data/test/rails_app/config/database.yml +25 -0
  220. data/test/rails_app/config/environment.rb +5 -0
  221. data/test/rails_app/config/environments/development.rb +38 -0
  222. data/test/rails_app/config/environments/production.rb +70 -0
  223. data/test/rails_app/config/environments/test.rb +43 -0
  224. data/test/rails_app/config/initializers/auth.rb +0 -0
  225. data/test/rails_app/config/initializers/backtrace_silencers.rb +7 -0
  226. data/test/rails_app/config/initializers/inflections.rb +10 -0
  227. data/test/rails_app/config/initializers/mime_types.rb +5 -0
  228. data/test/rails_app/config/initializers/secret_token.rb +7 -0
  229. data/test/rails_app/config/initializers/session_store.rb +8 -0
  230. data/test/rails_app/config/locales/en.yml +5 -0
  231. data/test/rails_app/config/routes.rb +4 -0
  232. data/test/rails_app/script/rails +6 -0
  233. data/test/support/auth.rb +111 -0
  234. data/test/support/base.rb +142 -0
  235. data/test/support/errors.rb +28 -0
  236. data/test/support/rest_api.rb +189 -0
  237. data/test/test_helper.rb +14 -0
  238. data/test/unit/active_model_compliance_test.rb +23 -0
  239. data/test/unit/async_aware_test.rb +55 -0
  240. data/test/unit/configuration_test.rb +158 -0
  241. data/test/unit/filter_hash_test.rb +64 -0
  242. data/test/unit/helpers/model_helper_test.rb +61 -0
  243. data/test/unit/overrides_test.rb +9 -0
  244. data/test/unit/rest_api_test.rb +1590 -0
  245. data/vendor/assets/javascripts/MIT-LICENSE.txt +20 -0
  246. data/vendor/assets/javascripts/bootstrap-collapse.js +157 -0
  247. data/vendor/assets/javascripts/bootstrap-dropdown.js +100 -0
  248. data/vendor/assets/javascripts/bootstrap-tab.js +135 -0
  249. data/vendor/assets/javascripts/bootstrap-transition.js +61 -0
  250. data/vendor/assets/javascripts/jquery.spin.js +47 -0
  251. data/vendor/assets/javascripts/jquery.ui.widget.js +16 -0
  252. data/vendor/assets/javascripts/jquery_cookie.js +41 -0
  253. data/vendor/assets/javascripts/jquery_validate_min.js +51 -0
  254. data/vendor/assets/javascripts/modernizr.min.js +2 -0
  255. data/vendor/assets/javascripts/plugins.js +16 -0
  256. data/vendor/assets/stylesheets/bootstrap/_accordion.scss +28 -0
  257. data/vendor/assets/stylesheets/bootstrap/_alerts.scss +70 -0
  258. data/vendor/assets/stylesheets/bootstrap/_breadcrumbs.scss +22 -0
  259. data/vendor/assets/stylesheets/bootstrap/_button-groups.scss +147 -0
  260. data/vendor/assets/stylesheets/bootstrap/_buttons.scss +183 -0
  261. data/vendor/assets/stylesheets/bootstrap/_carousel.scss +121 -0
  262. data/vendor/assets/stylesheets/bootstrap/_close.scss +18 -0
  263. data/vendor/assets/stylesheets/bootstrap/_code.scss +57 -0
  264. data/vendor/assets/stylesheets/bootstrap/_component-animations.scss +18 -0
  265. data/vendor/assets/stylesheets/bootstrap/_dropdowns.scss +130 -0
  266. data/vendor/assets/stylesheets/bootstrap/_forms.scss +522 -0
  267. data/vendor/assets/stylesheets/bootstrap/_grid.scss +8 -0
  268. data/vendor/assets/stylesheets/bootstrap/_hero-unit.scss +20 -0
  269. data/vendor/assets/stylesheets/bootstrap/_labels.scss +32 -0
  270. data/vendor/assets/stylesheets/bootstrap/_layouts.scss +17 -0
  271. data/vendor/assets/stylesheets/bootstrap/_mixins.scss +602 -0
  272. data/vendor/assets/stylesheets/bootstrap/_modals.scss +84 -0
  273. data/vendor/assets/stylesheets/bootstrap/_navbar.scss +299 -0
  274. data/vendor/assets/stylesheets/bootstrap/_navs.scss +353 -0
  275. data/vendor/assets/stylesheets/bootstrap/_pager.scss +30 -0
  276. data/vendor/assets/stylesheets/bootstrap/_pagination.scss +55 -0
  277. data/vendor/assets/stylesheets/bootstrap/_popovers.scss +49 -0
  278. data/vendor/assets/stylesheets/bootstrap/_progress-bars.scss +95 -0
  279. data/vendor/assets/stylesheets/bootstrap/_reset.scss +126 -0
  280. data/vendor/assets/stylesheets/bootstrap/_scaffolding.scss +33 -0
  281. data/vendor/assets/stylesheets/bootstrap/_sprites.scss +158 -0
  282. data/vendor/assets/stylesheets/bootstrap/_tables.scss +150 -0
  283. data/vendor/assets/stylesheets/bootstrap/_thumbnails.scss +35 -0
  284. data/vendor/assets/stylesheets/bootstrap/_tooltip.scss +35 -0
  285. data/vendor/assets/stylesheets/bootstrap/_type.scss +218 -0
  286. data/vendor/assets/stylesheets/bootstrap/_utilities.scss +23 -0
  287. data/vendor/assets/stylesheets/bootstrap/_variables.scss +107 -0
  288. data/vendor/assets/stylesheets/bootstrap/_wells.scss +17 -0
  289. data/vendor/assets/stylesheets/bootstrap/bootstrap.scss +66 -0
  290. data/vendor/assets/stylesheets/bootstrap/responsive.scss +334 -0
  291. 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