mirror of
https://github.com/usatiuk/writer.git
synced 2025-10-28 16:07:49 +01:00
account deletion backend logic
This commit is contained in:
@@ -48,6 +48,9 @@ app.use(userRouter.routes()).use(userRouter.allowedMethods());
|
||||
app.use(docsRouter.routes()).use(docsRouter.allowedMethods());
|
||||
|
||||
app.on("error", (err, ctx) => {
|
||||
if (ctx.response.status == "500") {
|
||||
console.error(err);
|
||||
}
|
||||
ctx.body = {
|
||||
error: err.message,
|
||||
data: false,
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import * as Router from "koa-router";
|
||||
import { Document } from "~entity/Document";
|
||||
import { IUserJWT, User } from "~entity/User";
|
||||
|
||||
export const userRouter = new Router();
|
||||
@@ -15,6 +16,20 @@ userRouter.get("/users/user", async (ctx) => {
|
||||
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) => {
|
||||
const request = ctx.request as any;
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import * as request from "supertest";
|
||||
import { getConnection } from "typeorm";
|
||||
import { app } from "~app";
|
||||
import { IUserAuthJSON, User } from "~entity/User";
|
||||
import { Document } from "~entity/Document";
|
||||
|
||||
import { ISeed, seedDB } from "./util";
|
||||
|
||||
@@ -41,6 +42,37 @@ describe("users", function () {
|
||||
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 () {
|
||||
const response = await request(callback)
|
||||
.post("/users/login")
|
||||
|
||||
Reference in New Issue
Block a user