import {desc,is,type,arr,gt,trueish,handleResponse,ResponseData,eq, newResponseData} from "../../utils"; import { AppMaster } from "@onebro/appmaster"; import { Response } from "supertest"; export const gamesApiTests = () => desc("HCL Games 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; data = newResponseData();},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 /games - Create Games [201 OK]",async (done) => { await app .post(m.routes[0].path+"/games") .send({ type:"swiss", players:[user.profile.id,user.profile.id], opts:{duration:15,time:15,showTimer:true}, vars:{firstMover:user.profile.id}, pat:{loc:"The Nook",date:new Date(),time:"03:00pm"}, 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.game = res.body; console.log(user.game); done();});},99999); it("GET /games? - Query Games [200 OK - Bad Query]",async (done) => { await app .get(m.routes[0].path+"/games?select=msg,date&loc=The Nobody") .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.games); await eq(res.body.games.length,0); done();});},99999); it("GET /games? - Query Games [200 OK]",async (done) => { await app .get(m.routes[0].path+"/games?select=msg,date&loc=The Nook") .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.games); await gt(res.body.games.length,0); done();});},99999); it("GET /games/:id - Fetch Games [200 OK]",async (done) => { await app .get(m.routes[0].path+"/games/"+user.game.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.game = res.body; done();});},99999); it("PUT /games/:id - Update Games [200 OK]",async (done) => { await app .put(m.routes[0].path+"/games/"+user.game.id) .send({loc:"Agora"}) .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.game = res.body; await is(user.game.loc,"Agora"); done();});},99999); it("DELETE /games/:id - Remove Games [404 Err - Id Not Exist]",async (done) => { const last = Number(user.game.id[user.game.id.length - 1]); const id = (user.game.id as string).slice(0,-1) + (last < 9?last + 1:0); await app .delete(m.routes[0].path+"/games/"+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 /games/:id - Remove Games [422 Err - Bad Id]",async (done) => { await app .delete(m.routes[0].path+"/games/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 /games/:id - Remove Games [200 OK]",async (done) => { await app .delete(m.routes[0].path+"/games/"+user.game.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.game = res.body; await is(user.game.removed); await type(user.game.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); });