import {J,handleResponse,ResponseData,newResponseData} from "../../utils"; import { AppMaster } from "@onebro/appmaster"; import { Response } from "supertest"; export const cndProfilesApiTests = () => J.desc("User Profiles",() => { const authApiPath = "/ob-auth/v1/en",authApiID = "00-ob-auth"; const cndApiPath = "/cnd/v1/en",cndApiID = "09-cnd"; 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 /cnd/v1/en/profiles [201 - Create New Profile]",async (done) => { await app .post(cndApiPath+"/profiles") .send({settings:{lang:"en"}}) .set("Origin","https://oba-dev-apps.com") .set("oba-CLIENT-ID",cndApiID) .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 Profile: POST /cnd/v1/en/profiles [422 - Existing username]",async (done) => { await app .post(cndApiPath+"/profiles") .send({settings:{lang:"en"}}) .set("Origin","https://oba-dev-apps.com") .set("oba-CLIENT-ID",cndApiID) .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(/unique/i.test(res.body.errors.username.message)); done();});},1E9); /* it("Query Profile: GET /cnd/v1/en/profiles? [200 - Bad Query]",async (done) => { await app .get(cndApiPath+"/profiles?"+`select=bio,motto,rating&username={"$regex":"joff","$options":"i"}`) .set("Origin","https://oba-dev-apps.com") .set("oba-CLIENT-ID",cndApiID) .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.arr(res.body.profiles); J.eq(res.body.profiles.length,0); done();});},1E9); it("Query Profile: GET /cnd/v1/en/profiles? [200]",async (done) => { await app .get(cndApiPath+"/profiles?"+ `select=bio,motto,rating&username={"$regex":"jack","$options":"i"}`) .set("Origin","https://oba-dev-apps.com") .set("oba-CLIENT-ID",cndApiID) .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.arr(res.body.profiles); J.gt(res.body.profiles.length,0); done();});},1E9); */ it("Fetch Profile By Tkn Username: GET /cnd/v1/en/profiles/u [200]",async (done) => { await app .get(cndApiPath+"/profiles/u") .set("Origin","https://oba-dev-apps.com") .set("oba-CLIENT-ID",cndApiID) .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; done();});},1E9); it("Fetch Profile: GET /cnd/v1/en/profiles/:id [200]",async (done) => { await app .get(cndApiPath+"/profiles/"+user.profile.id) .set("Origin","https://oba-dev-apps.com") .set("oba-CLIENT-ID",cndApiID) .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; done();});},1E9); it("Updadte Profile: PUT /cnd/v1/en/profiles/:id [200]",async (done) => { await app .put(cndApiPath+"/profiles/"+user.profile.id) .send({ bio:"ok cool", motto:"hol on fam", experienceYrs:2, experienceLvl:"intermediate", img:"/somewhere/on/this/drive.jpg", settings:{...user.profile.settings,app:{willTutor:true}}, socials:{fb:"blah",ig:"blah","chess.com":"blah"},}) .set("Origin","https://oba-dev-apps.com") .set("oba-CLIENT-ID",cndApiID) .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.motto,"hol on fam"); console.log(user.profile,user.profile.settings); done();});},1E9); it("Add Followers/Following to Profile: PUT /cnd/v1/en/profiles/:id [200]",async (done) => { await app .put(cndApiPath+"/profiles/"+user.profile.id) .send({addFollowers:[user.profile.id],addFollowing:[user.profile.id]}) .set("Origin","https://oba-dev-apps.com") .set("oba-CLIENT-ID",cndApiID) .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.gt(user.profile.followers.length,0); J.gt(user.profile.following.length,0); //console.log(user.profile.followers,user.profile.following); done();});},1E9); it("Remove Followers/Following from Profile: PUT /cnd/v1/en/profiles/:id [200]",async (done) => { await app .put(cndApiPath+"/profiles/"+user.profile.id) .send({removeFollowers:[user.profile.id],removeFollowing:[user.profile.id]}) .set("Origin","https://oba-dev-apps.com") .set("oba-CLIENT-ID",cndApiID) .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.eq(user.profile.followers.length,0); J.eq(user.profile.following.length,0); //console.log(user.profile.followers,user.profile.following); done();});},1E9); it("Remove Profile: DELETE /cnd/v1/en/profiles/:id [404 - Id Not Exist]",async (done) => { const last = Number(user.profile.id[user.profile.id.length - 1]); const id = (user.profile.id as string).slice(0,-1) + (last < 9?last + 1:0); await app .delete(cndApiPath+"/profiles/"+id) .set("Origin","https://oba-dev-apps.com") .set("oba-CLIENT-ID",cndApiID) .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 Profile: DELETE /cnd/v1/en/profiles/:id [422 - Bad Id]",async (done) => { await app .delete(cndApiPath+"/profiles/kjdhcjajc") .set("Origin","https://oba-dev-apps.com") .set("oba-CLIENT-ID",cndApiID) .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 Profile: DELETE /cnd/v1/en/profiles/:id [200]",async (done) => { await app .delete(cndApiPath+"/profiles/"+user.profile.id) .set("Origin","https://oba-dev-apps.com") .set("oba-CLIENT-ID",cndApiID) .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); });