2 Commits

Author SHA1 Message Date
34a7f506c8 Merge a8392f632d into 42f51274a0 2024-04-27 22:59:19 +02:00
a8392f632d account deletion backend logic 2021-08-02 21:06:43 +03:00
3 changed files with 50 additions and 0 deletions

View File

@@ -48,6 +48,9 @@ app.use(userRouter.routes()).use(userRouter.allowedMethods());
app.use(docsRouter.routes()).use(docsRouter.allowedMethods()); app.use(docsRouter.routes()).use(docsRouter.allowedMethods());
app.on("error", (err, ctx) => { app.on("error", (err, ctx) => {
if (ctx.response.status == "500") {
console.error(err);
}
ctx.body = { ctx.body = {
error: err.message, error: err.message,
data: false, data: false,

View File

@@ -1,4 +1,5 @@
import * as Router from "koa-router"; import * as Router from "koa-router";
import { Document } from "~entity/Document";
import { IUserJWT, User } from "~entity/User"; import { IUserJWT, User } from "~entity/User";
export const userRouter = new Router(); export const userRouter = new Router();
@@ -15,6 +16,20 @@ userRouter.get("/users/user", async (ctx) => {
ctx.body = { error: false, data: user.toAuthJSON() }; ctx.body = { error: false, data: user.toAuthJSON() };
}); });
userRouter.delete("/users/user", async (ctx) => {
if (!ctx.state.user) {
ctx.throw(401);
}
const jwt = ctx.state.user as IUserJWT;
const user = await User.findOne(jwt.id);
await Document.remove(await Document.find({ user }));
await user.remove();
ctx.body = { error: false };
});
userRouter.post("/users/login", async (ctx) => { userRouter.post("/users/login", async (ctx) => {
const request = ctx.request as any; const request = ctx.request as any;

View File

@@ -4,6 +4,7 @@ import * as request from "supertest";
import { getConnection } from "typeorm"; import { getConnection } from "typeorm";
import { app } from "~app"; import { app } from "~app";
import { IUserAuthJSON, User } from "~entity/User"; import { IUserAuthJSON, User } from "~entity/User";
import { Document } from "~entity/Document";
import { ISeed, seedDB } from "./util"; import { ISeed, seedDB } from "./util";
@@ -41,6 +42,37 @@ describe("users", function () {
expect(user).to.deep.equal(seed.user1.toJSON()); expect(user).to.deep.equal(seed.user1.toJSON());
}); });
it("should delete user", async function () {
const response = await request(callback)
.delete("/users/user")
.set({
Authorization: `Bearer ${seed.user1.toJWT()}`,
"Content-Type": "application/json",
})
.expect("Content-Type", /json/)
.expect(200);
expect(response.body.error).to.be.false;
expect(await User.findOne(seed.user1.id)).to.be.undefined;
expect(await Document.findOne(seed.doc1.id)).to.be.undefined;
});
it("should not delete user with wrong jwt", async function () {
const response = await request(callback)
.delete("/users/user")
.set({
Authorization: `Bearer ${seed.user2.toJWT()}`,
"Content-Type": "application/json",
})
.expect("Content-Type", /json/)
.expect(200);
expect(response.body.error).to.be.false;
expect(await User.findOne(seed.user2.id)).to.be.undefined;
expect(await User.findOne(seed.user1.id)).to.not.be.undefined;
expect(await Document.findOne(seed.doc1.id)).to.not.be.undefined;
});
it("should login user", async function () { it("should login user", async function () {
const response = await request(callback) const response = await request(callback)
.post("/users/login") .post("/users/login")