import {desc,is,type,arr,gt,trueish,handleResponse,ResponseData,eq, newResponseData} from "../../utils"; import { AppMaster } from "@onebro/appmaster"; import { Response } from "supertest"; export const invitesApiTests = () => desc("HCL Invites 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 /venues - Create Venue [201 OK]",async (done) => { await app .post(m.routes[0].path+"/venues") .send({ name:"The Nook", loc:{ addr:"4701 Calhoun Rd", city:"Houston", st:"Tx", pcode:"77004", ctry:"US", tz:"US-Central", info:"Houston, Tx, US", pts:[]}}) .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.venue = res.body; //console.log(user.venue); done();});},99999); it("POST /invites - Create Invite [201 OK]",async (done) => { await app .post(m.routes[0].path+"/invites") .send({ type:"member", sender:user.profile.id, recipient:user.profile.id, pat:{ venue:user.venue.id, date:new Date(), time:"03:00pm"}, msg:"come play"}) .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.invite = res.body; console.log(user.invite); done();});},99999); /*it("GET /invites? - Query Invites [200 OK - Bad Query]",async (done) => { await app .get(m.routes[0].path+`/invites?select=json&populate={"pat.venue":{"name":"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); console.log(res.body.invites[0]); await arr(res.body.invites); await eq(res.body.invites.length,0); done();});},99999);*/ it("GET /invites? - Query Invites [200 OK]",async (done) => { await app .get(m.routes[0].path+`/invites?select=json&populate={"pat.venue":{"name":"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); console.log(res.body.invites); await arr(res.body.invites); await gt(res.body.invites.length,0); done();});},99999); it("GET /invites/:id - Fetch Invite [200 OK]",async (done) => { await app .get(m.routes[0].path+"/invites/"+user.invite.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.invite = res.body; done();});},99999); it("POST /venues - Create Venue [201 OK]",async (done) => { await app .post(m.routes[0].path+"/venues") .send({ name:"Agora", loc:{ addr:"4701 Calhoun Rd", city:"Houston", st:"Tx", pcode:"77004", ctry:"US", tz:"US-Central", info:"Houston, Tx, US", pts:[]}}) .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.venue2 = res.body; console.log(user.venue2); done();});},99999); it("PUT /invites/:id - Update Invite [200 OK]",async (done) => { await app .put(m.routes[0].path+"/invites/"+user.invite.id) .send({ pat:{venue:user.venue2.id}, msg:"come play right now"}) .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.invite = res.body; console.log(user.invite); await is(user.invite.pat.venue.name,"Agora"); await is(user.invite.msg,"come play right now"); done();});},99999); it("DELETE /invites/:id - Remove Invite [404 Err - Id Not Exist]",async (done) => { const last = Number(user.invite.id[user.invite.id.length - 1]); const id = (user.invite.id as string).slice(0,-1) + (last < 9?last + 1:0); await app .delete(m.routes[0].path+"/invites/"+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 /invites/:id - Remove Invite [422 Err - Bad Id]",async (done) => { await app .delete(m.routes[0].path+"/invites/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 /invites/:id - Remove Invite [200 OK]",async (done) => { await app .delete(m.routes[0].path+"/invites/"+user.invite.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.invite = res.body; await is(user.invite.removed); await type(user.invite.removed,"string"); done();});},99999); it("DELETE /venues - Remove Venues [200 OK]",async (done) => { await app .delete(m.routes[0].path+"/venues") .send({ids:[]})//user.venue.id,user.venue2.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); await is(res.body.removed); await type(res.body.removed,"number"); await eq(res.body.removed,2); 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); });