| 
									
										
										
										
											2025-06-03 08:43:32 +03:00
										 |  |  | import { Application } from "express"; | 
					
						
							|  |  |  | import { beforeAll, describe, expect, it } from "vitest"; | 
					
						
							|  |  |  | import supertest from "supertest"; | 
					
						
							|  |  |  | import { createNote, login } from "./utils.js"; | 
					
						
							|  |  |  | import config from "../../src/services/config.js"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let app: Application; | 
					
						
							|  |  |  | let token: string; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const USER = "etapi"; | 
					
						
							|  |  |  | let createdNoteId: string; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe("etapi/note-content", () => { | 
					
						
							|  |  |  |     beforeAll(async () => { | 
					
						
							|  |  |  |         config.General.noAuthentication = false; | 
					
						
							|  |  |  |         const buildApp = (await (import("../../src/app.js"))).default; | 
					
						
							|  |  |  |         app = await buildApp(); | 
					
						
							|  |  |  |         token = await login(app); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-03 08:54:52 +03:00
										 |  |  |         createdNoteId = await createNote(app, token); | 
					
						
							| 
									
										
										
										
											2025-06-03 08:43:32 +03:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it("get content", async () => { | 
					
						
							|  |  |  |         const response = await getContentResponse(); | 
					
						
							|  |  |  |         expect(response.text).toStrictEqual("Hi there!"); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it("put note content", async () => { | 
					
						
							|  |  |  |         const text = "Changed content"; | 
					
						
							|  |  |  |         await supertest(app) | 
					
						
							|  |  |  |             .put(`/etapi/notes/${createdNoteId}/content`) | 
					
						
							|  |  |  |             .auth(USER, token, { "type": "basic"}) | 
					
						
							|  |  |  |             .set("Content-Type", "text/plain") | 
					
						
							|  |  |  |             .send(text) | 
					
						
							|  |  |  |             .expect(204); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         const response = await getContentResponse(); | 
					
						
							|  |  |  |         expect(response.text).toStrictEqual(text); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it("put note content binary", async () => { | 
					
						
							|  |  |  |         // First, create a binary note
 | 
					
						
							|  |  |  |         const response = await supertest(app) | 
					
						
							|  |  |  |             .post("/etapi/create-note") | 
					
						
							|  |  |  |             .auth("etapi", token, { "type": "basic"}) | 
					
						
							|  |  |  |             .send({ | 
					
						
							|  |  |  |                 "parentNoteId": "root", | 
					
						
							|  |  |  |                 "title": "Hello", | 
					
						
							|  |  |  |                 "mime": "image/png", | 
					
						
							|  |  |  |                 "type": "image", | 
					
						
							|  |  |  |                 "content": "" | 
					
						
							|  |  |  |             }) | 
					
						
							|  |  |  |             .expect(201); | 
					
						
							|  |  |  |         const createdNoteId = response.body.note.noteId; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // Put binary content
 | 
					
						
							|  |  |  |         await supertest(app) | 
					
						
							|  |  |  |             .put(`/etapi/notes/${createdNoteId}/content`) | 
					
						
							|  |  |  |             .auth(USER, token, { "type": "basic"}) | 
					
						
							|  |  |  |             .set("Content-Type", "application/octet-stream") | 
					
						
							|  |  |  |             .set("Content-Transfer-Encoding", "binary") | 
					
						
							|  |  |  |             .send(Buffer.from("Hello world")) | 
					
						
							|  |  |  |             .expect(204); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function getContentResponse() { | 
					
						
							|  |  |  |         return supertest(app) | 
					
						
							|  |  |  |             .get(`/etapi/notes/${createdNoteId}/content`) | 
					
						
							|  |  |  |             .auth(USER, token, { "type": "basic"}) | 
					
						
							|  |  |  |             .expect(200); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | }); |