mirror of
				https://github.com/TriliumNext/Notes.git
				synced 2025-10-31 21:11:30 +08:00 
			
		
		
		
	test(etapi): port note content
This commit is contained in:
		
							parent
							
								
									5b051db3eb
								
							
						
					
					
						commit
						d75e86789d
					
				| @ -1,25 +0,0 @@ | |||||||
| POST {{triliumHost}}/etapi/create-note |  | ||||||
| Authorization: {{authToken}} |  | ||||||
| Content-Type: application/json |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   "parentNoteId": "root", |  | ||||||
|   "title": "Hello", |  | ||||||
|   "type": "text", |  | ||||||
|   "content": "Hi there!" |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| > {% |  | ||||||
|     client.global.set("createdNoteId", response.body.note.noteId); |  | ||||||
|     client.global.set("createdBranchId", response.body.branch.branchId); |  | ||||||
| %} |  | ||||||
| 
 |  | ||||||
| ### |  | ||||||
| 
 |  | ||||||
| GET {{triliumHost}}/etapi/notes/{{createdNoteId}}/content |  | ||||||
| Authorization: {{authToken}} |  | ||||||
| 
 |  | ||||||
| > {% |  | ||||||
|     client.assert(response.status === 200); |  | ||||||
|     client.assert(response.body === "Hi there!"); |  | ||||||
| %} |  | ||||||
| @ -1,25 +0,0 @@ | |||||||
| POST {{triliumHost}}/etapi/create-note |  | ||||||
| Authorization: {{authToken}} |  | ||||||
| Content-Type: application/json |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   "parentNoteId": "root", |  | ||||||
|   "title": "Hello", |  | ||||||
|   "type": "image", |  | ||||||
|   "mime": "image/png", |  | ||||||
|   "content": "" |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| > {% client.global.set("createdNoteId", response.body.note.noteId); %} |  | ||||||
| 
 |  | ||||||
| ### |  | ||||||
| 
 |  | ||||||
| PUT {{triliumHost}}/etapi/notes/{{createdNoteId}}/content |  | ||||||
| Authorization: {{authToken}} |  | ||||||
| Content-Type: application/octet-stream |  | ||||||
| Content-Transfer-Encoding: binary |  | ||||||
| 
 |  | ||||||
| < ../images/icon-color.png |  | ||||||
| 
 |  | ||||||
| > {% client.assert(response.status === 204); %} |  | ||||||
| 
 |  | ||||||
| @ -1,30 +0,0 @@ | |||||||
| POST {{triliumHost}}/etapi/create-note |  | ||||||
| Authorization: {{authToken}} |  | ||||||
| Content-Type: application/json |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   "parentNoteId": "root", |  | ||||||
|   "title": "Hello", |  | ||||||
|   "type": "code", |  | ||||||
|   "mime": "text/plain", |  | ||||||
|   "content": "Hi there!" |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| > {% client.global.set("createdNoteId", response.body.note.noteId); %} |  | ||||||
| 
 |  | ||||||
| ### |  | ||||||
| 
 |  | ||||||
| PUT {{triliumHost}}/etapi/notes/{{createdNoteId}}/content |  | ||||||
| Authorization: {{authToken}} |  | ||||||
| Content-Type: text/plain |  | ||||||
| 
 |  | ||||||
| Changed content |  | ||||||
| 
 |  | ||||||
| > {% client.assert(response.status === 204); %} |  | ||||||
| 
 |  | ||||||
| ### |  | ||||||
| 
 |  | ||||||
| GET {{triliumHost}}/etapi/notes/{{createdNoteId}}/content |  | ||||||
| Authorization: {{authToken}} |  | ||||||
| 
 |  | ||||||
| > {% client.assert(response.body === "Changed content"); %} |  | ||||||
							
								
								
									
										74
									
								
								apps/server/spec/etapi/note-content.spec.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								apps/server/spec/etapi/note-content.spec.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,74 @@ | |||||||
|  | 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"; | ||||||
|  | import { randomUUID } from "crypto"; | ||||||
|  | 
 | ||||||
|  | let app: Application; | ||||||
|  | let token: string; | ||||||
|  | 
 | ||||||
|  | const USER = "etapi"; | ||||||
|  | let createdNoteId: string; | ||||||
|  | let createdBranchId: 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); | ||||||
|  | 
 | ||||||
|  |         ({ createdNoteId, createdBranchId } = await createNote(app, token)); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     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); | ||||||
|  |     } | ||||||
|  | }); | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Elian Doran
						Elian Doran