m2config 0.2.0 → 0.3.0

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: 8af32f60790056db4c869961bf53572607910579
4
- data.tar.gz: 94bece67112686d6f40e58a5f57647b869dbb8d0
3
+ metadata.gz: 30d8a9fa3eccc1534a6cbff481a910190e163332
4
+ data.tar.gz: 31d5f71abafec20f678f4fb290e631b231ca475e
5
5
  SHA512:
6
- metadata.gz: a85f7fc5d80cb047a69494d85a433cf598b5dc22703c5bc509056b9027f93ebb7410b7b3646160fe02d730447abd2b86f877356787ed8ce1b98405637d4b5074
7
- data.tar.gz: d5b4d69be4e351300217f8c5ae0414fbb4926d388d6ddab722a7e54da1e50aee5fb80c187d25ff770102ce9123e773c634fe0e1f3d051e10bf641ec1c10d31b0
6
+ metadata.gz: c08369ceb3433048c01f1a49108711dcda9330516ec90753f7937072b404d020e39390dd9e507f87cf0eb5af26da109f6d2b5792ba74d20fb4af897777a6a797
7
+ data.tar.gz: 3dd55d203a07f423ed59bde04b17929618559d32a9cb204303394b85452eb4b50c13be6f678115caaba695f7689308fcbf979710a1188fdf1694d85e976dd78d
data/lib/m2config/host.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module M2Config
2
2
  class Host < Sequel::Model(:host)
3
- plugin :validation_helpers
3
+ one_to_many :routes
4
4
 
5
5
  def initialize( fields )
6
6
  s = resolveServer fields
@@ -10,8 +10,9 @@ module M2Config
10
10
  save
11
11
  end
12
12
 
13
- def add_route( route )
14
- route.host = id
13
+ def check_routes
14
+ paths = routes.map { |route| route[:path] }
15
+ paths.uniq.size == paths.size
15
16
  end
16
17
 
17
18
  private
@@ -29,6 +30,5 @@ module M2Config
29
30
  s
30
31
  end
31
32
 
32
-
33
33
  end
34
34
  end
@@ -1,6 +1,5 @@
1
1
  module M2Config
2
2
  class Proxy < Sequel::Model(:proxy)
3
- plugin :validation_helpers
4
3
 
5
4
  def initialize( fields )
6
5
  super(fields, false)
@@ -1,6 +1,6 @@
1
1
  module M2Config
2
2
  class Route < Sequel::Model(:route)
3
- plugin :validation_helpers
3
+ many_to_one :host
4
4
 
5
5
  def initialize( fields )
6
6
  fields[:target_id] = fields[:target].id
@@ -15,5 +15,19 @@ module M2Config
15
15
  save
16
16
  end
17
17
 
18
+ def target=( newTarget )
19
+ self.target_id = newTarget.id
20
+ self.target_type = newTarget.type
21
+ save
22
+ end
23
+
24
+ def target
25
+ case target_type
26
+ when "proxy" then Proxy[target_id]
27
+ when "dir" then Dir[target_id]
28
+ when "handler" then Handler[target_id]
29
+ end
30
+ end
31
+
18
32
  end
19
33
  end
@@ -10,7 +10,6 @@ module M2Config
10
10
  PORT = 6767
11
11
  USE_SSL = 0
12
12
 
13
- plugin :validation_helpers
14
13
  one_to_many :hosts
15
14
 
16
15
  def initialize( fields={} )
@@ -26,12 +25,13 @@ module M2Config
26
25
  fields[:use_ssl] ||= USE_SSL
27
26
  super fields, false
28
27
  save
29
- end
30
-
31
- def add_host( host )
32
- host.server_id = id
33
- host.save
34
28
  end
35
-
29
+
30
+ def self.first
31
+ raise "Careful ! You are calling Server.first on a database holding multiple servers" if
32
+ ((Server.get {count(id)}) > 1)
33
+ super
34
+ end
35
+
36
36
  end
37
37
  end
@@ -1,3 +1,3 @@
1
1
  module M2Config
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
data/sample/full.rb CHANGED
@@ -11,7 +11,7 @@ appHand = M2Config::Handler.new({ send_spec:"tcp://10.0.0.1:8989",
11
11
  recv_spec:"tcp://10.0.0.1:9898",
12
12
  send_ident: "dev.example.com ID" })
13
13
  appRoute = M2Config::Route.new( {path:"/blog", target:appHand} )
14
-
14
+
15
15
  exComHost.add_route appRoute
16
16
  exComHost.add_route pubRoute
17
17
 
data/spec/host_spec.rb CHANGED
@@ -52,5 +52,17 @@ describe M2Config::Host do
52
52
  res = @db.get_first_row("SELECT * FROM route;")
53
53
  res["host_id"].should eq(host.id)
54
54
  end
55
- end
55
+ end
56
+
57
+ describe '#check_routes' do
58
+ it 'returns false if some routes have identical paths' do
59
+ host = M2Config::Host.new({matching:"example.com", name: "ex"})
60
+ dir1 = M2Config::Dir.new({base: "static/"})
61
+ dir2 = M2Config::Dir.new({base: "images/"})
62
+ host.add_route M2Config::Route.new({path:"/blog", target: dir1})
63
+ host.add_route M2Config::Route.new({path:"/blog", target: dir2})
64
+ host.check_routes.should be_false
65
+ end
66
+ end
67
+
56
68
  end
data/spec/route_spec.rb CHANGED
@@ -23,7 +23,6 @@ describe M2Config::Route do
23
23
  res["target_id"].should eq(@dirH.id)
24
24
  res["target_type"].should eq(@dirH.type)
25
25
  end
26
-
27
26
  end
28
27
 
29
28
  describe "#host=" do
@@ -42,6 +41,32 @@ describe M2Config::Route do
42
41
  res = @db.get_first_row("SELECT * FROM route;")
43
42
  res["host_id"].should eq(host.id)
44
43
  end
45
-
46
44
  end
45
+
46
+ describe '#host' do # , {focus: true}
47
+ it 'returns the associated Host object' do
48
+ r = M2Config::Route.new({path:"/blog", target: @dirH})
49
+ r.host = M2Config::Host.new({matching:"example.com", name: "ex"})
50
+ r.host.matching.should eq("example.com")
51
+ end
52
+ end
53
+
54
+ describe '#target=' do
55
+ it 'reassigns the target object' do
56
+ r = M2Config::Route.new({path:"/blog", target: @dirH})
57
+ newTarget = M2Config::Proxy.new({addr:"127.0.0.1", port: 15970})
58
+ r.target = newTarget
59
+ res = @db.get_first_row("SELECT * FROM route;")
60
+ res["target_id"].should eq(newTarget.id)
61
+ res["target_type"].should eq(newTarget.type)
62
+ end
63
+ end
64
+
65
+ describe '#target' do
66
+ it 'returns the Target object' do
67
+ r = M2Config::Route.new({path:"/blog", target: @dirH})
68
+ r.target.base.should eq @dirH.base
69
+ end
70
+ end
71
+
47
72
  end
data/spec/server_spec.rb CHANGED
@@ -9,14 +9,14 @@ describe M2Config::Server do
9
9
  @db = SQLite3::Database.new DEFAULT_DB_NAME
10
10
  @db.results_as_hash = true
11
11
  @srv = M2Config::Server.new
12
- @host = M2Config::Host.new({matching:"example.com", name: "ex"})
12
+ @host = M2Config::Host.new({matching:"example.com", name: "ex", server_id:(rand 42)})
13
13
  end
14
14
 
15
15
  after(:each) do
16
16
  @db.close if @db && !@db.closed?
17
17
  end
18
18
 
19
- describe '::new' do # , {focus: true}
19
+ describe '::new' do
20
20
  it 'creates a server entry with reasonable default settings' do
21
21
  res= @db.get_first_row("SELECT * FROM server;")
22
22
  res["access_log"].should eq(M2Config::Server::ACCESS_LOG)
@@ -32,6 +32,18 @@ describe M2Config::Server do
32
32
 
33
33
  end
34
34
 
35
+ describe '::first (from Sequel::Model)' do
36
+ it 'returns the first server found in the database' do
37
+ srv = M2Config::Server.first
38
+ srv.id.should eq(@srv.id)
39
+ end
40
+
41
+ it 'raises if there is more than one server' do
42
+ M2Config::Server.new
43
+ expect { M2Config::Server.first }.to raise_exception /Careful ! You are calling Server.first on a database holding multiple servers/
44
+ end
45
+ end
46
+
35
47
  describe '#add_host (assigns the given host to the server)' do
36
48
  it 'accepts an existing Host instance' do
37
49
  @srv.add_host @host
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: m2config
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arnaud Meuret
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-03-22 00:00:00.000000000 Z
11
+ date: 2013-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sqlite3