import {desc,is,type,arr,gt,trueish,handleResponse,ResponseData,eq} from "../../utils"; import { AppMaster } from "@onebro/appmaster"; import { Response } from "supertest"; export const statsApiTests = () => desc("HCL Stats API",() => { let m:AppMaster,app:any,data:ResponseData,user:any; it("init w/o errors",async () => { const o = await require("../../utils/init"); m = o.master; app = o.app;},9999); it("GET / 200 - Api Home OK [Get Csrf Token]",async (done) => { await app .get(m.routes[0].path) .set("Origin","https://hcl-api.com") .set("HCL-CLIENT-ID","hcl-api") .set("HCL-CLIENT-KEY","1873487748") .set("XSRF-TOKEN",data.csrfToken) .set('Cookie',data.cookieArr) .set("Accept","application/json") .expect("Content-Type",/json/) .expect(200) .expect(async (res:Response) => { data = handleResponse(data,res); done();});},99999); it("POST /auth/set 200 - Set OK [Returning User]",async (done) => { await app .post(m.routes[0].path+"/auth/set") .send({username:"jackswift"}) .set("Origin","https://hcl-api.com") .set("HCL-CLIENT-ID","hcl-api") .set("HCL-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();});},99999); it("POST /auth/login 200 - Login OK [Returning User]",async (done) => { await app .post(m.routes[0].path+"/auth/login") .send({pin:"9999"}) .set("Origin","https://hcl-api.com") .set("HCL-CLIENT-ID","hcl-api") .set("HCL-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();});},99999); it("POST /profiles - Create Profile [200 OK]",async (done) => { await app .post(m.routes[0].path+"/profiles") .send({settings:{lang:"en"}}) .set("Origin","https://hcl-api.com") .set("HCL-CLIENT-ID","hcl-api") .set("HCL-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();});},99999); it("POST /stats - Create Stats [201 OK]",async (done) => { await app .post(m.routes[0].path+"/stats") .send({owner:user.profile.id,info:{}}) .set("Origin","https://hcl-api.com") .set("HCL-CLIENT-ID","hcl-api") .set("HCL-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.stats = res.body; //console.log(user.stats); done();});},99999); it("GET /stats? - Query Stats [200 OK - Bad Query]",async (done) => { await app .get(m.routes[0].path+"/stats?"+ `select=owner,rank&rank=11`) .set("Origin","https://hcl-api.com") .set("HCL-CLIENT-ID","hcl-api") .set("HCL-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(200) .expect(async (res:Response) => { data = handleResponse(data,res); await arr(res.body.stats); await eq(res.body.stats.length,0); done();});},99999); it("GET /stats? - Query Stats [200 OK]",async (done) => { await app .get(m.routes[0].path+"/stats?"+ `select=owner,rank&rank=0`) .set("Origin","https://hcl-api.com") .set("HCL-CLIENT-ID","hcl-api") .set("HCL-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(200) .expect(async (res:Response) => { data = handleResponse(data,res); await arr(res.body.stats); await gt(res.body.stats.length,0); done();});},99999); it("GET /stats/:id - Fetch Stats [200 OK]",async (done) => { await app .get(m.routes[0].path+"/stats/"+user.stats.id) .set("Origin","https://hcl-api.com") .set("HCL-CLIENT-ID","hcl-api") .set("HCL-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(200) .expect((res:Response) => { data = handleResponse(data,res); user.stats = res.body; done();});},99999); it("PUT /stats/:id - Update Stats [200 OK]",async (done) => { await app .put(m.routes[0].path+"/stats/"+user.stats.id) .send({ rank:660, info:{statYr:"2020"}}) .set("Origin","https://hcl-api.com") .set("HCL-CLIENT-ID","hcl-api") .set("HCL-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(200) .expect(async (res:Response) => { data = handleResponse(data,res); user.stats = res.body; await is(user.stats.info); await is(user.stats.info.statYr,"2020"); console.log(user.stats); done();});},99999); it("DELETE /stats/:id - Remove Stats [404 Err - Id Not Exist]",async (done) => { const last = Number(user.stats.id[user.stats.id.length - 1]); const id = (user.stats.id as string).slice(0,-1) + (last < 9?last + 1:0); await app .delete(m.routes[0].path+"/stats/"+id) .set("Origin","https://hcl-api.com") .set("HCL-CLIENT-ID","hcl-api") .set("HCL-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(404) .expect(async (res:Response) => { data = handleResponse(data,res); await trueish(/not found/i.test(res.body.message)); done();});},99999); it("DELETE /stats/:id - Remove Stats [422 Err - Bad Id]",async (done) => { await app .delete(m.routes[0].path+"/stats/kjdhcjajc") .set("Origin","https://hcl-api.com") .set("HCL-CLIENT-ID","hcl-api") .set("HCL-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(422) .expect(async (res:Response) => { data = handleResponse(data,res); await trueish(/casterror/i.test(res.body.code)); done();});},99999); it("DELETE /stats/:id - Remove Stats [200 OK]",async (done) => { await app .delete(m.routes[0].path+"/stats/"+user.stats.id) .set("Origin","https://hcl-api.com") .set("HCL-CLIENT-ID","hcl-api") .set("HCL-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(200) .expect(async (res:Response) => { data = handleResponse(data,res); user.stats = res.body; await is(user.stats.removed); await type(user.stats.removed,"string"); done();});},99999); it("DELETE /profiles/:id - Remove Profile [200 OK]",async (done) => { await app .delete(m.routes[0].path+"/profiles/"+user.profile.id) .set("Origin","https://hcl-api.com") .set("HCL-CLIENT-ID","hcl-api") .set("HCL-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(200) .expect(async (res:Response) => { data = handleResponse(data,res); user.profile = res.body; await is(user.profile.removed); await type(user.profile.removed,"string"); done();});},99999); });