import {J,handleResponse,ResponseData,newResponseData} from "../../utils"; import { AppMaster } from "@onebro/appmaster"; import { Response } from "supertest"; import fs from "fs"; import md5 from "md5"; const binaryParser = (res:any,cb:Function) => { res.setEncoding("binary"); res.data = ""; res.on("data",(chunk:any) => res.data += chunk); res.on("end",() => cb(null,Buffer.from(res.data,"binary"))); }; export const finavigatorUploadsApiTests = () => J.desc("File Uploads",() => { const authApiPath = "/ob-auth/v1/en",authApiID = "00-ob-auth"; const finavigatorApiPath = "/finavigator/v1/en",finavigatorApiID = "02-finavigator"; let m:AppMaster,app:any,data:ResponseData,user:any;let testFilePath:string = null; it("init w/o errors",async () => { const o = await require("../../utils/init"); m = o.master; app = o.app; data = newResponseData();},1e9); it("Test: GET /ob-auth/v1/en/test-only [200]",async (done) => { await app .get(authApiPath+"/test-only") .set("Origin","https://oba-dev-apps.com") .set("oba-CLIENT-ID",authApiID) .set("oba-CLIENT-KEY","1873487748") .set("XSRF-TOKEN",data.csrfToken) .set("Cookie",data.cookieArr) .set("Accept","application/json") .expect("Content-Type",/json/) .expect(200) .expect((res:Response) => { data = handleResponse(data,res); done();});},1E9); it("Set User: POST /ob-auth/v1/en/set [200]",async (done) => { await app .post(authApiPath+"/set") .send({username:"jackswift"}) .set("Origin","https://oba-dev-apps.com") .set("oba-CLIENT-ID",authApiID) .set("oba-CLIENT-KEY","1873487748") .set("XSRF-TOKEN",data.csrfToken) .set("Cookie",data.cookieArr) .set("Accept","application/json") .expect("Content-Type",/json/) .expect(200) .expect((res:Response) => { data = handleResponse(data,res); user = res.body; done();});},1E9); it("Login: POST /ob-auth/v1/en/login [200]",async (done) => { await app .post(authApiPath+"/login") .send({pin:"0000"}) .set("Origin","https://oba-dev-apps.com") .set("oba-CLIENT-ID",authApiID) .set("oba-CLIENT-KEY","1873487748") .set("XSRF-TOKEN",data.csrfToken) .set("Cookie",data.cookieArr) .set("Accept","application/json") .set("Authorization","Bearer "+user.token) .expect("Content-Type",/json/) .expect(200) .expect((res:Response) => { data = handleResponse(data,res); user = res.body; //console.log(user); done();});},1E9); it("Create Profile: POST /finavigator/v1/en/profiles [200]",async (done) => { await app .post(finavigatorApiPath+"/profiles") .send({settings:{lang:"en"}}) .set("Origin","https://oba-dev-apps.com") .set("oba-CLIENT-ID",finavigatorApiID) .set("oba-CLIENT-KEY","1873487748") .set("Authorization","Bearer "+user.token) .set("XSRF-TOKEN",data.csrfToken) .set("Cookie",data.cookieArr) .set("Accept","application/json") .expect("Content-Type",/json/) .expect(201) .expect((res:Response) => { data = handleResponse(data,res); user.profile = res.body; done();});},1E9); it("Upload File: POST /finavigator/v1/en/uploads [200]",async (done) => { const filePath = `C:/Users/OneBrother/Desktop/jackswift.jpg`; //const exists = await fs.exists(filePath); //if(!exists) throw new Error("file does not exist"); await app .post(finavigatorApiPath+"/uploads") .set("Origin","https://oba-dev-apps.com") .set("oba-CLIENT-ID",finavigatorApiID) .set("oba-CLIENT-KEY","1873487748") .set("Authorization","Bearer "+user.token) .set("XSRF-TOKEN",data.csrfToken) .set("Cookie",data.cookieArr) .set("Accept","application/json") .expect("Content-Type",/json/) .attach("testdoc",filePath) .expect(201) .expect((res:Response) => { data = handleResponse(data,res); user.file = res.body; console.log(user.file); J.true(user.file.uploadDate); J.is(user.file.filename); done();});},1E9); it("Download File: GET /finavigator/v1/en/uploads/:id [200]",(done) => { const newName = Date.now().toString(); app .get(finavigatorApiPath+"/uploads/"+user.file.id) .set("Origin","https://oba-dev-apps.com") .set("oba-CLIENT-ID",finavigatorApiID) .set("oba-CLIENT-KEY","1873487748") .set("Authorization","Bearer "+user.token) .set("XSRF-TOKEN",data.csrfToken) .set("Cookie",data.cookieArr) //.set("Accept","application/json") .expect(200) .buffer() .parse(binaryParser) .end(async (err:Error,res:Response) => { //if(err) console.error(err); data = handleResponse(data,res); //console.log(res.header); J.is(res.status,200); J.is(res.header["content-type"]); J.is(res.header["content-type"],"image/jpeg"); J.is(res.header["transfer-encoding"],"chunked"); J.is(md5(res.body),user.file.md5); done(); });},1E9); /*it("Download2 File : GET /finavigator/v1/en/uploads/:id [200]",(done) => { const newName = Date.now().toString(); app .get(finavigatorApiPath+"/uploads/"+user.file.id) .set("Origin","https://oba-dev-apps.com") .set("oba-CLIENT-ID",finavigatorApiID) .set("oba-CLIENT-KEY","1873487748") .set("Authorization","Bearer "+user.token) .set("XSRF-TOKEN",data.csrfToken) .set("Cookie",data.cookieArr) //.set("Accept","application/json") .expect(200) .buffer() .parse(binaryParser) .end(async (err:Error,res:Response) => { //if(err) console.error(err); data = handleResponse(data,res); console.log(res.header); J.is(res.status,200); J.is(res.header["content-type"]); J.is(res.header["content-type"],"image/jpeg"); J.is(res.header["transfer-encoding"],"chunked"); J.is(md5(res.body),user.file.md5); done(); });},1E9); /*it("Rename File: PUT /finavigator/v1/en/uploads/f/rename [200]",async (done) => { const newName = Date.now().toString(); await app .put(finavigatorApiPath+"/uploads/"+user.file.id) .send({filename:newName}) .set("Origin","https://oba-dev-apps.com") .set("oba-CLIENT-ID",finavigatorApiID) .set("oba-CLIENT-KEY","1873487748") .set("Authorization","Bearer "+user.token) .set("XSRF-TOKEN",data.csrfToken) .set("Cookie",data.cookieArr) .set("Accept","application/json") .expect("Content-Type",/json/) .expect((res:Response) => { user.file = res.body; console.log(user.file); J.true(user.file.uploadDate); J.is(user.file.filename); done();});},1E9);*/ /*it("Remove File: DELETE /finavigator/v1/en/uploads/f/:filePath [200]", () => { return request(app) .delete(`/api/v1/documentations/${testFilePath}`) .then((res) => { const { success, message } = res.body; expect(success).toBeTruthy(); expect(message).toBe("Delete successfully"); }) .catch(err => console.log(err)); }); })*/ });