nephos-server 0.6.4 → 0.6.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a7a62dad08b09b531aab62f3e9800f65ec7e849d
4
- data.tar.gz: ffd36f823891ca5141950551e6e3de7984f8b8d4
3
+ metadata.gz: d8bb785df5db4f9f8b7a8e4821582700962d0fe4
4
+ data.tar.gz: f681de7959a63e202b03f80caf0d730142eaef0d
5
5
  SHA512:
6
- metadata.gz: 58a3d571167c75ccd6ebc97bc56fd4ec44c766b1dccfe3748746b467e44db39d3fe3ea3cd8588fdb3b53f92f692f0fd5b28fafe87537e4e4b7910637a84e90df
7
- data.tar.gz: bbf86241ed2a7671d81b84cdea1c32960ef0e698ff29a0b37c246a2f7d0940b0d12ad13f14f5d1a7d606a53c55da93b44bf85ed6f9bb5a52ea0b7235c2882540
6
+ metadata.gz: ec1e2f6a1d7afe305c39b7664787a31806a60d4f0bc9ed08a1add184f77408b87d09eeb10dbb913662f19ea992a2e3af993584648b0e138f95226c34514f6ac4
7
+ data.tar.gz: 41f1943b9e313ee1a45e998565e6628e118ba95fcf434cc591c8f993dd633a15b070b076b0fb2cfed1bcde47d059d56b89a284d8c1923785dc6e04045f4a4432
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/CHANGELOG CHANGED
@@ -1,3 +1,9 @@
1
+ v0.6.5
2
+ * Improve routing helpers (optional url parameter)
3
+ * Add new functional tests (router)
4
+ * Add extension for url (.html, ...)
5
+ * Add improved router helper (simple destination, alias)
6
+
1
7
  v0.6.4
2
8
  * Fix application generator (replace in the gemfile nephos-server by nephos)
3
9
  * Improve guides (more doc, corrections, update)
@@ -1,14 +1,18 @@
1
1
  # Render API
2
2
 
3
- ## Understand the API
3
+ ## What is the Render API ?
4
4
  The render API is a simple system to allows you to render HTTP responses to a client.
5
+ It is a simple way to render data to the user and choose it's type.
6
+
5
7
  The API allows you to customize differents parts of the response:
6
8
 
7
9
  - HTTP status
8
10
  - HTTP Content-Type
9
11
  - Content
10
12
 
11
- The API use the returns of the Controllers methods to build the HTTP responses.
13
+ Based on the returns of your Controller's methods, it will render to the user
14
+ a HTTP response.
15
+ You can actually returns HTML, JSON, or PLAIN text, and custom formats if needed.
12
16
 
13
17
 
14
18
  ## Use the API
@@ -20,14 +24,13 @@ It must contain a class, inheriting from ``Nephos::Controller``.
20
24
  Each public method **can** be an entry point, defined in the ``routes.rb`` file.
21
25
  [Routing documentation](GUIDE_ROUTING.md).
22
26
 
23
- In the controller, you can use few helpers,
24
- like the method ``params()`` and ``cookies``
27
+ Theses methods, described as "entry points" by your routing rules, must **return** a ``Hash``.
28
+ It's format will be described in the following parts.
25
29
 
26
- The methods used as entry point must return a ``Hash`` described in the following lines.
27
- It may optionnaly be an ``Integer``, to return only a status, or ``:empty``.
30
+ *Notes: The return may optionnaly be an ``Integer``, to return only a status, or ``:empty``.*
28
31
 
29
- ## Options
30
- The returns of a Controller method can include the following keys:
32
+ ## Returned hash
33
+ The return of a Controller method can include the following keys:
31
34
 
32
35
  - :plain
33
36
  - :html
@@ -52,7 +55,7 @@ class MyController < Nephos::Controller
52
55
  end
53
56
  ```
54
57
 
55
- The following sections will describe how each key works and modify the HTTP response.
58
+ The following sections will describe how each key works, and modify the HTTP response.
56
59
 
57
60
  ### Content
58
61
  The ``:content`` key must be associated with a ``String`` (or ``Hash`` is json).
@@ -5,28 +5,48 @@
5
5
  ### Cookies
6
6
  You can set cookies and get them via ``cookies`` in the body of any controller.
7
7
 
8
+ Example:
9
+ ```ruby
10
+ cookies["a"] = "b" # add a cookie named "a"
11
+ cookies.delete("b") # remove a cookie named "b"
12
+ ```
13
+
8
14
  ### Params
9
15
  You can access to the parameters (defined by http or via the URI, based on your
10
16
  routing rules).
11
17
  They are accessible via ``params`` in the body of every controller.
12
18
 
19
+ Example:
20
+ ```ruby
21
+ params[:id] # access to the :id value, for exemple in the url /show/:id
22
+ ```
23
+
24
+ ### Requested format
25
+ You can request a format by adding a ``.ext`` to the url you request.
26
+ This format is accessible via the ``format`` method. (alias for ``extension``)
27
+
28
+ It is also provided few helpers ``html?`` ``json?`` ``plain?``
29
+
30
+
13
31
  ### Hooks
14
- You can define hooks, which are some methods, called every times, before or
15
- after a call to a routed method. There is 2 kinds of hook actually:
32
+
33
+ A hook is a method, triggered automatically after an action.
34
+
35
+ Actually, NephosServer allows you to create 2 kinds of triggers for your hooks:
16
36
 
17
37
  - after_action
18
38
  - before_action
19
39
 
20
- Each of them will be called juste before or after calling the method requested.
21
- It means that the cookies are not saved yet (so you can change them, etc.)
40
+ Your hooks will be called just before/after calling the method requested.
41
+ It means that the cookies are not saved yet (so you can change them, etc.) for example.
22
42
 
23
43
  The hooks are defined by calling the methods ``after_action`` or
24
44
  ``before_action``, out of a method, usually on the top of the controller.
25
45
 
26
- Hooks take 1 or 2 arguments.
27
- - The first is the name of the method to call.
28
- - The second, **optional**, is a hash, containing ``:only`` or ``:except``
29
- keys, associated to an Array or Symbol or one Symbol. Each symbol represents
46
+ Triggers take 1 or 2 arguments.
47
+ - The first is the name of the Hook to use. **This is a required argument**.
48
+ - The second **is optional**. It should be a hash, containing ``:only`` or ``:except``
49
+ keys, associated to an Array of Symbols, or one Symbol. Each symbol represents
30
50
  a method triggering the hook.
31
51
 
32
52
  **Note: If there is no 2sd argument, then the hook is triggered every times.**
@@ -2,7 +2,7 @@
2
2
 
3
3
  The ``ngenerator`` is a lite application designed to make easier the application management.
4
4
 
5
- Actually, it allows you to create new application and controller.
5
+ Actually, it allows you to create new application, controller, or route.
6
6
 
7
7
  ## Usage
8
8
 
@@ -1,3 +1,4 @@
1
+
1
2
  # Routing Guide
2
3
 
3
4
  ### How the routes are inputed by the client ?
@@ -41,6 +42,13 @@ As example, yuo can write:
41
42
  add_route "GET", url: "/tmp", controller: "MyController", method: "tmp"
42
43
  ```
43
44
 
45
+ **Note: if you are as lazy as me, you also can specifie the url out of the hash (option).
46
+ It can be done by putting the url as second argument, like in the following example.
47
+ This note is also valid for the next helpers (get, post, put)**
48
+ ```ruby
49
+ add_route "GET", "/tmp", controller: "MyController", method: "tmp"
50
+ ```
51
+
44
52
  ### get post put
45
53
  Theses 3 helpers allows you to use ``add_route`` without the first argument.
46
54
 
@@ -86,6 +94,17 @@ resource "static" do
86
94
  end
87
95
  ```
88
96
 
97
+ ## Alias
98
+ You can create many routes to the same entry point. Each of theses rules can be
99
+ specified simply by placing an Array of String instead of a simple String in the
100
+ hash passed to the helper (get, ... , add_route).
101
+ Example:
102
+ ```ruby
103
+ get url: ["/", "/index"], controller: "UserController", method: "show" # / and /index
104
+ ```
105
+
89
106
  ## Notes
90
107
 
91
108
  * When a request is done, duplicate / are not counted. So, ``/resource/id`` is equivalent to ``////resource//id`` etc.
109
+ * It is possible, by default, to add a postfixed extension (like .html) to your rules. It is accessible via the controller (``extension`` method). It can be disabled by adding the option ``postfix: false``
110
+ * You can replace the both keys ``:controller`` and ``:method`` by ``:to``, which has to be associated with a string like ``Controller#method``
data/README.md CHANGED
@@ -100,6 +100,7 @@ put url: "/rm/:url", controller: "MainController", method: "rm_url" # /rm with
100
100
  resource "infos" do
101
101
  get url: "/", controller: "MainController", method: "root" # generate /infos
102
102
  get url: "/about", controller: "MainController", method: "root" # generate /infos/about
103
+ get url: "/notice", to: "MainController#notice" # generate /infos/notice
103
104
  end
104
105
  ```
105
106
 
@@ -107,9 +108,7 @@ end
107
108
  # Developers: Roadmap
108
109
 
109
110
  ## TODO v0.6
110
- - Alias for routing
111
111
  - functionnal tests
112
- - extension for urls (optional .xxx, with controller effect)
113
112
 
114
113
  ## TODO v0.7
115
114
  - feature to change HTTP header from controller
data/Rakefile CHANGED
@@ -1,5 +1,7 @@
1
1
  #encoding: utf-8
2
2
 
3
+ require 'colorize'
4
+
3
5
  task :default => [:test]
4
6
 
5
7
  task :test do
@@ -10,11 +12,15 @@ namespace :test do
10
12
 
11
13
  desc "Unitary tests. Fasts and on the sources."
12
14
  task :test do
15
+ puts
13
16
  ruby "test/test.rb"
14
17
  end
15
18
 
16
19
  desc "Functional tests. Slow, test real the features under real conditions of usage."
17
20
  task :functional do
21
+ puts "!!! Important !!!".yellow
22
+ puts "You have to access to internet to test the generator.".yellow
23
+ puts
18
24
  ruby "test/functional.rb"
19
25
  end
20
26
  end
@@ -1,6 +1,7 @@
1
1
  class RoutingError < StandardError; end
2
2
  class InvalidRoute < RoutingError; end
3
3
  class InvalidRouteUrl < InvalidRoute; end
4
+ class InvalidRouteTo < InvalidRoute; end
4
5
  class InvalidRouteController < InvalidRoute; end
5
6
  class InvalidRouteMethod < InvalidRoute; end
6
7
 
@@ -6,11 +6,13 @@ module Nephos
6
6
  # and the parameters.
7
7
  class Controller
8
8
 
9
- attr_reader :req, :callpath, :params, :cookies
9
+ attr_reader :req, :callpath, :params, :cookies, :extension
10
+ alias :format :extension
10
11
 
11
12
  # @param env [Hash] env extracted from the http request
12
13
  # @param parsed [Hash] pre-parsed env with parameters, ...
13
- def initialize req, callpath
14
+ # @param extension [String] extension ".json", ".html", ...
15
+ def initialize req, callpath, extension=nil
14
16
  raise ArgumentError, "req must be a Rack::Request" unless req.is_a? Rack::Request
15
17
  raise ArgumentError, "call must be a Hash" unless callpath.is_a? Hash
16
18
  @req= req
@@ -24,6 +26,18 @@ module Nephos
24
26
 
25
27
  @params = Params.new(@params)
26
28
  @cookies = Params.new(@req.cookies)
29
+
30
+ @extension = extension.to_s.split(".").last
31
+ end
32
+
33
+ def html?
34
+ %w(htm html xhtml).include? extension
35
+ end
36
+ def json?
37
+ %w(json).include? extension
38
+ end
39
+ def plain?
40
+ %w(txt raw).include? extension
27
41
  end
28
42
 
29
43
  @@before_action = {:'*' => []}
@@ -4,6 +4,9 @@ def route_prefix
4
4
  end
5
5
 
6
6
  # @param verb [String] has to be a valid http verb, so a string uppercase
7
+ # @param url [String] if an url is provided, then it will be put in the hash
8
+ # to have the same behavior as if it was specified in the what hash
9
+ # \\{url: URL}
7
10
  # @param what [Hash] has to contain the following keys:
8
11
  # - :url
9
12
  # - :controller
@@ -14,27 +17,35 @@ end
14
17
  # if the client request match with the verb and the url provided.
15
18
  #
16
19
  # Checkout the documentation about the parameters and API for more informations
17
- def add_route(verb, what)
20
+ def add_route(verb, url=nil, what)
18
21
  raise InvalidRoute, "what must be a hash" unless what.is_a? Hash
19
- what[:url] = File.expand_path File.join(route_prefix, what[:url])
20
- Nephos::Router.check!(what)
21
- Nephos::Router.add_params!(what)
22
- Nephos::Router.add(what, verb)
22
+ what[:url] ||= url
23
+ Array(what[:url]).each do |url|
24
+ route = what.dup
25
+ route[:url] = url
26
+ route[:url] = File.expand_path File.join(route_prefix, route[:url])
27
+ Nephos::Router.check!(route)
28
+ Nephos::Router.add_params!(route)
29
+ Nephos::Router.add(route, verb)
30
+ end
23
31
  end
24
32
 
33
+ # @param url [String] see {#add_route}
25
34
  # @param what [Hash] see {#add_route}
26
- def get what
27
- add_route "GET", what
35
+ def get url=nil, what
36
+ add_route "GET", url, what
28
37
  end
29
38
 
39
+ # @param url [String] see {#add_route}
30
40
  # @param what [Hash] see {#add_route}
31
- def post what
32
- add_route "POST", what
41
+ def post url=nil, what
42
+ add_route "POST", url, what
33
43
  end
34
44
 
45
+ # @param url [String] see {#add_route}
35
46
  # @param what [Hash] see {#add_route}
36
- def put what
37
- add_route "PUT", what
47
+ def put url=nil, what
48
+ add_route "PUT", url, what
38
49
  end
39
50
 
40
51
  # @param name [String]
@@ -50,3 +61,8 @@ def resource(name, &block)
50
61
  block.call
51
62
  @route_prefix.pop
52
63
  end
64
+
65
+ # An alias is an url which have the same proprieties than the previous route
66
+ def alias_route
67
+ raise "Not implemented yet"
68
+ end
@@ -16,7 +16,7 @@ module Nephos
16
16
  end
17
17
  url = params.map{|e| e[:p]}.join("/+")
18
18
  url = "/" if url.empty?
19
- what[:match] = /^#{url}\/*$/
19
+ what[:match] = what[:postfix] != false ? /^(?<url>#{url})(?<extension>\.\w+)?\/*$/ : /^(?<url>#{url})\/*$/
20
20
  # remove : in :param, and / in /param
21
21
  what[:params] = params.map{|e| e[:name] && e[:name][1..-1]}[1..-1] || []
22
22
  end
@@ -29,8 +29,16 @@ module Nephos
29
29
  # - :method
30
30
  def self.check_keys! what
31
31
  raise InvalidRouteUrl, "Missing URL" unless what.keys.include? :url
32
- raise InvalidRouteController, "Missing Controller" unless what.keys.include? :controller
33
- raise InvalidRouteMethod, "Missing Method" unless what.keys.include? :method
32
+ if what.keys.include? :to
33
+ match = what[:to].match(/(?<controller>\w+)\#(?<method>\w+)/)
34
+ raise InvalidRouteTo, "Invalid Controller#Method" unless match
35
+ what[:controller] = match["controller"]
36
+ what[:method] = match["method"]
37
+ what.delete :to
38
+ else
39
+ raise InvalidRouteController, "Missing Controller" unless what.keys.include? :controller
40
+ raise InvalidRouteMethod, "Missing Method" unless what.keys.include? :method
41
+ end
34
42
  end
35
43
 
36
44
  # @param what [Hash]
@@ -67,6 +67,8 @@ module Nephos
67
67
  env = req.env
68
68
  puts "#{req.env["REMOTE_ADDR"]} [#{req.request_method}] \t ---> \t #{req.path}" unless @silent
69
69
  call = find_route(req)
70
+ # require 'pry'
71
+ # binding.pry
70
72
  return error_404(req) if call.nil?
71
73
  begin
72
74
  return render_controller(req, call)
@@ -69,7 +69,8 @@ module Nephos
69
69
  end
70
70
 
71
71
  def render_from_controller req, call
72
- controller = Module.const_get(call[:controller]).new(req, call)
72
+ extension = req.path.match(call[:match])['extension']
73
+ controller = Module.const_get(call[:controller]).new(req, call, extension)
73
74
  method_to_call = call[:method]
74
75
 
75
76
  controller.execute_before_action(method_to_call)
@@ -41,9 +41,10 @@ test/router.rb
41
41
  test/params.rb
42
42
  test/controller.rb
43
43
  test/functional.rb
44
- test/functional/server.rb
45
44
  test/functional/generator.rb
46
45
  test/functional/global.rb
46
+ test/functional/router.rb
47
+ test/functional/server.rb
47
48
  routes.rb
48
49
 
49
50
  app/dataset.rb
data/routes.rb CHANGED
@@ -23,4 +23,5 @@ get url: "img/:image", controller: "MainController", method: "image"
23
23
 
24
24
  get url: "/get_cookies", controller: "MainController", method: "get_cookies"
25
25
  get url: "/add_cookie", controller: "MainController", method: "add_cookie"
26
- get url: "/err500", controller: "MainController", method: "err500"
26
+
27
+ get "/err500", controller: "MainController", method: "err500"
@@ -23,9 +23,13 @@ class TestNephosServerGenerator < Test::Unit::TestCase
23
23
  assert(Dir.exists? "/tmp/nephos-server-test/app")
24
24
  gemfile_data = File.read("/tmp/nephos-server-test/Gemfile").split("\n")
25
25
  assert(gemfile_data.include? "gem 'nephos'")
26
+
27
+ # if connected to internet only
28
+ assert(File.exists? "/tmp/nephos-server-test/Gemfile.lock")
26
29
  gemfile_lock_data = File.read("/tmp/nephos-server-test/Gemfile.lock").split
27
30
  assert(gemfile_lock_data.include? "nephos")
28
31
  assert(gemfile_lock_data.include? "nephos-server")
32
+
29
33
  `rm -rf /tmp/nephos-server-test 2> /tmp/null`
30
34
  end
31
35
 
@@ -0,0 +1,66 @@
1
+ class TestNephosServerAppRouter < Test::Unit::TestCase
2
+
3
+ ENV_ALL_VALID_ROUTES = [
4
+ {"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/home/index"},
5
+ {"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/home/index/"},
6
+ {"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/home/index//"},
7
+ {"REQUEST_METHOD"=>"POST", "PATH_INFO"=>"/home/index/add"},
8
+ {"REQUEST_METHOD"=>"POST", "PATH_INFO"=>"/home/index/add/"},
9
+ {"REQUEST_METHOD"=>"POST", "PATH_INFO"=>"/home/index/add//"},
10
+ {"REQUEST_METHOD"=>"PUT", "PATH_INFO"=>"/home/index/rm"},
11
+ {"REQUEST_METHOD"=>"PUT", "PATH_INFO"=>"/home/index/rm/"},
12
+ {"REQUEST_METHOD"=>"PUT", "PATH_INFO"=>"/home/index/rm//"},
13
+ {"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/home"},
14
+ {"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/home/"},
15
+ {"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/home//"},
16
+
17
+ {"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/homes"},
18
+ {"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/homes/"},
19
+ {"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/homes//"},
20
+
21
+ {"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/"},
22
+ {"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/add"},
23
+ {"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/rm"},
24
+ # {"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/debug"},
25
+ {"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/hello"},
26
+
27
+ # {"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/image"},
28
+ {"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/image/image.jpg"},
29
+ {"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/img/image.jpg"},
30
+
31
+ {"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/get_cookies"},
32
+ {"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/add_cookie"},
33
+ # {"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/err500"},
34
+ ]
35
+
36
+ def test_router_all_valid_routes
37
+ router = Nephos::Router.new(silent: true)
38
+ r = []
39
+ ENV_ALL_VALID_ROUTES.each do |env|
40
+ r << router.execute(Rack::Request.new(env))
41
+ end
42
+
43
+ r.each_with_index do |rep, idx|
44
+ # puts ENV_ALL_VALID_ROUTES[idx]
45
+ # puts rep
46
+ begin
47
+ assert_equal(200, rep.status)
48
+ rescue => err
49
+ puts rep
50
+ puts err
51
+ raise
52
+ end
53
+ end
54
+ end
55
+
56
+ def test_router_on_invalid
57
+ router = Nephos::Router.new(silent: true)
58
+ not_valid = {"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/not_a_valid_route"}
59
+ almost_valid = {"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/get_cookie"}
60
+ bad_verb = {"REQUEST_METHOD"=>"POST", "PATH_INFO"=>"/get_cookies"}
61
+ assert_equal(404, router.execute(Rack::Request.new(not_valid)).status)
62
+ assert_equal(404, router.execute(Rack::Request.new(almost_valid)).status)
63
+ assert_equal(404, router.execute(Rack::Request.new(bad_verb)).status)
64
+ end
65
+
66
+ end
data/test/router.rb CHANGED
@@ -187,7 +187,6 @@ class TestNephosServerRouter < Test::Unit::TestCase
187
187
  REQ_POST_INDEX_XXX_ID = Rack::Request.new({"REQUEST_METHOD"=>"POST", "PATH_INFO"=>"/index/XXX/id"})
188
188
  REQ_POST_INDEX_XXX_XXX = Rack::Request.new({"REQUEST_METHOD"=>"POST", "PATH_INFO"=>"/index/XXX/XXX"})
189
189
 
190
- # TODO : FIX
191
190
  def test_routing_matching_simple_with_arguments2
192
191
  reset_routes!
193
192
  get url: "/index", controller: "TestController", method: "method1", silent: true
@@ -208,4 +207,50 @@ class TestNephosServerRouter < Test::Unit::TestCase
208
207
  assert(!Nephos::Router.new.find_route(REQ_POST_INDEX_XXX_XXX))
209
208
  end
210
209
 
210
+ def test_routing_extension
211
+ reset_routes!
212
+ get url: "/index", controller: "TestController", method: "method1", silent: true
213
+ get url: "/indexno", controller: "TestController", method: "method1", silent: true, postfix: false
214
+ ok1 = Rack::Request.new({"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/index"})
215
+ ok2 = Rack::Request.new({"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/index.html"})
216
+ ok3 = Rack::Request.new({"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/index.json"})
217
+ ok4 = Rack::Request.new({"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/index.xhr"})
218
+ ok5 = Rack::Request.new({"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/indexno"})
219
+ ko1 = Rack::Request.new({"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/index/html"})
220
+ ko2 = Rack::Request.new({"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/indexno.html"})
221
+ ko3 = Rack::Request.new({"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/indexno.json"})
222
+ ko4 = Rack::Request.new({"REQUEST_METHOD"=>"GET", "PATH_INFO"=>"/indexno.xhr"})
223
+ assert(Nephos::Router.new.find_route(ok1))
224
+ assert(Nephos::Router.new.find_route(ok2))
225
+ assert(Nephos::Router.new.find_route(ok3))
226
+ assert(Nephos::Router.new.find_route(ok4))
227
+ assert(Nephos::Router.new.find_route(ok5))
228
+ assert(!Nephos::Router.new.find_route(ko1))
229
+ assert(!Nephos::Router.new.find_route(ko2))
230
+ assert(!Nephos::Router.new.find_route(ko3))
231
+ assert(!Nephos::Router.new.find_route(ko4))
232
+ end
233
+
234
+ def test_routing_eze_router
235
+ reset_routes!
236
+ get url: "/index", controller: "TestController", method: "method1", silent: true
237
+ get url: "/index", to: "TestController#method1", method: "method1", silent: true
238
+ assert_equal Nephos::Router::ROUTES[0], Nephos::Router::ROUTES[1]
239
+ end
240
+
241
+ def test_routing_multiple_url
242
+ reset_routes!
243
+ get url: ["/index"], controller: "TestController", method: "method1", silent: true
244
+ get url: "/index", controller: "TestController", method: "method1", silent: true
245
+ reset_routes!
246
+ get url: ["/index", "/index"], controller: "TestController", method: "method1"
247
+ get url: ["/index", "/index"], controller: "TestController", method: "method1"
248
+ assert_equal Nephos::Router::ROUTES[0], Nephos::Router::ROUTES[1]
249
+ assert_equal Nephos::Router::ROUTES[1], Nephos::Router::ROUTES[2]
250
+ assert_equal Nephos::Router::ROUTES[2], Nephos::Router::ROUTES[3]
251
+ reset_routes!
252
+ get url: ["/index", "/me", "/other"], controller: "TestController", method: "method1"
253
+ assert_equal 3, Nephos::Router::ROUTES.size
254
+ end
255
+
211
256
  end
data/version CHANGED
@@ -1 +1 @@
1
- 0.6.4
1
+ 0.6.5
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nephos-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.4
4
+ version: 0.6.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - poulet_a
@@ -31,7 +31,7 @@ cert_chain:
31
31
  tcYkgfqUJPitIJx1RvWZpIyH5uJhRUYK3+vU9nMOxez5WbIlC1TtpByKAPMX+sht
32
32
  gib3AoIT8jh/2w==
33
33
  -----END CERTIFICATE-----
34
- date: 2015-10-03 00:00:00.000000000 Z
34
+ date: 2015-10-09 00:00:00.000000000 Z
35
35
  dependencies:
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: nomorebeer
@@ -135,6 +135,7 @@ files:
135
135
  - test/functional.rb
136
136
  - test/functional/generator.rb
137
137
  - test/functional/global.rb
138
+ - test/functional/router.rb
138
139
  - test/functional/server.rb
139
140
  - test/params.rb
140
141
  - test/responder.rb
@@ -164,6 +165,8 @@ rubyforge_project:
164
165
  rubygems_version: 2.4.8
165
166
  signing_key:
166
167
  specification_version: 4
167
- summary: "* Fix application generator (replace in the gemfile nephos-server by nephos)"
168
+ summary: "* Improve routing helpers (optional url parameter) * Add new functional
169
+ tests (router) * Add extension for url (.html, ...) * Add improved router helper
170
+ (simple destination, alias)"
168
171
  test_files: []
169
172
  has_rdoc:
metadata.gz.sig CHANGED
Binary file