首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用自定义登录处理程序自动登录服务器进行Meteor集成测试

如何使用自定义登录处理程序自动登录服务器进行Meteor集成测试
EN

Stack Overflow用户
提问于 2019-04-08 17:04:29
回答 1查看 92关注 0票数 0

我正在使用Mocha和Chai为我的Meteor应用程序编写集成测试。这些测试仅针对服务器功能。

我可以用Sinon伪造一个Meteor用户,但理想情况下,我想从真正的用户登录开始。然而,我不知道如何在服务器上做到这一点。

我正在远程服务器上进行身份验证;

服务器代码:

代码语言:javascript
复制
Accounts.registerLoginHandler((loginRequest) => {
    if ((remoteAuthenticate(loginRequest.username, loginRequest.password)) === true) {
        // remoteAuthenticate is a function that handles login against the remote server
        ...
        // handle login success and failure
    }
});

在客户机上调用它,如下所示:

代码语言:javascript
复制
Accounts.callLoginMethod({
    'methodArguments': [{
        'username': username,
        'password': password,
    }],
    'userCallback': function (err) {
        if (err) {
            Session.set('invalidCredentials', true);
        }
    },
});

从客户端登录可以很好地工作,但我不知道如何在测试中直接在服务器上调用Login方法。似乎没有Meteor或Accounts方法可以做到这一点。谢谢你的建议!

EN

回答 1

Stack Overflow用户

发布于 2019-04-15 02:42:07

假设已经创建了用户,您可以使用DDP连接和一个名为ongoworks:ddp-login的包从远程进行身份验证。它被设计为同时在服务器和客户端工作。

首先将包添加到您的项目中:

代码语言:javascript
复制
meteor add ongoworks:ddp-login

然后在测试中创建连接,并将其传递给登录调用:

代码语言:javascript
复制
const url = https://your.server.tld
const connection = DDP.connect(url);

// describe login

it('logs in to the remote if the user exists', function (done) {
  DDP.loginWithPassword(conn, {username: 'admin'}, 'admin', function (error) {
    if (error) {
      done(error)
    } else {
      done() 
    }
  })
})

connection实例的行为类似于您的Meteor全局实例,它本身在缺省情况下总是配置了一个默认连接。

例如:如果您需要使用登录用户从远程调用方法,您可以使用connection实例来调用这些方法:

代码语言:javascript
复制
// describe method x
it('returns some value', function (done) {
  DDP.loginWithPassword(conn, {username: 'admin'}, 'admin', function (error) {
    // handle error...
    connection.call('method x', (err, res) => { /* handle err / res */ })
  })
})

资源:

https://atmospherejs.com/ongoworks/ddp-login

https://docs.meteor.com/api/connections.html#DDP-connect

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55569762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档