wechat-open-service
Version:
apis set for wechat open platform 3rd-party service 微信开放平台的第三方平台接口
123 lines (109 loc) • 3.82 kB
JavaScript
// api_common.test.js
var expect = require('expect.js');
var urllib = require('urllib');
var muk = require('muk');
var config = require('./config');
var API = require('../');
describe('api_common.js', function () {
describe('mixin', function () {
it('should ok', function () {
API.mixin({sayHi: function () {}});
expect(API.prototype).to.have.property('sayHi');
});
it('should not ok when override method', function () {
var obj = {sayHi: function () {}};
expect(API.mixin).withArgs(obj).to.throwException(/Don't allow override existed prototype method\./);
});
});
describe('getSuiteToken', function () {
it('should ok', function (done) {
var api = new API(config.suite_id, config.suite_secert, config.suite_ticket);
api.getSuiteToken(function (err, token) {
expect(err).not.to.be.ok();
expect(token).to.only.have.keys('accessToken');
done();
});
});
it('should not ok', function (done) {
var api = new API('corpid', 'corpsecret', 'suite_ticket');
api.getSuiteToken(function (err, token) {
expect(err).to.be.ok();
expect(err).to.have.property('name', 'WeChatAPIError');
expect(err).to.have.property('code', 40013);
expect(err).to.have.property('message', 'invalid corpid');
done();
});
});
describe('mock urllib err', function () {
before(function () {
muk(urllib, 'request', function (url, args, callback) {
var err = new Error('Urllib Error');
err.name = 'UrllibError';
callback(err);
});
});
after(function () {
muk.restore();
});
it('should get mock error', function (done) {
var api = new API('appid', 'secret', 'suite_ticket');
api.getSuiteToken(function (err, token) {
expect(err).to.be.ok();
expect(err.name).to.be('WeChatAPIUrllibError');
expect(err.message).to.be('Urllib Error');
done();
});
});
});
describe('mock token', function () {
before(function () {
muk(urllib, 'request', function (url, args, callback) {
process.nextTick(function () {
callback(null, {"access_token": "ACCESS_TOKEN","expires_in": 7200});
});
});
});
after(function () {
muk.restore();
});
it('should ok', function (done) {
var api = new API('appid', 'secret');
api.getSuiteToken(function (err, token) {
expect(err).to.not.be.ok();
expect(token).to.have.property('accessToken', 'ACCESS_TOKEN');
done();
});
});
});
});
describe('getLatestToken', function () {
it('should ok', function (done) {
var api = new API(config.corpid, config.corpsecret, config.suite_ticket);
api.getLatestToken(function (err, token) {
expect(err).not.to.be.ok();
expect(token).to.only.have.keys('accessToken');
done();
});
});
it('should get mock error', function (done) {
var api = new API(config.corpid, config.corpsecret, config.suite_ticket, 1, function (callback) {
callback(new Error('mock error'));
});
api.getLatestToken(function (err, token) {
expect(err).to.be.ok();
expect(err).to.have.property('message', 'mock error');
done();
});
});
it('should get ok', function (done) {
var api = new API(config.corpid, config.corpsecret, config.suite_ticket, 1, function (callback) {
callback(null, {accessToken: 'token'});
});
api.getLatestToken(function (err, token) {
expect(err).not.to.be.ok();
expect(token).to.have.property('accessToken', 'token');
done();
});
});
});
});