Как я могу протестировать CLI oclif, который использует Rest API - PullRequest
0 голосов
/ 28 февраля 2020

Как я могу протестировать следующую сборку кода с использованием Typescript в Oclif? Этот CLI использует сборку API остальных с node.js и express. js. Я тестирую свой API с мокко / чай, с которым я познакомился. Однако на сайте oclif я видел пример тестирования, но, кроме того, нет никакой реальной помощи в тестировании. Как я могу проверить следующий код, который является командой из моего Cli?

import cli from 'cli-ux'
// just prompt for input
import {Command} from '@oclif/command'
import {createConnection} from "typeorm";
import {flags} from  '@oclif/command'
const bcrypt = require('bcrypt');
var fs=require('fs');
const https = require('https')
const axios=require('axios');
const client_cert = fs.readFileSync('ca-crt.pem')
axios.defaults.httpsAgent = new https.Agent({ca : client_cert, keepAlive: true})
export class AdminCommand extends Command {
  static flags = { 
    newuser: flags.string({dependsOn:['passw'],exclusive:['newdata','userstatus','moduser']}),
    moduser: flags.string({dependsOn:['passw'],exclusive:['newuser','newdata','userstatus']}),
    passw: flags.string({dependsOn:['email']}),
    email: flags.string({dependsOn:['quota']}),
    quota: flags.string(),
    userstatus: flags.string({exclusive:['newdata','newuser','moduser']}),
    newdata: flags.string({dependsOn:['source'],exclusive:['userstatus','newuser','moduser']}),
    source: flags.string()
  }
  async run() {
    const {flags} = this.parse(AdminCommand); 
    var fs=require('fs');
    var jwt=require('jsonwebtoken');
    var token = fs.readFileSync('softeng19bAPI.token','utf-8');
    axios.defaults.headers.common['X-OBSERVATORY-AUTH']=token;
    await cli.anykey();
    //create new user
    if (`${flags.newuser}` !== "undefined" && `${flags.passw}` !== "undefined" && `${flags.email}` !== "undefined" && `${flags.quota}` !== "undefined" ){
            let hash = bcrypt.hashSync(`${flags.passw}`,10);
            let body = new Object ({
                username: `${flags.newuser}`,
                passw: `${flags.passw}`,
                email: `${flags.email}`,
                quota: `${flags.quota}` 
            })
            await axios.post('https://localhost:8765/energy/api/Admin/users',body);

    } }
...