123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 |
- import tcb from '../../src/index'
- import assert, { rejects } from 'assert'
- import config from '../config.local'
- import { SYMBOL_CURRENT_ENV } from '../../src/const/symbol'
- import { create } from 'domain'
- const app = tcb.init({
- ...config,
- credentials: {
- private_key_id: 'da86590d-dd17-45bd-84df-433f05612d0a',
- private_key:
- '-----BEGIN RSA PRIVATE KEY-----\nMIICXAIBAAKBgQDNo9vk/GFDkihEJv5SbN4zQKW9OAjf4C2Z13eGYxLYIYhwNDi5\nl2O5+NLpPzH4Q839ULJIYQ6hfBAVO7mvQ+WP2oYeIqQyRe9NkDlCLmJ10SDwGQRq\nqekVHbz+2fIugxJf3BqIDX3nSHC4TkZZldSgZJIBwIUI5h0t2/IqEjFaHwIDAQAB\nAoGBALdRZrrIPhDVn2258Sgbgy3faKC47jhdiWlGinfTpD3mDtIvy42vJqjn52Uk\n/+/Yyi4THQum8jsE9PVoy8wxU9eDJN4AVjNf8Y98a/z8FCEVyXsvUPp4+Y9pPSmd\nmZe6JKU3mDTXtQDMrtZlkSHVGhSCo/vLMccrAdus8DEnWD0BAkEA2scDuCx9qb4A\nHs8t2j1jL483lsTT8dV8bX5UCwIpOP8jCgQmBbxIyL3/IIwonS7eRSeUDhh2aim+\ng2uhxqSygQJBAPCgo9jOQ/uwy2YjSOE3r6Q1gDCfclvY9z2Xb2IH0AZg529l2rg2\nqh3PPFEB7dBxzNimu9rhDG+dre61ilNwfJ8CQFrCfTSGoIsum3YslOUY2nD8hR8z\nAIou+rOh2NPITbmrfqnFFtECT1+YEqM6Ag9TRjqCNNW0KEvajYKPwElcQgECQHQj\nJFGM5FUDNHh8iT1iUhywUcml+10HL/WDNJgc6zNY6/rhLxqAD8VJc3QpuS1E77iV\naM+wlP7+HKe86SFyhkMCQFWmIveCeb0U0MTHV+Uem1vYWu5gLwSRvvvQlBiTx8Nb\ngLo8C8GxW6uCVPxk4gqnvwVSIN8sBfxQksHMOU3zQYo=\n-----END RSA PRIVATE KEY-----\n'
- // env_id: 'luke-87pns'
- }
- })
- describe('auth 不注入环境变量', () => {
- it('校验uid', async () => {
- let uid
- try {
- uid = 1
- app.auth().createTicket(uid)
- } catch (e) {
- assert(e.message === 'uid must be a string')
- }
- try {
- uid = '1'
- app.auth().createTicket(uid)
- } catch (e) {
- assert(e.message === `Invalid uid: "${uid}"`)
- }
- })
- })
- describe('auth 注入环境变量', () => {
- // it('生成登录ticket', async () => {
- // const result = app.auth().createTicket('oyeju0Eoc1ZCEgyxfk2vNeYDMpRs', {
- // refresh: 5000
- // })
- // assert(result)
- // }, 30000)
- // it('生成登录ticket 不传refresh', async () => {
- // const result = app.auth().createTicket('oyeju0Eoc1ZCEgyxfk2vNeYDMpRs')
- // assert(result)
- // }, 30000)
- it('不注入环境变量 默认取空字符串', async () => {
- process.env.WX_OPENID = ''
- process.env.WX_APPID = ''
- process.env.TCB_UUID = ''
- process.env.TCB_CUSTOM_USER_ID = ''
- process.env.TCB_SOURCE_IP = ''
- assert.deepStrictEqual(app.auth().getUserInfo(), {
- openId: '',
- appId: '',
- uid: '',
- customUserId: '',
- isAnonymous: false
- })
- assert.deepStrictEqual(app.auth().getClientIP(), '')
- assert.deepStrictEqual(app.auth().getEndUserInfo(), {
- userInfo: {
- openId: '',
- appId: '',
- uid: '',
- customUserId: '',
- isAnonymous: false
- }
- })
- })
- it('mock getEndUserInfo return code', async () => {
- jest.resetModules()
- jest.mock('request', () => {
- return jest.fn().mockImplementation((params, callback) => {
- const body = { code: 'mockCode', message: 'mockMessage' }
- process.nextTick(() => {
- callback(null, { req: {reusedSocket: false}, statusCode: 200, body })
- })
- })
- })
- const tcb1 = require('../../src/index')
- const app1 = tcb1.init({
- ...config,
- credentials: {
- private_key_id: 'da86590d-dd17-45bd-84df-433f05612d0a',
- private_key:
- '-----BEGIN RSA PRIVATE KEY-----\nMIICXAIBAAKBgQDNo9vk/GFDkihEJv5SbN4zQKW9OAjf4C2Z13eGYxLYIYhwNDi5\nl2O5+NLpPzH4Q839ULJIYQ6hfBAVO7mvQ+WP2oYeIqQyRe9NkDlCLmJ10SDwGQRq\nqekVHbz+2fIugxJf3BqIDX3nSHC4TkZZldSgZJIBwIUI5h0t2/IqEjFaHwIDAQAB\nAoGBALdRZrrIPhDVn2258Sgbgy3faKC47jhdiWlGinfTpD3mDtIvy42vJqjn52Uk\n/+/Yyi4THQum8jsE9PVoy8wxU9eDJN4AVjNf8Y98a/z8FCEVyXsvUPp4+Y9pPSmd\nmZe6JKU3mDTXtQDMrtZlkSHVGhSCo/vLMccrAdus8DEnWD0BAkEA2scDuCx9qb4A\nHs8t2j1jL483lsTT8dV8bX5UCwIpOP8jCgQmBbxIyL3/IIwonS7eRSeUDhh2aim+\ng2uhxqSygQJBAPCgo9jOQ/uwy2YjSOE3r6Q1gDCfclvY9z2Xb2IH0AZg529l2rg2\nqh3PPFEB7dBxzNimu9rhDG+dre61ilNwfJ8CQFrCfTSGoIsum3YslOUY2nD8hR8z\nAIou+rOh2NPITbmrfqnFFtECT1+YEqM6Ag9TRjqCNNW0KEvajYKPwElcQgECQHQj\nJFGM5FUDNHh8iT1iUhywUcml+10HL/WDNJgc6zNY6/rhLxqAD8VJc3QpuS1E77iV\naM+wlP7+HKe86SFyhkMCQFWmIveCeb0U0MTHV+Uem1vYWu5gLwSRvvvQlBiTx8Nb\ngLo8C8GxW6uCVPxk4gqnvwVSIN8sBfxQksHMOU3zQYo=\n-----END RSA PRIVATE KEY-----\n'
- }
- })
- expect(app1.auth().getEndUserInfo('c7446481324445a0bca211d747281ca3')).rejects.toThrow(
- new Error('mockMessage')
- )
- const app2 = tcb1.init({
- ...config,
- credentials: {
- private_key_id: 'da86590d-dd17-45bd-84df-433f05612d0a',
- private_key:
- '-----BEGIN RSA PRIVATE KEY-----\nMIICXAIBAAKBgQDNo9vk/GFDkihEJv5SbN4zQKW9OAjf4C2Z13eGYxLYIYhwNDi5\nl2O5+NLpPzH4Q839ULJIYQ6hfBAVO7mvQ+WP2oYeIqQyRe9NkDlCLmJ10SDwGQRq\nqekVHbz+2fIugxJf3BqIDX3nSHC4TkZZldSgZJIBwIUI5h0t2/IqEjFaHwIDAQAB\nAoGBALdRZrrIPhDVn2258Sgbgy3faKC47jhdiWlGinfTpD3mDtIvy42vJqjn52Uk\n/+/Yyi4THQum8jsE9PVoy8wxU9eDJN4AVjNf8Y98a/z8FCEVyXsvUPp4+Y9pPSmd\nmZe6JKU3mDTXtQDMrtZlkSHVGhSCo/vLMccrAdus8DEnWD0BAkEA2scDuCx9qb4A\nHs8t2j1jL483lsTT8dV8bX5UCwIpOP8jCgQmBbxIyL3/IIwonS7eRSeUDhh2aim+\ng2uhxqSygQJBAPCgo9jOQ/uwy2YjSOE3r6Q1gDCfclvY9z2Xb2IH0AZg529l2rg2\nqh3PPFEB7dBxzNimu9rhDG+dre61ilNwfJ8CQFrCfTSGoIsum3YslOUY2nD8hR8z\nAIou+rOh2NPITbmrfqnFFtECT1+YEqM6Ag9TRjqCNNW0KEvajYKPwElcQgECQHQj\nJFGM5FUDNHh8iT1iUhywUcml+10HL/WDNJgc6zNY6/rhLxqAD8VJc3QpuS1E77iV\naM+wlP7+HKe86SFyhkMCQFWmIveCeb0U0MTHV+Uem1vYWu5gLwSRvvvQlBiTx8Nb\ngLo8C8GxW6uCVPxk4gqnvwVSIN8sBfxQksHMOU3zQYo=\n-----END RSA PRIVATE KEY-----\n'
- },
- throwOnCode: false
- })
- const res = await app2.auth().getEndUserInfo('c7446481324445a0bca211d747281ca3')
- assert.ok(res.code === 'mockCode')
- })
- it('mock auth.getUserInfoForAdmin 接口报错', async () => {
- const uid = 'luke123'
- expect(app.auth().getEndUserInfo(uid)).rejects.toThrow(
- new Error('[100007] user_do_not_exist')
- )
- })
- it('获取用户信息getUserInfo 不传入uid', () => {
- process.env.WX_OPENID = 'WX_OPENID'
- process.env.WX_APPID = 'WX_APPID'
- process.env.TCB_UUID = 'TCB_UUID'
- process.env.TCB_CUSTOM_USER_ID = 'TCB_CUSTOM_USER_ID'
- process.env.TCB_ISANONYMOUS_USER = 'true'
- process.env.TCB_CONTEXT_KEYS = 'TCB_UUID,TCB_CUSTOM_USER_ID,TCB_ISANONYMOUS_USER'
- process.env.WX_CONTEXT_KEYS = 'WX_OPENID,WX_APPID'
- assert.deepStrictEqual(app.auth().getUserInfo(), {
- openId: 'WX_OPENID',
- appId: 'WX_APPID',
- uid: 'TCB_UUID',
- customUserId: 'TCB_CUSTOM_USER_ID',
- isAnonymous: true
- })
- })
- it('获取云开发用户信息 getEndUserInfo 传入uid', async () => {
- try {
- const { userInfo } = await app.auth().getEndUserInfo('c7446481324445a0bca211d747281ca3')
- const keysAreValid = [
- 'openId',
- 'appId',
- 'uid',
- 'customUserId',
- 'isAnonymous',
- 'envName',
- 'nickName',
- 'gender',
- 'country',
- 'province',
- 'city',
- 'avatarUrl',
- 'uuid',
- 'wxOpenid',
- 'wxOpenId',
- 'wxUnionId',
- 'wxPublicId',
- 'qqMiniOpenId',
- 'email',
- 'hasPassword',
- 'username',
- 'createTime',
- 'updateTime'
- ].every(key => userInfo.hasOwnProperty(key))
- assert.ok(keysAreValid)
- } catch (error) {
- assert.ok(error instanceof Error)
- }
- })
- it('获取客户端IP', async () => {
- process.env.TCB_SOURCE_IP = 'TCB_SOURCE_IP'
- process.env.TCB_CONTEXT_KEYS = 'TCB_SOURCE_IP'
- assert.deepStrictEqual(app.auth().getClientIP(), 'TCB_SOURCE_IP')
- })
- it('校验createTicket 时,init config 不含 env', async () => {
- const app1 = tcb.init({
- ...config,
- credentials: {
- private_key_id: 'da86590d-dd17-45bd-84df-433f05612d0a',
- private_key:
- '-----BEGIN RSA PRIVATE KEY-----\nMIICXAIBAAKBgQDNo9vk/GFDkihEJv5SbN4zQKW9OAjf4C2Z13eGYxLYIYhwNDi5\nl2O5+NLpPzH4Q839ULJIYQ6hfBAVO7mvQ+WP2oYeIqQyRe9NkDlCLmJ10SDwGQRq\nqekVHbz+2fIugxJf3BqIDX3nSHC4TkZZldSgZJIBwIUI5h0t2/IqEjFaHwIDAQAB\nAoGBALdRZrrIPhDVn2258Sgbgy3faKC47jhdiWlGinfTpD3mDtIvy42vJqjn52Uk\n/+/Yyi4THQum8jsE9PVoy8wxU9eDJN4AVjNf8Y98a/z8FCEVyXsvUPp4+Y9pPSmd\nmZe6JKU3mDTXtQDMrtZlkSHVGhSCo/vLMccrAdus8DEnWD0BAkEA2scDuCx9qb4A\nHs8t2j1jL483lsTT8dV8bX5UCwIpOP8jCgQmBbxIyL3/IIwonS7eRSeUDhh2aim+\ng2uhxqSygQJBAPCgo9jOQ/uwy2YjSOE3r6Q1gDCfclvY9z2Xb2IH0AZg529l2rg2\nqh3PPFEB7dBxzNimu9rhDG+dre61ilNwfJ8CQFrCfTSGoIsum3YslOUY2nD8hR8z\nAIou+rOh2NPITbmrfqnFFtECT1+YEqM6Ag9TRjqCNNW0KEvajYKPwElcQgECQHQj\nJFGM5FUDNHh8iT1iUhywUcml+10HL/WDNJgc6zNY6/rhLxqAD8VJc3QpuS1E77iV\naM+wlP7+HKe86SFyhkMCQFWmIveCeb0U0MTHV+Uem1vYWu5gLwSRvvvQlBiTx8Nb\ngLo8C8GxW6uCVPxk4gqnvwVSIN8sBfxQksHMOU3zQYo=\n-----END RSA PRIVATE KEY-----\n'
- // env_id: 'luke-87pns'
- },
- env: ''
- })
- expect(() => {
- app1.auth().createTicket('luke123')
- }).toThrow(new Error('no env in config'))
- })
- it('校验createTicket时,init config 为 symbol_current_env', async () => {
- process.env.SCF_NAMESPACE = 'luke-87pns'
- const app1 = tcb.init({
- ...config,
- credentials: {
- private_key_id: 'da86590d-dd17-45bd-84df-433f05612d0a',
- private_key:
- '-----BEGIN RSA PRIVATE KEY-----\nMIICXAIBAAKBgQDNo9vk/GFDkihEJv5SbN4zQKW9OAjf4C2Z13eGYxLYIYhwNDi5\nl2O5+NLpPzH4Q839ULJIYQ6hfBAVO7mvQ+WP2oYeIqQyRe9NkDlCLmJ10SDwGQRq\nqekVHbz+2fIugxJf3BqIDX3nSHC4TkZZldSgZJIBwIUI5h0t2/IqEjFaHwIDAQAB\nAoGBALdRZrrIPhDVn2258Sgbgy3faKC47jhdiWlGinfTpD3mDtIvy42vJqjn52Uk\n/+/Yyi4THQum8jsE9PVoy8wxU9eDJN4AVjNf8Y98a/z8FCEVyXsvUPp4+Y9pPSmd\nmZe6JKU3mDTXtQDMrtZlkSHVGhSCo/vLMccrAdus8DEnWD0BAkEA2scDuCx9qb4A\nHs8t2j1jL483lsTT8dV8bX5UCwIpOP8jCgQmBbxIyL3/IIwonS7eRSeUDhh2aim+\ng2uhxqSygQJBAPCgo9jOQ/uwy2YjSOE3r6Q1gDCfclvY9z2Xb2IH0AZg529l2rg2\nqh3PPFEB7dBxzNimu9rhDG+dre61ilNwfJ8CQFrCfTSGoIsum3YslOUY2nD8hR8z\nAIou+rOh2NPITbmrfqnFFtECT1+YEqM6Ag9TRjqCNNW0KEvajYKPwElcQgECQHQj\nJFGM5FUDNHh8iT1iUhywUcml+10HL/WDNJgc6zNY6/rhLxqAD8VJc3QpuS1E77iV\naM+wlP7+HKe86SFyhkMCQFWmIveCeb0U0MTHV+Uem1vYWu5gLwSRvvvQlBiTx8Nb\ngLo8C8GxW6uCVPxk4gqnvwVSIN8sBfxQksHMOU3zQYo=\n-----END RSA PRIVATE KEY-----\n',
- env_id: 'luke-87pns'
- },
- env: SYMBOL_CURRENT_ENV
- })
- const createTicketRes = app1.auth().createTicket('luke123')
- assert.ok(typeof createTicketRes === 'string')
- process.env.TCB_ENV = ''
- })
- it('校验credentials 不含env', async () => {
- let result
- try {
- result = app.auth().createTicket('oyeju0Eoc1ZCEgyxfk2vNeYDMpRs')
- } catch (e) {
- assert(e.code === 'INVALID_PARAM')
- }
- })
- it('校验credentials 含 env 且 与 init env不一致', async () => {
- const app1 = tcb.init({
- ...config,
- credentials: {
- private_key_id: 'da86590d-dd17-45bd-84df-433f05612d0a',
- private_key:
- '-----BEGIN RSA PRIVATE KEY-----\nMIICXAIBAAKBgQDNo9vk/GFDkihEJv5SbN4zQKW9OAjf4C2Z13eGYxLYIYhwNDi5\nl2O5+NLpPzH4Q839ULJIYQ6hfBAVO7mvQ+WP2oYeIqQyRe9NkDlCLmJ10SDwGQRq\nqekVHbz+2fIugxJf3BqIDX3nSHC4TkZZldSgZJIBwIUI5h0t2/IqEjFaHwIDAQAB\nAoGBALdRZrrIPhDVn2258Sgbgy3faKC47jhdiWlGinfTpD3mDtIvy42vJqjn52Uk\n/+/Yyi4THQum8jsE9PVoy8wxU9eDJN4AVjNf8Y98a/z8FCEVyXsvUPp4+Y9pPSmd\nmZe6JKU3mDTXtQDMrtZlkSHVGhSCo/vLMccrAdus8DEnWD0BAkEA2scDuCx9qb4A\nHs8t2j1jL483lsTT8dV8bX5UCwIpOP8jCgQmBbxIyL3/IIwonS7eRSeUDhh2aim+\ng2uhxqSygQJBAPCgo9jOQ/uwy2YjSOE3r6Q1gDCfclvY9z2Xb2IH0AZg529l2rg2\nqh3PPFEB7dBxzNimu9rhDG+dre61ilNwfJ8CQFrCfTSGoIsum3YslOUY2nD8hR8z\nAIou+rOh2NPITbmrfqnFFtECT1+YEqM6Ag9TRjqCNNW0KEvajYKPwElcQgECQHQj\nJFGM5FUDNHh8iT1iUhywUcml+10HL/WDNJgc6zNY6/rhLxqAD8VJc3QpuS1E77iV\naM+wlP7+HKe86SFyhkMCQFWmIveCeb0U0MTHV+Uem1vYWu5gLwSRvvvQlBiTx8Nb\ngLo8C8GxW6uCVPxk4gqnvwVSIN8sBfxQksHMOU3zQYo=\n-----END RSA PRIVATE KEY-----\n',
- // env_id: 'luke-87pns'
- env_id: 'luketest-0nmm1'
- }
- })
- let result
- try {
- result = app1.auth().createTicket('oyeju0Eoc1ZCEgyxfk2vNeYDMpRs')
- } catch (e) {
- assert(e.code === 'INVALID_PARAM')
- }
- })
- it('校验credentials 含 env 且 与 init env 一致', async () => {
- const app1 = tcb.init({
- ...config,
- credentials: {
- private_key_id: 'da86590d-dd17-45bd-84df-433f05612d0a',
- private_key:
- '-----BEGIN RSA PRIVATE KEY-----\nMIICXAIBAAKBgQDNo9vk/GFDkihEJv5SbN4zQKW9OAjf4C2Z13eGYxLYIYhwNDi5\nl2O5+NLpPzH4Q839ULJIYQ6hfBAVO7mvQ+WP2oYeIqQyRe9NkDlCLmJ10SDwGQRq\nqekVHbz+2fIugxJf3BqIDX3nSHC4TkZZldSgZJIBwIUI5h0t2/IqEjFaHwIDAQAB\nAoGBALdRZrrIPhDVn2258Sgbgy3faKC47jhdiWlGinfTpD3mDtIvy42vJqjn52Uk\n/+/Yyi4THQum8jsE9PVoy8wxU9eDJN4AVjNf8Y98a/z8FCEVyXsvUPp4+Y9pPSmd\nmZe6JKU3mDTXtQDMrtZlkSHVGhSCo/vLMccrAdus8DEnWD0BAkEA2scDuCx9qb4A\nHs8t2j1jL483lsTT8dV8bX5UCwIpOP8jCgQmBbxIyL3/IIwonS7eRSeUDhh2aim+\ng2uhxqSygQJBAPCgo9jOQ/uwy2YjSOE3r6Q1gDCfclvY9z2Xb2IH0AZg529l2rg2\nqh3PPFEB7dBxzNimu9rhDG+dre61ilNwfJ8CQFrCfTSGoIsum3YslOUY2nD8hR8z\nAIou+rOh2NPITbmrfqnFFtECT1+YEqM6Ag9TRjqCNNW0KEvajYKPwElcQgECQHQj\nJFGM5FUDNHh8iT1iUhywUcml+10HL/WDNJgc6zNY6/rhLxqAD8VJc3QpuS1E77iV\naM+wlP7+HKe86SFyhkMCQFWmIveCeb0U0MTHV+Uem1vYWu5gLwSRvvvQlBiTx8Nb\ngLo8C8GxW6uCVPxk4gqnvwVSIN8sBfxQksHMOU3zQYo=\n-----END RSA PRIVATE KEY-----\n',
- env_id: 'luke-87pns'
- }
- })
- let result = app1.auth().createTicket('oyeju0Eoc1ZCEgyxfk2vNeYDMpRs')
- // console.log(result)
- assert(result)
- })
- })
|