handcart 0.0.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.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +247 -0
- data/Rakefile +37 -0
- data/app/assets/javascripts/handcart/application.js +16 -0
- data/app/assets/stylesheets/handcart/application.css +15 -0
- data/app/assets/stylesheets/handcart/layout.css.scss +21 -0
- data/app/controllers/handcart/application_controller.rb +4 -0
- data/app/controllers/handcart/ip_addresses_controller.rb +56 -0
- data/app/controllers/handcart/subdomains_controller.rb +55 -0
- data/app/helpers/handcart/application_helper.rb +14 -0
- data/app/helpers/handcart/url_helper.rb +16 -0
- data/app/models/handcart/concerns/handcarts.rb +30 -0
- data/app/models/handcart/domain_constraint.rb +20 -0
- data/app/models/handcart/ip_address.rb +18 -0
- data/app/models/handcart/setting_constraint.rb +26 -0
- data/app/models/handcart/subdomain.rb +36 -0
- data/app/views/handcart/ip_addresses/_form.html.haml +12 -0
- data/app/views/handcart/ip_addresses/edit.html.haml +3 -0
- data/app/views/handcart/ip_addresses/index.html.haml +36 -0
- data/app/views/handcart/ip_addresses/new.html.haml +3 -0
- data/app/views/handcart/ip_addresses/show.html.haml +20 -0
- data/app/views/handcart/subdomains/_form.html.haml +9 -0
- data/app/views/handcart/subdomains/edit.html.haml +3 -0
- data/app/views/handcart/subdomains/index.html.haml +31 -0
- data/app/views/handcart/subdomains/new.html.haml +3 -0
- data/app/views/handcart/subdomains/show.html.haml +20 -0
- data/app/views/layouts/handcart/_navbar.html.haml +15 -0
- data/app/views/layouts/handcart/application.html.haml +60 -0
- data/config/handcart.json +6 -0
- data/config/locales/en.yml +61 -0
- data/config/routes.rb +5 -0
- data/db/migrate/20131009165427_create_handcart_subdomains.rb +9 -0
- data/db/migrate/20131203000934_create_handcart_ip_addresses.rb +12 -0
- data/lib/handcart.rb +67 -0
- data/lib/handcart/acts_as_handcart.rb +16 -0
- data/lib/handcart/controller_additions.rb +152 -0
- data/lib/handcart/engine.rb +27 -0
- data/lib/handcart/ip_authorization.rb +27 -0
- data/lib/handcart/simple_form.rb +179 -0
- data/lib/handcart/strategies/base_ip_strategy.rb +21 -0
- data/lib/handcart/strategies/containment_strategy.rb +16 -0
- data/lib/handcart/strategies/inclusion_strategy.rb +17 -0
- data/lib/handcart/templates/rspec/controller/controller_spec.rb +17 -0
- data/lib/handcart/templates/rspec/scaffold/routing_spec.rb +40 -0
- data/lib/handcart/version.rb +3 -0
- data/spec/controllers/handcart/ip_addresses_controller_spec.rb +134 -0
- data/spec/controllers/handcart/subdomains_controller_spec.rb +138 -0
- data/spec/dummy/README.rdoc +28 -0
- data/spec/dummy/Rakefile +6 -0
- data/spec/dummy/app/assets/javascripts/application.js +16 -0
- data/spec/dummy/app/assets/stylesheets/application.css +15 -0
- data/spec/dummy/app/assets/stylesheets/layout.css.scss +4 -0
- data/spec/dummy/app/controllers/application_controller.rb +7 -0
- data/spec/dummy/app/controllers/custom_constraints_controller.rb +2 -0
- data/spec/dummy/app/controllers/ip_addresses_controller.rb +7 -0
- data/spec/dummy/app/controllers/master/companies_controller.rb +51 -0
- data/spec/dummy/app/controllers/master/dashboard_controller.rb +4 -0
- data/spec/dummy/app/controllers/master_controller.rb +2 -0
- data/spec/dummy/app/controllers/public_controller.rb +12 -0
- data/spec/dummy/app/controllers/subdomain_controller.rb +8 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/models/company.rb +7 -0
- data/spec/dummy/app/views/ip_addresses/index.html.haml +12 -0
- data/spec/dummy/app/views/ip_addresses/show.html.haml +1 -0
- data/spec/dummy/app/views/layouts/_navbar.html.haml +11 -0
- data/spec/dummy/app/views/layouts/application.html.haml +53 -0
- data/spec/dummy/app/views/layouts/public.html.haml +41 -0
- data/spec/dummy/app/views/master/companies/_form.html.haml +19 -0
- data/spec/dummy/app/views/master/companies/edit.html.haml +7 -0
- data/spec/dummy/app/views/master/companies/index.html.haml +25 -0
- data/spec/dummy/app/views/master/companies/new.html.haml +5 -0
- data/spec/dummy/app/views/master/companies/show.html.haml +12 -0
- data/spec/dummy/app/views/master/dashboard/index.html.haml +2 -0
- data/spec/dummy/app/views/public/forbidden.html.haml +3 -0
- data/spec/dummy/app/views/public/index.html.haml +2 -0
- data/spec/dummy/app/views/subdomain/index.html.haml +2 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +40 -0
- data/spec/dummy/config/boot.rb +5 -0
- data/spec/dummy/config/database.yml +26 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +29 -0
- data/spec/dummy/config/environments/production.rb +80 -0
- data/spec/dummy/config/environments/test.rb +36 -0
- data/spec/dummy/config/handcart.json +6 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/handcart.rb +16 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +12 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +12 -0
- data/spec/dummy/config/routes.rb +23 -0
- data/spec/dummy/db/migrate/20131010194534_create_companies.rb +10 -0
- data/spec/dummy/db/migrate/20131016183624_add_active_to_companies.rb +5 -0
- data/spec/dummy/db/schema.rb +41 -0
- data/spec/dummy/log/development.log +14 -0
- data/spec/dummy/log/test.log +786 -0
- data/spec/dummy/public/404.html +58 -0
- data/spec/dummy/public/422.html +58 -0
- data/spec/dummy/public/500.html +57 -0
- data/spec/dummy/spec/models/company_spec.rb +36 -0
- data/spec/dummy/spec/routing/custom_constraints_routing_spec.rb +37 -0
- data/spec/dummy/tmp/cache/assets/development/sass/27d34b7cbcb5b92ab03220c4d4b91379cc64c2c0/layout.css.scssc +0 -0
- data/spec/dummy/tmp/cache/assets/development/sass/dc98e44780f42e6521ebbf14c4db22f6a78c41ef/layout.css.scssc +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/05974a1f812cf4a61bb242d48722fd19 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/063a74a7c73c9501ee373ef00111f159 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/073d2b13ed9366ce539940749eb3844d +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/0d76367ded60510a66afc3dea891e76a +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/106c3f4e1fc71e9dc70abae55d432886 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/13ae4613233656a42188d4d3ddbb7fc1 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/18c826ba1d6dac1633cae2da25c0402a +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/247df6a90ce931f763db1ade5227d4b1 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/2860df473a6cf4c483cd6f251fea3ae0 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/2a99072e783dcef4637b38221531ea61 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/2ab4b3177ab6c9d837c0905b61eedad5 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/2b84c9cc30f71e24310dd1a4381caae8 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/2bebf0981bc585e24939ca8ffe10081c +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/2c45a1517014fd239c930e48a71a93f0 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/2d5147f4ea70131b4e330cab38aeb1a1 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/3124588878c79981009129f32d5fe408 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/33325c558d8db2071bf8a938517e5af2 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/350c8c72b1dbd7a84f85424b5cd4def1 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/3a3d69c38e3b3d20e94420ebebd05a69 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/3b1656b46a35a6120c3407b930d468ba +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/3c0fc39d9b84afb4937545b620cd2d72 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/3fa878a57cb0b42be266336564609b18 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/40f26b5e75d0f747e691c0b38529fb59 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/42aa8e53e39d8f5247f1b3e89cb00adc +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/42e1f4c72bf58cf112dd11eae8ee768b +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/433be3db83a4d9f93f5d1fa2ae3bde4e +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/4b6f9f46d7a2e230321d7f8df06ea470 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/4c17c77b444339bb3ab293047da0ff0d +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/4ee93c096bb850d38032eb457afebf69 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/4f25edc4354919ba67721f488ba10e12 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/58fb821d4a4a44fdb2a89d4f487a8390 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/5f97a76ac644497413f4c8dc547ddea6 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/6076ab56e9c62fd04155d6f6c43e575e +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/60b75d9635ed84e08a0b9a245d8a3202 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/64ad9f343408809fdfb1df851186853d +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/6e79870e51ea835a6847f8c65e23e14b +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/6e9d2e7aafa45c939731291fa453b8c2 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/78f915513059378e161ceb6f2d14fbd9 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/8102cf6724f489a310fe3a6b764bb2e9 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/81108a1123b15b10c7f7f2e0d1207267 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/81b3dcc0aa61577b08de13ba5633dbc4 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/83e686634b5ac6d4b183677ed2edda8b +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/8581aae276f167a9b7b2158641b0bf87 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/94cb3819408e525700729fbd473432c8 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/99eb5e50b6d0e5d0d6b6c37cbde33864 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/a7c86e9a777f7789dd1c78d26a662a87 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/a9e19eb45005fa24bc8b90b6a374089f +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/ac4492393938e58cede2b6277afb0bc6 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/ad1d96635f4dae7eb22d1984947d7440 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/af718c632887ccb6c1c35c4b65c61293 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/b2f45720a78d375468b99bb25f121c4e +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/b559f2694561fc6c44e3319f507de1e7 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/b6e8c6ba59755a8fe132457f81065f96 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/b796b57f310287a7a619afa9d5b99952 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/b7c36a1c00d7804d9e827d704c0dd811 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/bc28a210f3df576c74059aff8233eae3 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/bc414fbd5123e40c4f5e69f4c294f489 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/c0181c32e0ed10ec8fa3049f9a80f551 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/c17130f66131c854d6f8c2196902b596 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/c4c0e10aa5c21ece42c0bfe998a5d8c0 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/c63bcc000975adbdf423db3ad43eb93f +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/c962f9220062a6407dfc7d9447565273 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/cb8b538b6fce61b500edebe63156bf62 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/cfcef2015b7df990ed90006632877389 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/cff56d2d0a8b8a25d4b0388d242be9c8 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/d32fc7356f764b22ecbcebbcb9b47ee1 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/d776667bae72eb3d582da5803fc931ca +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/dfc307d14a0cf64cf8c3a4e94fdbcfb9 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/e4b6570b82329477bc7043183b64b105 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/eff1316ad12dd5b8f4cbf0ba9e448229 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/f2348b747b81ca6e3a24d5bd0b7023c4 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/f6f921309fcc78b6850abcf2418279fe +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/f7e1dbf50c19c9d439de52caa4296164 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/ff2adfc3ed446b68ac2d0077e8af34e2 +0 -0
- data/spec/factories/companies.rb +7 -0
- data/spec/factories/handcart_ip_addresses.rb +8 -0
- data/spec/factories/handcart_subdomains.rb +5 -0
- data/spec/models/handcart/base_ip_strategy_spec.rb +23 -0
- data/spec/models/handcart/containment_strategy_spec.rb +23 -0
- data/spec/models/handcart/domain_constraint_spec.rb +38 -0
- data/spec/models/handcart/engine_spec.rb +14 -0
- data/spec/models/handcart/handcart_spec.rb +38 -0
- data/spec/models/handcart/inclusion_strategy_spec.rb +29 -0
- data/spec/models/handcart/ip_address_spec.rb +51 -0
- data/spec/models/handcart/ip_authorization_spec.rb +17 -0
- data/spec/models/handcart/subdomain_spec.rb +153 -0
- data/spec/routing/handcart/ip_addresses_routing_spec.rb +38 -0
- data/spec/routing/handcart/subdomains_routing_spec.rb +38 -0
- data/spec/spec_helper.rb +65 -0
- data/spec/support/subdomains.rb +26 -0
- metadata +565 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Handcart
|
|
2
|
+
module Strategies
|
|
3
|
+
# This is the parent of all IP Authorization strategies. It should only be used
|
|
4
|
+
# in cases where no IP authorization is desired.
|
|
5
|
+
class BaseIpStrategy
|
|
6
|
+
attr_accessor :strategy
|
|
7
|
+
|
|
8
|
+
def initialize
|
|
9
|
+
@strategy = :none
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def self.available_strategies
|
|
13
|
+
[:containment, :inclusion, :none]
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def is_in_range?(foreign_ip_address, handcart)
|
|
17
|
+
raise NotImplementedError, 'Invalid IP Authorization Strategy'
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module Handcart
|
|
2
|
+
module Strategies
|
|
3
|
+
class ContainmentStrategy < BaseIpStrategy
|
|
4
|
+
# This strategy simply checks to see if the permitted list of IP Addresses
|
|
5
|
+
# for the current handcart has an entry for the foreign IP Address
|
|
6
|
+
|
|
7
|
+
def initialize
|
|
8
|
+
@strategy = :containment
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def is_in_range?(foreign_ip_address, handcart)
|
|
12
|
+
handcart.ip_addresses.permitted.include?(foreign_ip_address)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Handcart
|
|
2
|
+
module Strategies
|
|
3
|
+
class InclusionStrategy < BaseIpStrategy
|
|
4
|
+
# This strategy checks the permitted list of IP Addresses for the current handcart
|
|
5
|
+
# to insure not only that the list contains the foreign IP address, but that it is
|
|
6
|
+
# also within the same subnet group.
|
|
7
|
+
|
|
8
|
+
def initialize
|
|
9
|
+
@strategy = :inclusion
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def is_in_range?(foreign_ip_address, handcart)
|
|
13
|
+
handcart.ip_addresses.permitted.any? { |handcart_ip_address| IPAddr.new("#{handcart_ip_address.address}/#{handcart_ip_address.subnet_mask}").include?(foreign_ip_address) }
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
<% module_namespacing do -%>
|
|
4
|
+
describe <%= class_name %>Controller do
|
|
5
|
+
routes { Handcart::Engine.routes }
|
|
6
|
+
|
|
7
|
+
<% for action in actions -%>
|
|
8
|
+
describe "GET '<%= action %>'" do
|
|
9
|
+
it "returns http success" do
|
|
10
|
+
get '<%= action %>', use_routes: :handcart
|
|
11
|
+
response.should be_success
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
<% end -%>
|
|
16
|
+
end
|
|
17
|
+
<% end -%>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
<% module_namespacing do -%>
|
|
4
|
+
describe <%= controller_class_name %>Controller do
|
|
5
|
+
describe "routing" do
|
|
6
|
+
routes { Handcart::Engine.routes }
|
|
7
|
+
|
|
8
|
+
<% unless options[:singleton] -%>
|
|
9
|
+
it "routes to #index" do
|
|
10
|
+
expect(get: <%= ns_table_name %>").to route_to("handcart/<%= ns_table_name %>#index")
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
<% end -%>
|
|
14
|
+
it "routes to #new" do
|
|
15
|
+
expect(get: <%= ns_table_name %>/new").to route_to("handcart/<%= ns_table_name %>#new")
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "routes to #show" do
|
|
19
|
+
expect(get: <%= ns_table_name %>/1").to route_to("handcart/<%= ns_table_name %>#show", id: "1")
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "routes to #edit" do
|
|
23
|
+
expect(get: <%= ns_table_name %>/1/edit").to route_to("handcart/<%= ns_table_name %>#edit", id: "1")
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "routes to #create" do
|
|
27
|
+
expect(post: <%= ns_table_name %>").to route_to("handcart/<%= ns_table_name %>#create")
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "routes to #update" do
|
|
31
|
+
expect(put: <%= ns_table_name %>/1").to route_to("handcart/<%= ns_table_name %>#update", id: "1")
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "routes to #destroy" do
|
|
35
|
+
expect(delete: <%= ns_table_name %>/1").to route_to("handcart/<%= ns_table_name %>#destroy", id: "1")
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
<% end -%>
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module Handcart
|
|
4
|
+
describe IpAddressesController do
|
|
5
|
+
routes { Handcart::Engine.routes }
|
|
6
|
+
|
|
7
|
+
let(:valid_attributes) { attributes_for(:handcart_ip_address) }
|
|
8
|
+
let(:valid_session) { {} }
|
|
9
|
+
|
|
10
|
+
describe "GET index" do
|
|
11
|
+
it "assigns all ip_addresses as @ip_addresses" do
|
|
12
|
+
ip_address = IpAddress.create! valid_attributes
|
|
13
|
+
get :index, {}, valid_session
|
|
14
|
+
assigns(:ip_addresses).should eq([ip_address])
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe "GET show" do
|
|
19
|
+
it "assigns the requested ip_address as @ip_address" do
|
|
20
|
+
ip_address = IpAddress.create! valid_attributes
|
|
21
|
+
get :show, {id: ip_address.to_param}, valid_session
|
|
22
|
+
assigns(:ip_address).should eq(ip_address)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe "GET new" do
|
|
27
|
+
it "assigns a new ip_address as @ip_address" do
|
|
28
|
+
get :new, {}, valid_session
|
|
29
|
+
assigns(:ip_address).should be_a_new(IpAddress)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe "GET edit" do
|
|
34
|
+
it "assigns the requested ip_address as @ip_address" do
|
|
35
|
+
ip_address = IpAddress.create! valid_attributes
|
|
36
|
+
get :edit, {id: ip_address.to_param}, valid_session
|
|
37
|
+
assigns(:ip_address).should eq(ip_address)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
describe "POST create" do
|
|
42
|
+
describe "with valid params" do
|
|
43
|
+
it "creates a new IpAddress" do
|
|
44
|
+
expect {
|
|
45
|
+
post :create, {ip_address: valid_attributes}, valid_session
|
|
46
|
+
}.to change(IpAddress, :count).by(1)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "assigns a newly created ip_address as @ip_address" do
|
|
50
|
+
post :create, {ip_address: valid_attributes}, valid_session
|
|
51
|
+
assigns(:ip_address).should be_a(IpAddress)
|
|
52
|
+
assigns(:ip_address).should be_persisted
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "redirects to the created ip_address" do
|
|
56
|
+
post :create, {ip_address: valid_attributes}, valid_session
|
|
57
|
+
response.should redirect_to(IpAddress.last)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
describe "with invalid params" do
|
|
62
|
+
it "assigns a newly created but unsaved ip_address as @ip_address" do
|
|
63
|
+
# Trigger the behavior that occurs when invalid params are submitted
|
|
64
|
+
IpAddress.any_instance.stub(:save).and_return(false)
|
|
65
|
+
post :create, {ip_address: { "address" => "invalid value" }}, valid_session
|
|
66
|
+
assigns(:ip_address).should be_a_new(IpAddress)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "re-renders the 'new' template" do
|
|
70
|
+
# Trigger the behavior that occurs when invalid params are submitted
|
|
71
|
+
IpAddress.any_instance.stub(:save).and_return(false)
|
|
72
|
+
post :create, {ip_address: { "address" => "invalid value" }}, valid_session
|
|
73
|
+
response.should render_template("new")
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
describe "PUT update" do
|
|
79
|
+
describe "with valid params" do
|
|
80
|
+
it "updates the requested ip_address" do
|
|
81
|
+
ip_address = IpAddress.create! valid_attributes
|
|
82
|
+
IpAddress.any_instance.should_receive(:update).with({ "address" => "MyString" })
|
|
83
|
+
put :update, {id: ip_address.to_param, ip_address: { "address" => "MyString" }}, valid_session
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it "assigns the requested ip_address as @ip_address" do
|
|
87
|
+
ip_address = IpAddress.create! valid_attributes
|
|
88
|
+
put :update, {id: ip_address.to_param, ip_address: valid_attributes}, valid_session
|
|
89
|
+
assigns(:ip_address).should eq(ip_address)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it "redirects to the ip_address" do
|
|
93
|
+
ip_address = IpAddress.create! valid_attributes
|
|
94
|
+
put :update, {id: ip_address.to_param, ip_address: valid_attributes}, valid_session
|
|
95
|
+
response.should redirect_to(ip_address)
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
describe "with invalid params" do
|
|
100
|
+
it "assigns the ip_address as @ip_address" do
|
|
101
|
+
ip_address = IpAddress.create! valid_attributes
|
|
102
|
+
# Trigger the behavior that occurs when invalid params are submitted
|
|
103
|
+
IpAddress.any_instance.stub(:save).and_return(false)
|
|
104
|
+
put :update, {id: ip_address.to_param, ip_address: { "address" => "invalid value" }}, valid_session
|
|
105
|
+
assigns(:ip_address).should eq(ip_address)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
it "re-renders the 'edit' template" do
|
|
109
|
+
ip_address = IpAddress.create! valid_attributes
|
|
110
|
+
# Trigger the behavior that occurs when invalid params are submitted
|
|
111
|
+
IpAddress.any_instance.stub(:save).and_return(false)
|
|
112
|
+
put :update, {id: ip_address.to_param, ip_address: { "address" => "invalid value" }}, valid_session
|
|
113
|
+
response.should render_template("edit")
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
describe "DELETE destroy" do
|
|
119
|
+
it "destroys the requested ip_address" do
|
|
120
|
+
ip_address = IpAddress.create! valid_attributes
|
|
121
|
+
expect {
|
|
122
|
+
delete :destroy, {id: ip_address.to_param}, valid_session
|
|
123
|
+
}.to change(IpAddress, :count).by(-1)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
it "redirects to the ip_addresses list" do
|
|
127
|
+
ip_address = IpAddress.create! valid_attributes
|
|
128
|
+
delete :destroy, {id: ip_address.to_param}, valid_session
|
|
129
|
+
response.should redirect_to(ip_addresses_url)
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
end
|
|
134
|
+
end
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module Handcart
|
|
4
|
+
describe SubdomainsController do
|
|
5
|
+
routes { Handcart::Engine.routes }
|
|
6
|
+
|
|
7
|
+
let(:valid_attributes) { attributes_for(:handcart_subdomain) }
|
|
8
|
+
let(:valid_session) { {} }
|
|
9
|
+
|
|
10
|
+
describe "GET index" do
|
|
11
|
+
it "assigns all subdomains as @subdomains" do
|
|
12
|
+
subdomain = Subdomain.create! valid_attributes
|
|
13
|
+
get :index, {}, valid_session
|
|
14
|
+
assigns(:subdomains).should eq([subdomain])
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe "GET show" do
|
|
19
|
+
it "assigns the requested subdomain as @subdomain" do
|
|
20
|
+
subdomain = Subdomain.create! valid_attributes
|
|
21
|
+
get :show, {id: subdomain.to_param}, valid_session
|
|
22
|
+
assigns(:subdomain).should eq(subdomain)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe "GET new" do
|
|
27
|
+
it "assigns a new subdomain as @subdomain" do
|
|
28
|
+
get :new, {}, valid_session
|
|
29
|
+
assigns(:subdomain).should be_a_new(Subdomain)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe "GET edit" do
|
|
34
|
+
it "assigns the requested subdomain as @subdomain" do
|
|
35
|
+
subdomain = Subdomain.create! valid_attributes
|
|
36
|
+
get :edit, {id: subdomain.to_param}, valid_session
|
|
37
|
+
assigns(:subdomain).should eq(subdomain)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
describe "POST create" do
|
|
42
|
+
describe "with valid params" do
|
|
43
|
+
it "creates a new Subdomain" do
|
|
44
|
+
expect {
|
|
45
|
+
post :create, {subdomain: valid_attributes}, valid_session
|
|
46
|
+
}.to change(Subdomain, :count).by(1)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "assigns a newly created subdomain as @subdomain" do
|
|
50
|
+
post :create, {subdomain: valid_attributes}, valid_session
|
|
51
|
+
assigns(:subdomain).should be_a(Subdomain)
|
|
52
|
+
assigns(:subdomain).should be_persisted
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "redirects to the subdomains index" do
|
|
56
|
+
post :create, {subdomain: valid_attributes}, valid_session
|
|
57
|
+
response.should redirect_to(subdomains_url)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
describe "with invalid params" do
|
|
62
|
+
it "assigns a newly created but unsaved subdomain as @subdomain" do
|
|
63
|
+
# Trigger the behavior that occurs when invalid params are submitted
|
|
64
|
+
Subdomain.any_instance.stub(:save).and_return(false)
|
|
65
|
+
post :create, {subdomain: { "name" => "invalid value" }}, valid_session
|
|
66
|
+
assigns(:subdomain).should be_a_new(Subdomain)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "re-renders the 'new' template" do
|
|
70
|
+
# Trigger the behavior that occurs when invalid params are submitted
|
|
71
|
+
Subdomain.any_instance.stub(:save).and_return(false)
|
|
72
|
+
post :create, {subdomain: { "name" => "invalid value" }}, valid_session
|
|
73
|
+
response.should render_template("new")
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
describe "PUT update" do
|
|
79
|
+
describe "with valid params" do
|
|
80
|
+
it "updates the requested subdomain" do
|
|
81
|
+
subdomain = Subdomain.create! valid_attributes
|
|
82
|
+
# Assuming there are no other subdomains in the database, this
|
|
83
|
+
# specifies that the Subdomain created on the previous line
|
|
84
|
+
# receives the :update_attributes message with whatever params are
|
|
85
|
+
# submitted in the request.
|
|
86
|
+
Subdomain.any_instance.should_receive(:update).with({ "name" => "MyString" })
|
|
87
|
+
put :update, {id: subdomain.to_param, subdomain: { "name" => "MyString" }}, valid_session
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it "assigns the requested subdomain as @subdomain" do
|
|
91
|
+
subdomain = Subdomain.create! valid_attributes
|
|
92
|
+
put :update, {id: subdomain.to_param, subdomain: valid_attributes}, valid_session
|
|
93
|
+
assigns(:subdomain).should eq(subdomain)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it "redirects to the subdomains index" do
|
|
97
|
+
subdomain = Subdomain.create! valid_attributes
|
|
98
|
+
put :update, {id: subdomain.to_param, subdomain: valid_attributes}, valid_session
|
|
99
|
+
response.should redirect_to(subdomains_url)
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
describe "with invalid params" do
|
|
104
|
+
it "assigns the subdomain as @subdomain" do
|
|
105
|
+
subdomain = Subdomain.create! valid_attributes
|
|
106
|
+
# Trigger the behavior that occurs when invalid params are submitted
|
|
107
|
+
Subdomain.any_instance.stub(:save).and_return(false)
|
|
108
|
+
put :update, {id: subdomain.to_param, subdomain: { "name" => "invalid value" }}, valid_session
|
|
109
|
+
assigns(:subdomain).should eq(subdomain)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it "re-renders the 'edit' template" do
|
|
113
|
+
subdomain = Subdomain.create! valid_attributes
|
|
114
|
+
# Trigger the behavior that occurs when invalid params are submitted
|
|
115
|
+
Subdomain.any_instance.stub(:save).and_return(false)
|
|
116
|
+
put :update, {id: subdomain.to_param, subdomain: { "name" => "invalid value" }}, valid_session
|
|
117
|
+
response.should render_template("edit")
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
describe "DELETE destroy" do
|
|
123
|
+
it "destroys the requested subdomain" do
|
|
124
|
+
subdomain = Subdomain.create! valid_attributes
|
|
125
|
+
expect {
|
|
126
|
+
delete :destroy, {id: subdomain.to_param}, valid_session
|
|
127
|
+
}.to change(Subdomain, :count).by(-1)
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
it "redirects to the subdomains list" do
|
|
131
|
+
subdomain = Subdomain.create! valid_attributes
|
|
132
|
+
delete :destroy, {id: subdomain.to_param}, valid_session
|
|
133
|
+
response.should redirect_to(subdomains_url)
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
end
|
|
138
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
== README
|
|
2
|
+
|
|
3
|
+
This README would normally document whatever steps are necessary to get the
|
|
4
|
+
application up and running.
|
|
5
|
+
|
|
6
|
+
Things you may want to cover:
|
|
7
|
+
|
|
8
|
+
* Ruby version
|
|
9
|
+
|
|
10
|
+
* System dependencies
|
|
11
|
+
|
|
12
|
+
* Configuration
|
|
13
|
+
|
|
14
|
+
* Database creation
|
|
15
|
+
|
|
16
|
+
* Database initialization
|
|
17
|
+
|
|
18
|
+
* How to run the test suite
|
|
19
|
+
|
|
20
|
+
* Services (job queues, cache servers, search engines, etc.)
|
|
21
|
+
|
|
22
|
+
* Deployment instructions
|
|
23
|
+
|
|
24
|
+
* ...
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
Please feel free to use a different markup language if you do not plan to run
|
|
28
|
+
<tt>rake doc:app</tt>.
|
data/spec/dummy/Rakefile
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
|
2
|
+
// listed below.
|
|
3
|
+
//
|
|
4
|
+
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
|
5
|
+
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
|
|
6
|
+
//
|
|
7
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
|
8
|
+
// compiled file.
|
|
9
|
+
//
|
|
10
|
+
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
|
|
11
|
+
// about supported directives.
|
|
12
|
+
//
|
|
13
|
+
//= require jquery
|
|
14
|
+
//= require jquery_ujs
|
|
15
|
+
//= require twitter/bootstrap
|
|
16
|
+
//= require_tree .
|