import {J,handleResponse,ResponseData,newResponseData} from "../../utils"; import { AppMaster } from "@onebro/appmaster"; import { Response } from "supertest"; export const finavigatorApptsApiTests = () => J.desc("Appointments",() => { 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; 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("Create Lead: POST /finavigator/v1/en/leads [201]",async (done) => { await app .post(finavigatorApiPath+"/leads") .send({ method:"email", campaign:"TAX 2020", contact:"service.onebrother@gmail.com"}) .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.lead = res.body; //console.log(user.lead); done();});},1E9); it("Create Venue: POST /finavigator/v1/en/venues [201]",async (done) => { await app .post(finavigatorApiPath+"/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://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.venue = res.body; //console.log(user.venue); done();});},1E9); it("Create Appt: POST /finavigator/v1/en/appts [201]",async (done) => { await app .post(finavigatorApiPath+"/appts") .send({ type:"in-person", agent:user.profile.id, client:user.profile.id, venue:user.venue.id, date:new Date(), time:"03:00pm", lead:user.lead.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("Content-Type",/json/) .expect(201) .expect((res:Response) => { data = handleResponse(data,res); user.appt = res.body; //console.log(user.appt); done();});},1E9); /* it("Query Appts: GET /finavigator/v1/en/appts? [200 - Bad Query]",async (done) => { await app .get(finavigatorApiPath+`/appts?select=json&populate={"pat.venue":{"name":"The Nobody"}}`) .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(200) .expect((res:Response) => { data = handleResponse(data,res); console.log(res.body.appts[0]); J.arr(res.body.appts); J.eq(res.body.appts.length,0); done();});},1E9); it("Query Appts: GET /finavigator/v1/en/appts? [200]",async (done) => { await app .get(finavigatorApiPath+`/appts?select=json&populate={"pat.venue":{"name":"The Nook"}}`) .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(200) .expect((res:Response) => { data = handleResponse(data,res); console.log(res.body.appts); J.arr(res.body.appts); J.gt(res.body.appts.length,0); done();});},1E9); */ it("Fetch Appt: GET /finavigator/v1/en/appts/:id [200]",async (done) => { await app .get(finavigatorApiPath+"/appts/"+user.appt.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("Content-Type",/json/) .expect(200) .expect((res:Response) => { data = handleResponse(data,res); user.appt = res.body; done();});},1E9); it("Create Venue 2: POST /finavigator/v1/en/venues [201]",async (done) => { await app .post(finavigatorApiPath+"/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://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.venue2 = res.body; //console.log(user.venue2); done();});},1E9); it("Create Msg: POST /finavigator/v1/en/msgs [201]",async (done) => { await app .post(finavigatorApiPath+"/msgs") .send({ type:"note", author:user.profile.id, body:`Modified appt venue - OB`}) .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.msg = res.body; done();});},1E9); it("Update Appt: PUT /finavigator/v1/en/appts/:id [200]",async (done) => { await app .put(finavigatorApiPath+"/appts/"+user.appt.id) .send({venue:user.venue2.id,note:user.msg.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("Content-Type",/json/) .expect(200) .expect((res:Response) => { data = handleResponse(data,res); user.appt = res.body; //console.log(user.appt); J.is(user.appt.venue.name,"Agora"); J.arr(user.appt.notes); J.gt(user.appt.notes.length,0); J.is(user.appt.notes[0].author.username,"jackswift"); done();});},1E9); it("Remove Appt: DELETE /finavigator/v1/en/appts/:id [404 - Id Not Exist]",async (done) => { const last = Number(user.appt.id[user.appt.id.length - 1]); const id = (user.appt.id as string).slice(0,-1) + (last < 9?last + 1:0); await app .delete(finavigatorApiPath+"/appts/"+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("Content-Type",/json/) .expect(404) .expect((res:Response) => { data = handleResponse(data,res); J.true(/not exist/i.test(res.body.message)); done();});},1E9); it("Remove Appt: DELETE /finavigator/v1/en/appts/:id [422 - Bad Id]",async (done) => { await app .delete(finavigatorApiPath+"/appts/kjdhcjajc") .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(422) .expect((res:Response) => { data = handleResponse(data,res); J.true(/casterror/i.test(res.body.code)); done();});},1E9); it("Remove Appt: DELETE /finavigator/v1/en/appts/:id [200]",async (done) => { await app .delete(finavigatorApiPath+"/appts/"+user.appt.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("Content-Type",/json/) .expect(200) .expect((res:Response) => { data = handleResponse(data,res); user.appt = res.body; J.is(user.appt.removed); J.type(user.appt.removed,"string"); done();});},1E9); it("Remove Msg: DELETE /finavigator/v1/en/msgs/:id [200]",async (done) => { await app .delete(finavigatorApiPath+"/msgs/"+user.msg.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("Content-Type",/json/) .expect(200) .expect((res:Response) => { data = handleResponse(data,res); user.msg = res.body; J.is(user.msg.removed); J.type(user.msg.removed,"string"); done();});},1E9); it("Remove Lead: DELETE /finavigator/v1/en/leads/:id [200]",async (done) => { await app .delete(finavigatorApiPath+"/leads/"+user.lead.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("Content-Type",/json/) .expect(200) .expect((res:Response) => { data = handleResponse(data,res); user.lead = res.body; J.is(user.lead.removed); J.type(user.lead.removed,"string"); done();});},1E9); it("Remove Venues: DELETE /finavigator/v1/en/venues [200]",async (done) => { await app .delete(finavigatorApiPath+"/venues") .send({ids:[]})//user.venue.id,user.venue2.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("Content-Type",/json/) .expect(200) .expect((res:Response) => { data = handleResponse(data,res); J.is(res.body.removed); J.type(res.body.removed,"number"); J.eq(res.body.removed,2); done();});},1E9); it("Remove Profile: DELETE /finavigator/v1/en/profiles/:id [200]",async (done) => { await app .delete(finavigatorApiPath+"/profiles/"+user.profile.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("Content-Type",/json/) .expect(200) .expect((res:Response) => { data = handleResponse(data,res); user.profile = res.body; J.is(user.profile.removed); J.type(user.profile.removed,"string"); done();});},1E9); });