UNPKG

1.83 kBtext/coffeescriptView Raw
1should = require 'should'
2_ = require 'lodash'
3logger = require 'torch'
4{join} = require 'path'
5
6core = require '../lib/core'
7mockRetriever = require './helpers/mockRetriever'
8
9initCoreWithMock = (packages) ->
10 retriever = mockRetriever()
11 _.merge retriever.packages, packages
12 core.init {
13 timeout: 20
14 }, retriever
15
16describe 'extension config', ->
17
18 beforeEach (done) ->
19 core.reset (err) ->
20 core.wireUpLoggers [{writer: 'console', level: 'info'}]
21 done(err)
22
23 it 'should receive project config', (done) ->
24
25 # Given a project config with a 'config' section defined
26 projectConfig =
27 extensions:
28 server: '*'
29 config:
30 serverPort: 4000
31 apiPort: 4001
32
33 # And an extension config as a function of the app config
34 extensionConfig = (app) ->
35
36 # It should return without its assertions failing
37 should.exist app
38 app.should.eql projectConfig.config
39 done()
40 return app
41
42 # When core is initialized
43 initCoreWithMock {
44 '': projectConfig
45 node_modules:
46 'axiom-server': {}
47 config:
48 server: extensionConfig
49 }
50
51 it 'should be accessible within an extension', (done) ->
52 serverExtension =
53 config:
54 port: 4000
55
56 services:
57 run: (args, fin) ->
58 4000.should.eql @config.port
59 fin()
60
61 core.load 'server', serverExtension
62 core.request 'server.run', {}, done
63
64 it 'should not be accessible from another extension', (done) ->
65 irrelevantExtension =
66 config:
67 irrelevantValue: 2
68
69 serverExtension =
70 services:
71 run: (args, fin) ->
72 @config.should.not.have.key 'irrelevantValue'
73 fin()
74
75 core.load 'irrelevant', irrelevantExtension
76 core.load 'server', serverExtension
77 core.request 'server.run', {}, done