m2config 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +3 -1
- data/lib/m2config/host.rb +8 -2
- data/lib/m2config/route.rb +7 -1
- data/lib/m2config/version.rb +1 -1
- data/lib/m2config.rb +4 -7
- data/spec/dir_spec.rb +3 -18
- data/spec/env.rb +13 -0
- data/spec/handler_spec.rb +6 -18
- data/spec/host_spec.rb +30 -24
- data/spec/m2config_spec.rb +5 -27
- data/spec/proxy_spec.rb +3 -13
- data/spec/route_spec.rb +40 -32
- data/spec/server_spec.rb +12 -22
- data/spec/setting_spec.rb +4 -16
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 409e5df6b21362f88633bc922d489f2c17ec6a46
|
4
|
+
data.tar.gz: a97d5200c35196fac07995abc668330bfe8bf9f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c916730148ca203090fb412222e5f7386bb8c65c51b6b91b63f8d0c9a6f134165d76fc3ee862ff2d0a1df961e9d380af56a638564d22c48ff8cbf208bd52f709
|
7
|
+
data.tar.gz: e79f22f6bb17f04321cf68de59bdb33e2c5def72ed632a34cdb59338190e4e87d875c9dc641066aa471725dc4d441c7113dcd8b1ddd50c5a0e2e25c79ba6db41
|
data/Gemfile
CHANGED
data/lib/m2config/host.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module M2Config
|
2
2
|
class Host < Sequel::Model(:host)
|
3
|
-
one_to_many :routes
|
3
|
+
one_to_many :routes, {class: "M2Config::Route"}
|
4
4
|
|
5
5
|
def initialize( fields )
|
6
6
|
s = resolveServer fields
|
@@ -11,7 +11,13 @@ module M2Config
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def check_routes
|
14
|
-
paths = routes.map {
|
14
|
+
paths = routes(true).map {
|
15
|
+
|route|
|
16
|
+
route.path
|
17
|
+
}
|
18
|
+
# return true if paths.empty?
|
19
|
+
|
20
|
+
# return "#{paths.uniq.to_s} == #{paths.to_s}"
|
15
21
|
paths.uniq.size == paths.size
|
16
22
|
end
|
17
23
|
|
data/lib/m2config/route.rb
CHANGED
@@ -9,7 +9,13 @@ module M2Config
|
|
9
9
|
super(fields, false)
|
10
10
|
save
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
|
+
def self.elect!( route66 )
|
14
|
+
toMatch = {path: route66.path, host_id: route66.host_id}
|
15
|
+
toExclude = {id: route66.id}
|
16
|
+
Route.where(toMatch).exclude(toExclude).delete
|
17
|
+
end
|
18
|
+
|
13
19
|
def host=( hostOrId )
|
14
20
|
self.host_id = hostOrId.kind_of?(Host) ? hostOrId.id : hostOrId
|
15
21
|
save
|
data/lib/m2config/version.rb
CHANGED
data/lib/m2config.rb
CHANGED
@@ -7,6 +7,8 @@ module M2Config
|
|
7
7
|
|
8
8
|
DEFAULT_CONFIG = "config.sqlite"
|
9
9
|
SCHEMA = File.read("#{File.dirname __FILE__}/m2config/schema.sql")
|
10
|
+
|
11
|
+
attr_reader :db
|
10
12
|
|
11
13
|
@@foundTables = []
|
12
14
|
|
@@ -28,20 +30,15 @@ module M2Config
|
|
28
30
|
|
29
31
|
@db.run SCHEMA if creating
|
30
32
|
|
33
|
+
Sequel::Model.db = @db
|
34
|
+
|
31
35
|
require "m2config/server"
|
32
|
-
M2Config::Server.db = @db
|
33
36
|
require "m2config/host"
|
34
|
-
M2Config::Host.db = @db
|
35
37
|
require "m2config/dir"
|
36
|
-
M2Config::Dir.db = @db
|
37
38
|
require "m2config/route"
|
38
|
-
M2Config::Route.db = @db
|
39
39
|
require "m2config/proxy"
|
40
|
-
M2Config::Proxy.db = @db
|
41
40
|
require "m2config/handler"
|
42
|
-
M2Config::Handler.db = @db
|
43
41
|
require "m2config/setting"
|
44
|
-
M2Config::Setting.db = @db
|
45
42
|
end
|
46
43
|
|
47
44
|
def add_server( settings = {} )
|
data/spec/dir_spec.rb
CHANGED
@@ -1,36 +1,21 @@
|
|
1
1
|
require "env"
|
2
2
|
|
3
|
-
M2Config::Config.new # Dummy call to ensure that model classes are required (cf. M2Config::new)
|
4
|
-
|
5
3
|
describe M2Config::Dir do
|
6
|
-
before(:each) do
|
7
|
-
File.delete DEFAULT_DB_NAME rescue nil
|
8
|
-
@cfg = M2Config::Config.new
|
9
|
-
@db = SQLite3::Database.new DEFAULT_DB_NAME
|
10
|
-
@db.results_as_hash = true
|
11
|
-
end
|
12
|
-
|
13
|
-
after(:each) do
|
14
|
-
@db.close if @db && !@db.closed?
|
15
|
-
end
|
16
4
|
|
17
5
|
describe "::new" do
|
18
6
|
it "needs to know the base path to handle" do
|
19
7
|
M2Config::Dir.new({base:"images/"})
|
20
|
-
|
21
|
-
res["base"].should eq("images/")
|
8
|
+
CFG.db[:directory].first[:base].should eq("images/")
|
22
9
|
end
|
23
10
|
|
24
11
|
it "defaults to application/octet-stream for the default content type" do
|
25
12
|
M2Config::Dir.new({base:"images/"})
|
26
|
-
|
27
|
-
res["default_ctype"].should eq("application/octet-stream")
|
13
|
+
CFG.db[:directory].first[:default_ctype].should eq("application/octet-stream")
|
28
14
|
end
|
29
15
|
|
30
16
|
it "defaults to index.html for the index file" do
|
31
17
|
dir = M2Config::Dir.new({base:"/"})
|
32
|
-
|
33
|
-
res["index_file"].should eq("index.html")
|
18
|
+
CFG.db[:directory].first[:index_file].should eq("index.html")
|
34
19
|
end
|
35
20
|
|
36
21
|
describe "helps you spot common mistakes" do
|
data/spec/env.rb
CHANGED
@@ -2,7 +2,20 @@ require "bundler/setup"
|
|
2
2
|
require "m2config" # rspec automatically adds ./lib to LOAD_PATH
|
3
3
|
require "sqlite3"
|
4
4
|
require "pp"
|
5
|
+
require "pry"
|
6
|
+
require "pry-nav"
|
5
7
|
|
6
8
|
DEFAULT_DB_NAME = "config.sqlite"
|
7
9
|
CUSTOM_DB_NAME = "custom.sqlite"
|
8
10
|
EXISTING_DB_NAME = "empty.sqlite"
|
11
|
+
|
12
|
+
RSpec.configure do |config|
|
13
|
+
File.delete DEFAULT_DB_NAME rescue nil
|
14
|
+
CFG = M2Config::Config.new
|
15
|
+
config.around(:each) do |example|
|
16
|
+
CFG.db.transaction do
|
17
|
+
example.call
|
18
|
+
raise Sequel::Error::Rollback
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/spec/handler_spec.rb
CHANGED
@@ -1,37 +1,25 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
require "env"
|
3
3
|
|
4
|
-
M2Config::Config.new # Dummy call to ensure that model classes are required (cf. M2Config::new)
|
5
|
-
|
6
4
|
describe M2Config::Handler do
|
7
|
-
before(:each) do
|
8
|
-
File.delete DEFAULT_DB_NAME rescue nil
|
9
|
-
@cfg = M2Config::Config.new
|
10
|
-
@db = SQLite3::Database.new DEFAULT_DB_NAME
|
11
|
-
@db.results_as_hash = true
|
12
|
-
end
|
13
|
-
|
14
|
-
after(:each) do
|
15
|
-
@db.close if @db && !@db.closed?
|
16
|
-
end
|
17
5
|
|
18
6
|
describe "::new" do
|
19
7
|
it "needs the ØMQ addresses and a send identifier" do
|
20
8
|
M2Config::Handler.new({ send_spec:"tcp://10.0.0.1:8989",
|
21
9
|
recv_spec:"tcp://10.0.0.1:9898",
|
22
10
|
send_ident: "dev.example.com ID"})
|
23
|
-
res =
|
24
|
-
res[
|
25
|
-
res[
|
26
|
-
res[
|
11
|
+
res = CFG.db[:handler].first
|
12
|
+
res[:send_spec].should eq("tcp://10.0.0.1:8989")
|
13
|
+
res[:recv_spec].should eq("tcp://10.0.0.1:9898")
|
14
|
+
res[:send_ident].should eq("dev.example.com ID")
|
27
15
|
end
|
28
16
|
|
29
17
|
it "turns nil into empty string when recv_ident is not set" do
|
30
18
|
M2Config::Handler.new({ send_spec:"tcp://10.0.0.1:8989",
|
31
19
|
recv_spec:"tcp://10.0.0.1:9898",
|
32
20
|
send_ident: "dev.example.com ID"})
|
33
|
-
res =
|
34
|
-
res[
|
21
|
+
res = CFG.db[:handler].first
|
22
|
+
res[:recv_ident].should be_empty
|
35
23
|
end
|
36
24
|
|
37
25
|
describe "helps you spot common mistakes" do
|
data/spec/host_spec.rb
CHANGED
@@ -1,39 +1,29 @@
|
|
1
1
|
require "env"
|
2
2
|
|
3
|
-
M2Config::Config.new # Dummy call to ensure that model classes are required (cf. M2Config::new)
|
4
|
-
|
5
3
|
describe M2Config::Host do
|
6
4
|
before(:each) do
|
7
|
-
|
8
|
-
@cfg = M2Config::Config.new
|
9
|
-
@db = SQLite3::Database.new DEFAULT_DB_NAME
|
10
|
-
@db.results_as_hash = true
|
11
|
-
@srv = @cfg.add_server
|
5
|
+
@srv = CFG.add_server
|
12
6
|
end
|
13
|
-
|
14
|
-
after(:each) do
|
15
|
-
@db.close if @db && !@db.closed?
|
16
|
-
end
|
17
|
-
|
7
|
+
|
18
8
|
describe "::new" do
|
19
9
|
it "needs to know the domain name served" do
|
20
10
|
M2Config::Host.new({matching:"example.com", name: "ex"})
|
21
|
-
res =
|
22
|
-
res[
|
11
|
+
res = CFG.db[:host].first
|
12
|
+
res[:matching].should eq("example.com")
|
23
13
|
end
|
24
14
|
|
25
15
|
it "can use the uuid of a server" do
|
26
16
|
host = M2Config::Host.new({matching:"example.com", name: "ex", srvUuid: @srv.uuid})
|
27
|
-
res =
|
28
|
-
res[
|
29
|
-
res[
|
17
|
+
res = CFG.db[:host].where(id: host.id).first
|
18
|
+
res[:server_id].should eq(@srv.id)
|
19
|
+
res[:matching].should eq("example.com")
|
30
20
|
end
|
31
21
|
|
32
22
|
it "can use a server instance" do
|
33
23
|
host = M2Config::Host.new({matching:"example.com", name: "ex", srv: @srv})
|
34
|
-
res =
|
35
|
-
res[
|
36
|
-
res[
|
24
|
+
res = CFG.db[:host].where(id: host.id).first
|
25
|
+
res[:server_id].should eq(@srv.id)
|
26
|
+
res[:matching].should eq("example.com")
|
37
27
|
end
|
38
28
|
|
39
29
|
it "enforces mongrel2 constraint about nil name" do
|
@@ -49,8 +39,8 @@ describe M2Config::Host do
|
|
49
39
|
dirH = M2Config::Dir.new({base: "static/"})
|
50
40
|
dirR = M2Config::Route.new({path:"/blog", target: dirH})
|
51
41
|
host.add_route dirR
|
52
|
-
res =
|
53
|
-
res[
|
42
|
+
res = CFG.db[:route].first
|
43
|
+
res[:host_id].should eq(host.id)
|
54
44
|
end
|
55
45
|
end
|
56
46
|
|
@@ -59,10 +49,26 @@ describe M2Config::Host do
|
|
59
49
|
host = M2Config::Host.new({matching:"example.com", name: "ex"})
|
60
50
|
dir1 = M2Config::Dir.new({base: "static/"})
|
61
51
|
dir2 = M2Config::Dir.new({base: "images/"})
|
62
|
-
host.add_route M2Config::Route.new({path:"/
|
63
|
-
host.add_route M2Config::Route.new({path:"/
|
52
|
+
host.add_route M2Config::Route.new({path:"/blog1", target: dir1})
|
53
|
+
host.add_route M2Config::Route.new({path:"/blog1", target: dir2})
|
64
54
|
host.check_routes.should be_false
|
65
55
|
end
|
56
|
+
|
57
|
+
it 'returns true if all routes have different paths' do
|
58
|
+
host = M2Config::Host.new({matching:"example2.com", name: "ex"})
|
59
|
+
dir1 = M2Config::Dir.new({base: "static/"})
|
60
|
+
dir2 = M2Config::Dir.new({base: "images/"})
|
61
|
+
r1 = M2Config::Route.new({path:"/blog3", target: dir1})
|
62
|
+
r2 = M2Config::Route.new({path:"/images", target: dir2})
|
63
|
+
host.add_route r1
|
64
|
+
host.add_route r2
|
65
|
+
host.check_routes.should be_true
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'withstands the idea of not having any routes' do # , {focus: true}
|
69
|
+
host = M2Config::Host.new({matching:"example.com", name: "ex"})
|
70
|
+
host.check_routes.should be_true
|
71
|
+
end
|
66
72
|
end
|
67
73
|
|
68
74
|
end
|
data/spec/m2config_spec.rb
CHANGED
@@ -1,18 +1,12 @@
|
|
1
1
|
require "env"
|
2
2
|
|
3
3
|
TABLES = %w(directory handler host log mimetype proxy route server setting statistic filter)
|
4
|
-
|
5
|
-
File.delete EXISTING_DB_NAME rescue nil
|
6
|
-
emptyDB = SQLite3::Database.new EXISTING_DB_NAME
|
7
|
-
|
4
|
+
|
8
5
|
describe M2Config do
|
9
6
|
|
10
|
-
before(:
|
11
|
-
File.delete DEFAULT_DB_NAME rescue nil
|
12
|
-
File.delete CUSTOM_DB_NAME rescue nil
|
13
|
-
@cfg = M2Config::Config.new
|
7
|
+
before(:all) do
|
14
8
|
end
|
15
|
-
|
9
|
+
|
16
10
|
after(:each) do
|
17
11
|
@db.close if @db && !@db.closed?
|
18
12
|
end
|
@@ -21,11 +15,6 @@ describe M2Config do
|
|
21
15
|
File.should exist DEFAULT_DB_NAME
|
22
16
|
end
|
23
17
|
|
24
|
-
it 'can create the database in a specific file' do
|
25
|
-
@cfg = M2Config::Config.new CUSTOM_DB_NAME
|
26
|
-
File.should exist CUSTOM_DB_NAME
|
27
|
-
end
|
28
|
-
|
29
18
|
it 'learns the DB schema from the official schema dump' do
|
30
19
|
for table in TABLES do
|
31
20
|
M2Config::Config.tables.should include table
|
@@ -39,23 +28,12 @@ describe M2Config do
|
|
39
28
|
end
|
40
29
|
end
|
41
30
|
|
42
|
-
it 'does not change the schema if the database file pre-exists' do
|
43
|
-
@cfg = M2Config::Config.new EXISTING_DB_NAME
|
44
|
-
expect {emptyDB.execute("SELECT * FROM server;")}.to raise_error
|
45
|
-
end
|
46
|
-
|
47
31
|
describe '#[]=' do
|
48
|
-
|
49
32
|
it 'creates or modifies the value of a setting' do
|
50
|
-
|
51
|
-
db.
|
52
|
-
@cfg["zeromq.threads"] = 8
|
53
|
-
res = db.get_first_row("SELECT * FROM setting WHERE key=?;", "zeromq.threads")
|
54
|
-
res["value"].should eq("8")
|
33
|
+
CFG["zeromq.threads"] = 8
|
34
|
+
CFG.db[:setting].where(key:"zeromq.threads").first[:value].should eq("8")
|
55
35
|
end
|
56
|
-
|
57
36
|
end
|
58
|
-
|
59
37
|
|
60
38
|
end
|
61
39
|
|
data/spec/proxy_spec.rb
CHANGED
@@ -3,23 +3,13 @@ require "env"
|
|
3
3
|
M2Config::Config.new # Dummy call to ensure that model classes are required (cf. M2Config::new)
|
4
4
|
|
5
5
|
describe M2Config::Proxy do
|
6
|
-
before(:each) do
|
7
|
-
File.delete DEFAULT_DB_NAME rescue nil
|
8
|
-
@cfg = M2Config::Config.new
|
9
|
-
@db = SQLite3::Database.new DEFAULT_DB_NAME
|
10
|
-
@db.results_as_hash = true
|
11
|
-
end
|
12
|
-
|
13
|
-
after(:each) do
|
14
|
-
@db.close if @db && !@db.closed?
|
15
|
-
end
|
16
6
|
|
17
7
|
describe "::new" do
|
18
8
|
it "needs an address and a port number" do
|
19
9
|
M2Config::Proxy.new({addr:"legacy.local", port: 8080})
|
20
|
-
res=
|
21
|
-
res[
|
22
|
-
res[
|
10
|
+
res = CFG.db[:proxy].first
|
11
|
+
res[:addr].should eq("legacy.local")
|
12
|
+
res[:port].should eq(8080)
|
23
13
|
end
|
24
14
|
end
|
25
15
|
|
data/spec/route_spec.rb
CHANGED
@@ -1,51 +1,57 @@
|
|
1
1
|
require "env"
|
2
2
|
|
3
|
-
M2Config::Config.new # Dummy call to ensure that model classes are required (cf. M2Config::new)
|
4
|
-
|
5
3
|
describe M2Config::Route do
|
6
|
-
before(:each) do
|
7
|
-
File.delete DEFAULT_DB_NAME rescue nil
|
8
|
-
@cfg = M2Config::Config.new
|
9
|
-
@dirH = M2Config::Dir.new({base: "static/"})
|
10
|
-
@db = SQLite3::Database.new DEFAULT_DB_NAME
|
11
|
-
@db.results_as_hash = true
|
12
|
-
end
|
13
|
-
|
14
|
-
after(:each) do
|
15
|
-
@db.close if @db && !@db.closed?
|
16
|
-
end
|
17
4
|
|
18
5
|
describe "::new" do
|
19
6
|
it "needs to know the path pattern and the target handler" do
|
20
|
-
M2Config::
|
21
|
-
|
22
|
-
res[
|
23
|
-
res[
|
24
|
-
res[
|
7
|
+
dirH = M2Config::Dir.new({base: "static/"})
|
8
|
+
M2Config::Route.new({path:"/blog", target: dirH})
|
9
|
+
res = CFG.db[:route].first
|
10
|
+
res[:path].should eq("/blog")
|
11
|
+
res[:target_id].should eq(dirH.id)
|
12
|
+
res[:target_type].should eq(dirH.type)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "::elect!" do
|
17
|
+
it "makes a route the exclusive matcher for its path by deleting all other matching routes (on the same host)" do
|
18
|
+
host = M2Config::Host.new({name:"main",matching:"actime.biz"})
|
19
|
+
dirH = M2Config::Dir.new({base: "static/"})
|
20
|
+
dir2 = M2Config::Dir.new({base: "ManceRayder/"})
|
21
|
+
r1 = M2Config::Route.new({path:"/king", target: dirH})
|
22
|
+
r2 = M2Config::Route.new({path:"/king", target: dir2})
|
23
|
+
r3 = M2Config::Route.new({path:"/king", target: dirH})
|
24
|
+
M2Config::Route.elect!(r2)
|
25
|
+
host.check_routes.should be_true
|
26
|
+
king = M2Config::Route.where(path: "/king").first
|
27
|
+
king.target.base.should eq("ManceRayder/")
|
25
28
|
end
|
26
29
|
end
|
27
30
|
|
28
31
|
describe "#host=" do
|
29
32
|
it "can be used if the host is not known at creation" do
|
30
33
|
host = M2Config::Host.new({matching:"example.com", name: "ex"})
|
31
|
-
|
34
|
+
dirH = M2Config::Dir.new({base: "static/"})
|
35
|
+
r = M2Config::Route.new({path:"/blog", target: dirH})
|
32
36
|
r.host = host.id
|
33
|
-
res =
|
34
|
-
res[
|
37
|
+
res = CFG.db[:route].first
|
38
|
+
res[:host_id].should eq(host.id)
|
35
39
|
end
|
36
40
|
|
37
41
|
it "can take a Host instance" do
|
38
42
|
host = M2Config::Host.new({matching:"example.com", name: "ex"})
|
39
|
-
|
43
|
+
dirH = M2Config::Dir.new({base: "static/"})
|
44
|
+
r = M2Config::Route.new({path:"/blog", target: dirH})
|
40
45
|
r.host = host
|
41
|
-
res =
|
42
|
-
res[
|
46
|
+
res = CFG.db[:route].first
|
47
|
+
res[:host_id].should eq(host.id)
|
43
48
|
end
|
44
49
|
end
|
45
50
|
|
46
|
-
describe '#host' do #
|
51
|
+
describe '#host' do #
|
47
52
|
it 'returns the associated Host object' do
|
48
|
-
|
53
|
+
dirH = M2Config::Dir.new({base: "static/"})
|
54
|
+
r = M2Config::Route.new({path:"/blog", target: dirH})
|
49
55
|
r.host = M2Config::Host.new({matching:"example.com", name: "ex"})
|
50
56
|
r.host.matching.should eq("example.com")
|
51
57
|
end
|
@@ -53,19 +59,21 @@ describe M2Config::Route do
|
|
53
59
|
|
54
60
|
describe '#target=' do
|
55
61
|
it 'reassigns the target object' do
|
56
|
-
|
62
|
+
dirH = M2Config::Dir.new({base: "static/"})
|
63
|
+
r = M2Config::Route.new({path:"/blog", target: dirH})
|
57
64
|
newTarget = M2Config::Proxy.new({addr:"127.0.0.1", port: 15970})
|
58
65
|
r.target = newTarget
|
59
|
-
res =
|
60
|
-
res[
|
61
|
-
res[
|
66
|
+
res = CFG.db[:route].first
|
67
|
+
res[:target_id].should eq(newTarget.id)
|
68
|
+
res[:target_type].should eq(newTarget.type)
|
62
69
|
end
|
63
70
|
end
|
64
71
|
|
65
72
|
describe '#target' do
|
66
73
|
it 'returns the Target object' do
|
67
|
-
|
68
|
-
r.target
|
74
|
+
dirH = M2Config::Dir.new({base: "static/"})
|
75
|
+
r = M2Config::Route.new({path:"/blog", target: dirH})
|
76
|
+
r.target.base.should eq dirH.base
|
69
77
|
end
|
70
78
|
end
|
71
79
|
|
data/spec/server_spec.rb
CHANGED
@@ -1,33 +1,23 @@
|
|
1
1
|
require "env"
|
2
2
|
|
3
|
-
M2Config::Config.new # Dummy call to ensure that model classes are required (cf. M2Config::new)
|
4
|
-
|
5
3
|
describe M2Config::Server do
|
6
4
|
before(:each) do
|
7
|
-
File.delete DEFAULT_DB_NAME rescue nil
|
8
|
-
@cfg = M2Config::Config.new
|
9
|
-
@db = SQLite3::Database.new DEFAULT_DB_NAME
|
10
|
-
@db.results_as_hash = true
|
11
5
|
@srv = M2Config::Server.new
|
12
6
|
@host = M2Config::Host.new({matching:"example.com", name: "ex", server_id:(rand 42)})
|
13
7
|
end
|
14
|
-
|
15
|
-
after(:each) do
|
16
|
-
@db.close if @db && !@db.closed?
|
17
|
-
end
|
18
8
|
|
19
9
|
describe '::new' do
|
20
10
|
it 'creates a server entry with reasonable default settings' do
|
21
|
-
res=
|
22
|
-
res[
|
23
|
-
res[
|
24
|
-
res[
|
25
|
-
res[
|
26
|
-
res[
|
27
|
-
res[
|
28
|
-
res[
|
29
|
-
res[
|
30
|
-
res[
|
11
|
+
res = CFG.db[:server].first
|
12
|
+
res[:access_log].should eq(M2Config::Server::ACCESS_LOG)
|
13
|
+
res[:error_log].should eq(M2Config::Server::ERROR_LOG)
|
14
|
+
res[:pid_file].should eq(M2Config::Server::PID_FILE)
|
15
|
+
res[:chroot].should eq(M2Config::Server::CHROOT)
|
16
|
+
res[:default_host].should eq(M2Config::Server::DEFAULT_HOST)
|
17
|
+
res[:name].should eq(M2Config::Server::NAME)
|
18
|
+
res[:bind_addr].should eq(M2Config::Server::BIND_ADDR)
|
19
|
+
res[:port].should eq(M2Config::Server::PORT)
|
20
|
+
res[:use_ssl].should eq(M2Config::Server::USE_SSL)
|
31
21
|
end
|
32
22
|
|
33
23
|
end
|
@@ -47,8 +37,8 @@ describe M2Config::Server do
|
|
47
37
|
describe '#add_host (assigns the given host to the server)' do
|
48
38
|
it 'accepts an existing Host instance' do
|
49
39
|
@srv.add_host @host
|
50
|
-
res=
|
51
|
-
res[
|
40
|
+
res = CFG.db[:host].where(id: @host.id).first
|
41
|
+
res[:server_id].should eq(@srv.id)
|
52
42
|
end
|
53
43
|
end
|
54
44
|
end
|
data/spec/setting_spec.rb
CHANGED
@@ -1,32 +1,20 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
require "env"
|
3
3
|
|
4
|
-
M2Config::Config.new # Dummy call to ensure that model classes are required (cf. M2Config::new)
|
5
|
-
|
6
4
|
describe M2Config::Setting do
|
7
|
-
before(:each) do
|
8
|
-
File.delete DEFAULT_DB_NAME rescue nil
|
9
|
-
@cfg = M2Config::Config.new
|
10
|
-
@db = SQLite3::Database.new DEFAULT_DB_NAME
|
11
|
-
@db.results_as_hash = true
|
12
|
-
end
|
13
|
-
|
14
|
-
after(:each) do
|
15
|
-
@db.close if @db && !@db.closed?
|
16
|
-
end
|
17
5
|
|
18
6
|
describe "::new" do
|
19
7
|
it "stores the given value under the given key" do
|
20
8
|
M2Config::Setting.new("answer",42)
|
21
|
-
res =
|
22
|
-
res[
|
9
|
+
res = CFG.db[:setting].first
|
10
|
+
res[:value].should eq("42")
|
23
11
|
end
|
24
12
|
|
25
13
|
it "updates the existing value if the given key is already present" do
|
26
14
|
M2Config::Setting.new("answer",41)
|
27
15
|
M2Config::Setting.new("answer",42)
|
28
|
-
res =
|
29
|
-
res[
|
16
|
+
res = CFG.db[:setting].first
|
17
|
+
res[:value].should eq("42")
|
30
18
|
end
|
31
19
|
end
|
32
20
|
end
|
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.
|
4
|
+
version: 0.4.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-
|
11
|
+
date: 2013-03-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sqlite3
|