小编nod*_*oob的帖子

如何测试使用JWT身份验证的Node API(使用用户登录获取令牌)

TL; DR - 测试使用JWT进行身份验证的Node API(Express)中的资源的方法是什么,只有授予用户名/密码登录权限的令牌?

我对测试很陌生,想得到一些建议.最终目标是拥有一个经过全面测试的API,然后开始学习如何将其连接到持续集成解决方案.

使用的技术

  • 我使用ExpressNode中编写了一个API .
  • Mongo是数据库.
  • 猫鼬用作ODM.
  • jsonwebtoken包用于创建/验证令牌.
  • Passport用于在路由上轻松添加用户身份验证作为Express中间件.

API信息

API具有各种资源 - 其具体细节对于此查询并不重要,但为了简单起见,我们只是假装它是无处不在的Todo应用程序.

保存在数据库中的每个单独资源都与一个用户相关联.

API使用JWT在各种资源端点上进行身份验证.令牌本身包含唯一的用户ID,该用户ID是针对Mongo数据库中的资源存储的.要获取令牌本身,需要用户首先注册(返回令牌),然后登录以获取新令牌.

假装代码.

我将简化下面的代码,而不是使用任何环境配置等...

app.js

var express = require('express');
var app = express();
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var passport = require('passport');

mongoose.connect('mongodb://localhost/somedatabasename');

app.set('port', process.env.PORT || 3000);
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

app.use(passport.initialize());
// ... Passport JWT Strategy goes here - omitted for simplicity ...

var userRouter = require('./api/users/routes');
app.use('/users', userRouter);
var …
Run Code Online (Sandbox Code Playgroud)

testing api mocha.js node.js

14
推荐指数
1
解决办法
2400
查看次数

Node(Express&Mongo)应用程序的生产与开发Docker设置

我正在尝试将Node应用程序转换为使用Docker但遇到一些我无法回答的问题/问题.

但为了简单起见,我已经包含了一些非常基本的示例文件来保持目标问题.实际上,下面的示例仅链接到Mongo容器,但不在代码中使用它以使其更简单.

首先,在本地(OS X)开发和生产版本的Node + Express + Mongo应用程序上成功使用Docker需要什么Dockerfiledocker-compose.yml设置?

Dockerfile

FROM node:6.3.0

# Create new user to avoid using root - is this correct practise?
RUN useradd --user-group --create-home --shell /bin/false app

COPY package.json /home/app/code/
RUN chown -R app:app /home/app/*

USER app
WORKDIR /home/app/code
# Should this even be set here or use docker-compose instead?
# And should there be:
#  - docker-compose.yml setting it to production by default
#  - docker-compose.dev.yml setting it to production?
# …
Run Code Online (Sandbox Code Playgroud)

node.js docker

7
推荐指数
1
解决办法
1652
查看次数

如何使用 Sinon 对 Node API 进行单元测试(Express with Mongo DB)

我正在使用 Node 创建一个 API,但我正在努力理解如何正确地对 API 进行单元测试。API 本身使用 Express 和 Mongo(使用 Mongoose)。

到目前为止,我已经能够为 API 端点本身的端到端测试创建集成测试。我已经使用 supertest、mocha 和 chai 进行集成测试,同时使用 dotenv 在运行时使用测试数据库。npm 测试脚本在集成测试运行之前设置要测试的环境。它工作得很好。

但我还想为各种组件(例如控制器功能)创建单元测试。

我很想使用 Sinon 进行单元测试,但我很难知道接下来要采取什么步骤。

我将详细介绍重写为每个人最喜欢的 Todos 的 API 的通用版本。

该应用程序具有以下目录结构:

api
|- todo
|   |- controller.js
|   |- model.js
|   |- routes.js
|   |- serializer.js
|- test
|   |- integration
|   |  |- todos.js
|   |- unit
|   |  |- todos.js
|- index.js
|- package.json
Run Code Online (Sandbox Code Playgroud)

包.json

{
  "name": "todos",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "directories": {
    "doc": "docs" …
Run Code Online (Sandbox Code Playgroud)

unit-testing node.js

6
推荐指数
1
解决办法
3303
查看次数

标签 统计

node.js ×3

api ×1

docker ×1

mocha.js ×1

testing ×1

unit-testing ×1