示例#1
0
文件: index.js 项目: bibo38/bahn-api
nodeServer.run = function (config) {
  var app = express();

  config.debug && expressDebug(app);

  var api = require('./config/api');
  app.use(swaggerize({
    api: api,
    docspath: '/api-docs',
    handlers: './lib/handlers'
  }));
  app.get('/', function (request, response) {
    response.send('INDEX');
  });
  app.get(api.basePath, function (request, response) {
    response.send(JSON.stringify(api));
  });

  var server = http.createServer(app);
  server.listen(config.port, 'localhost', function () {
    var host = server.address().address + ':' + server.address().port;
    app.swagger.api.host = host;
    console.log(host);
  });
};
示例#2
0
test('api', function (t) {
    var app = express();

    

    app.use(swaggerize({
        api: require('./..\config\api.json'),
        handlers: path.join(__dirname, '..\handlers')
    }));

    
    t.test('test get /contacts', function (t) {
        
        var responseSchema = enjoi({
            'type': "array", 
            'items': {"$ref":"#/definitions/Contact"}
        }, {
            '#': require('..\config\api.json')
        });
        

        request(app).get('//contacts')
        .end(function (err, res) {
            t.ok(!err, 'get /contacts no error.');
            t.strictEqual(res.statusCode, 200, 'get /contacts 200 status.');
            responseSchema.validate(res.body, function (error) {
                t.ok(!error, 'Response schema valid.');
            });
            t.end();
        });
    });
    

});
示例#3
0
test('api', function (t) {
    var app = express();

    
    app.use(require('body-parser')());

    app.use(swaggerize({
        api: path.join(__dirname, './../config/petstore.json'),
        handlers: path.join(__dirname, '../handlers')
    }));

    
    t.test('test get /pets', function (t) {
        
        var responseSchema = enjoi({
            '$ref': "#/definitions/Pets"
        }, {
                subSchemas: {
                    '#':  require(Path.join(__dirname, './../config/petstore.json')) 
                }
        });
        

        request(app).get('/v1/pets')
        .end(function (err, res) {
            t.ok(!err, 'get /pets no error.');
            t.strictEqual(res.statusCode, 200, 'get /pets 200 status.');
            responseSchema.validate(res.body, function (error) {
                t.ok(!error, 'Response schema valid.');
            });
            t.end();
        });
    });
    
    t.test('test post /pets', function (t) {
        

        request(app).post('/v1/pets')
        .end(function (err, res) {
            t.ok(!err, 'post /pets no error.');
            t.strictEqual(res.statusCode, 201, 'post /pets 201 status.');
            t.end();
        });
    });
    

});
test('api', function (t) {
    var app = express();
    
    app.use(require('body-parser')());

    app.use(swaggerize({
        api: require('../../apis/profiles.json'),
        handlers: path.join(__dirname, '../../handlers/profiles'),
    }));

    
    t.test('test GET /{profile}/{mac}', function (t) {
        
        t.plan(2);

        request(app).get('/profiles/helloworld/{mac}')
        .expect(200)
        .end(function (err, res) {
            t.ok(!err, 'get /{profile}/{mac} no error.');
            t.strictEqual(res.statusCode, 200, 'get /{profile}/{mac} 200 status.');
        });
    });
    
    t.test('test PUT /{profile}/{mac}', function (t) {
        var body = {"cloud_config":"helloworld","version":"helloworld","sshkey":"helloworld","rootfstype":"helloworld","coreos_autologin":"******"};
        t.plan(2);

        request(app).put('/profiles/helloworld/{mac}')
        .expect(200).send(body)
        .end(function (err, res) {
            t.ok(!err, 'put /{profile}/{mac} no error.');
            t.strictEqual(res.statusCode, 200, 'put /{profile}/{mac} 200 status.');
        });
    });
    

});
test('api', function (t) {
    var app = express();

    

    app.use(swaggerize({
        api: path.join(__dirname, './..\config\api.json'),
        handlers: path.join(__dirname, '..\handlers')
    }));

    
    t.test('test get /products/{id}/stock', function (t) {
        
        var responseSchema = enjoi({
            'type': "array", 
            'items': {"$ref":"#/definitions/ProductStock"}
        }, {
                subSchemas: {
                    '#':  require(Path.join(__dirname, './..\config\api.json')) 
                }
        });
        

        request(app).get('//products/helloworld/stock')
        .end(function (err, res) {
            t.ok(!err, 'get /products/{id}/stock no error.');
            t.strictEqual(res.statusCode, 200, 'get /products/{id}/stock 200 status.');
            responseSchema.validate(res.body, function (error) {
                t.ok(!error, 'Response schema valid.');
            });
            t.end();
        });
    });
    

});
示例#6
0
var http = require('http');
var express = require('express');
var bodyParser = require('body-parser');
var swaggerize = require('swaggerize-express');
var swaggerUi = require('swaggerize-ui'); // second change
var path = require('path');

var app = express();

var server = http.createServer(app);

app.use(bodyParser.json());

app.use(swaggerize({
    api: path.resolve('./config/swagger.json'), // third change
    handlers: path.resolve('./handlers'),
    docspath: '/swagger' // fourth change
}));

// change four
app.use('/docs', swaggerUi({
    docs: '/swagger'  
}));

server.listen(port, function () { // fifth and final change
});

// var Http = require('http');
// var Express = require('express');
// var BodyParser = require('body-parser');
// var Swaggerize = require('swaggerize-express');
示例#7
0
文件: server.js 项目: ksuralta/wr-api
'use strict';

var http = require('http');
var express = require('express');
var bodyParser = require('body-parser');
var swaggerize = require('swaggerize-express');
var path = require('path');

var app = express();

var server = http.createServer(app);

app.use(bodyParser.json());

app.use(swaggerize({
    api: path.resolve('./config/petstore.json'),
    handlers: path.resolve('./handlers')
}));

app.set('port', (process.env.PORT || 8000));

server.listen(app.get('port'), function () {
    app.swagger.api.host = server.address().address + ':' + server.address().port;
});
示例#8
0
autoIncrement.initialize(db);

passport.use(auth.localStrategy()); //Tell passport to use our newly created local strategy for authentication
passport.serializeUser((user, done) => {
    console.log(`serializeUser:${user._id}`);
    done(null, user._id);
});
passport.deserializeUser((id, done) => {
    console.log(`deserializeUser:${id}`);
    const User = require('./models/userModel');
    User.getLoginUser(id, (err, user) => done(err, user));
});

app.use(swaggerize({
    api: path.resolve('./config/swagger.json'),
    docspath: '/docs/swagger.json',
    handlers: path.resolve('./handlers')
}));

var server = http.createServer(app);

server.listen(isProduction ? 80 : 8000, ()=> {
        app.swagger.api.host = `${server.address().address}:${server.address().port}`;
        qiniu.conf.ACCESS_KEY = config.qiniu.accessKey;
        qiniu.conf.SECRET_KEY = config.qiniu.secretKey;
        config.isProduction = isProduction;

        redisQi.config('production' == app.get('env') || 'prelease' == app.get('env'));

        confPay.init();
App.use(BodyParser.json());
App.use(BodyParser.urlencoded({
  extended: true
}));

// DON'T TRY THIS AT HOME
const questions = [];
let currentQuestion = 0;

App.all('*', function(req, res, next) {
  req.questions = questions;
  req.getCurrentQuestion = () => {
    currentQuestion += 1;
    return currentQuestion;
  };
  next();
});

App.use(Swaggerize({
  api: Path.resolve('./config/swagger.yaml'),
  handlers: Path.resolve('./handlers')
}));

Server.listen(process.env.PORT || 5000, function () {
  App.swagger.api.host = this.address().address + ':' + this.address().port;
    /* eslint-disable no-console */
  console.log('App running on %s:%d', this.address().address, this.address().port);
    /* eslint-disable no-console */
});
        '$post': function(req, res) {
          app.availabilityRequestCancel(req.params, new Context(res));
        }
      },
      'all': {
        '$get': function(req, res) {
          app.availabilityRequestAll(req.params, new Context(res));
        }
      }
    }
  }

}

serverApp.use(swaggerize({
  api: path.resolve(__dirname, '../config/swagger.yaml'),
  handlers: handlers,
}));


function normalizePort(val) {
  const port = parseInt(val, 10);

  if (isNaN(port)) {
    // named pipe
    return val;
  }

  if (port >= 0) {
    // port number
    return port;
  }
示例#11
0
 'use strict';

var port = process.env.PORT || 4001;

 var http = require('http');
 var express = require('express');
 var bodyParser = require('body-parser');
 var swaggerize = require('swaggerize-express');
 var swaggerUi = require('swaggerize-ui'); // change one
 var path = require('path');

 var app = express();

 var server = http.createServer(app);

 app.use(bodyParser.json());

 app.use(swaggerize({
     api: path.resolve('./config/api.json'), // change two
     handlers: path.resolve('./handlers'),
     docspath: '/swagger/docs/v1' // change three
 }));

 // change four
 app.use('/swagger', swaggerUi({
   docs: '/swagger/docs/v1'  
 }));

 server.listen(port, function () {
     app.setHost(undefined); // change five
 });
示例#12
0
var swaggerize = require('swaggerize-express');
var path = require('path');
var db = require('./lib/lib_mongoose');

var app = express();

var server = http.createServer(app);

app.use(bodyParser.json());

app.configure = function configure(nconf, next) {
    //Configure the database
    db.config(nconf.get('./config/databaseConfig'));
    next(null);
};

app.use(swaggerize({
    api: path.resolve('./<%=apiPath%>'),
    handlers: path.resolve('./handlers')
}));

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

server.listen(8000, function () {
    app.setHost(server.address().address + ':' + server.address().port);
});
var Express = require('express');
var BodyParser = require('body-parser');
var Swaggerize = require('swaggerize-express');
var Path = require('path');
var swaggerUi = require('swaggerize-ui');

var App = Express();

var Server = Http.createServer(App);

App.use(BodyParser.json());
App.use(BodyParser.urlencoded({
    extended: true
}));

App.use(Swaggerize({
    api: Path.resolve('./config/swagger.json'),
    docspath: '/api-docs',
    handlers: Path.resolve('./handlers')
}));

App.use('/docs', swaggerUi({
    docs: '/v1/api-docs' // from the express route above.
}));

Server.listen(process.env.PORT || 8000, function () {
    App.swagger.api.host = this.address().address + ':' + this.address().port;
    /* eslint-disable no-console */
    console.log('App running on %s:%d', this.address().address, this.address().port);
    /* eslint-disable no-console */
});
示例#14
0
Test('/owner/{username}', function (t) {
    var apiPath = Path.resolve(__dirname, '../../config/swagger.json');
    var App = Express();
    App.use(BodyParser.json());
    App.use(BodyParser.urlencoded({
        extended: true
    }));
    App.use(Swaggerize({
        api: apiPath,
        handlers: Path.resolve(__dirname, '../../handlers'),
        security: Path.resolve(__dirname, '../../security')
    }));
    Parser.validate(apiPath, function (err, api) {
        t.error(err, 'No parse error');
        t.ok(api, 'Valid swagger api');
        /**
         * summary: Get owner by user name
         * description: 
         * parameters: username
         * produces: application/xml, application/json
         * responses: 200, 400, 404
         */
        t.test('test getOwnerByName get operation', function (t) {
            Mockgen().requests({
                path: '/owner/{username}',
                operation: 'get'
            }, function (err, mock) {
                var request;
                t.error(err);
                t.ok(mock);
                t.ok(mock.request);
                //Get the resolved path from mock request
                //Mock request Path templates({}) are resolved using path parameters
                request = Request(App)
                    .get('/v2' + mock.request.path);
                if (mock.request.body) {
                    //Send the request body
                    request = request.send(mock.request.body);
                } else if (mock.request.formData){
                    //Send the request form data
                    request = request.send(mock.request.formData);
                    //Set the Content-Type as application/x-www-form-urlencoded
                    request = request.set('Content-Type', 'application/x-www-form-urlencoded');
                }
                // If headers are present, set the headers.
                if (mock.request.headers && mock.request.headers.length > 0) {
                    Object.keys(mock.request.headers).forEach(function (headerName) {
                        request = request.set(headerName, mock.request.headers[headerName]);
                    });
                }
                request.end(function (err, res) {
                    t.error(err, 'No error');
                    t.ok(res.statusCode === 200, 'Ok response status');
                    var Validator = require('is-my-json-valid');
                    var validate = Validator(api.paths['/owner/{username}']['get']['responses']['200']['schema']);
                    var response = res.body;
                    if (Object.keys(response).length <= 0) {
                        response = res.text;
                    }
                    t.ok(validate(response), 'Valid response');
                    t.error(validate.errors, 'No validation errors');
                    t.end();
                });
            });
        });/**
         * summary: Updated owner
         * description: This can only be done by the logged in user.
         * parameters: username, body
         * produces: application/xml, application/json
         * responses: 400, 404
         */
        t.test('test updateOwner put operation', function (t) {
            Mockgen().requests({
                path: '/owner/{username}',
                operation: 'put'
            }, function (err, mock) {
                var request;
                t.error(err);
                t.ok(mock);
                t.ok(mock.request);
                //Get the resolved path from mock request
                //Mock request Path templates({}) are resolved using path parameters
                request = Request(App)
                    .put('/v2' + mock.request.path);
                if (mock.request.body) {
                    //Send the request body
                    request = request.send(mock.request.body);
                } else if (mock.request.formData){
                    //Send the request form data
                    request = request.send(mock.request.formData);
                    //Set the Content-Type as application/x-www-form-urlencoded
                    request = request.set('Content-Type', 'application/x-www-form-urlencoded');
                }
                // If headers are present, set the headers.
                if (mock.request.headers && mock.request.headers.length > 0) {
                    Object.keys(mock.request.headers).forEach(function (headerName) {
                        request = request.set(headerName, mock.request.headers[headerName]);
                    });
                }
                request.end(function (err, res) {
                    t.error(err, 'No error');
                    t.ok(res.statusCode === 400, 'Ok response status');
                    t.end();
                });
            });
        });/**
         * summary: Delete owner
         * description: This can only be done by the logged in user.
         * parameters: username
         * produces: application/xml, application/json
         * responses: 400, 404
         */
        t.test('test deleteOwner delete operation', function (t) {
            Mockgen().requests({
                path: '/owner/{username}',
                operation: 'delete'
            }, function (err, mock) {
                var request;
                t.error(err);
                t.ok(mock);
                t.ok(mock.request);
                //Get the resolved path from mock request
                //Mock request Path templates({}) are resolved using path parameters
                request = Request(App)
                    .delete('/v2' + mock.request.path);
                if (mock.request.body) {
                    //Send the request body
                    request = request.send(mock.request.body);
                } else if (mock.request.formData){
                    //Send the request form data
                    request = request.send(mock.request.formData);
                    //Set the Content-Type as application/x-www-form-urlencoded
                    request = request.set('Content-Type', 'application/x-www-form-urlencoded');
                }
                // If headers are present, set the headers.
                if (mock.request.headers && mock.request.headers.length > 0) {
                    Object.keys(mock.request.headers).forEach(function (headerName) {
                        request = request.set(headerName, mock.request.headers[headerName]);
                    });
                }
                request.end(function (err, res) {
                    t.error(err, 'No error');
                    t.ok(res.statusCode === 400, 'Ok response status');
                    t.end();
                });
            });
        });
    });
});