Skip to content

Commit 21de33c

Browse files
committed
test: Add unit tests for nodeId validation support
Add comprehensive test coverage for: - ValidateHelper nodeId validation (success, invalid nodeId, missing user) - FileService nodeId-based node retrieval - Precedence of fileId over nodeId when both are provided These tests ensure the new nodeId functionality works correctly while maintaining backward compatibility with existing fileId behavior. Signed-off-by: Vitor Mattos <[email protected]>
1 parent 27d66f3 commit 21de33c

2 files changed

Lines changed: 113 additions & 0 deletions

File tree

tests/php/Unit/Helper/ValidateHelperTest.php

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,47 @@ public function testValidateNewFileUsingFileIdWithSuccess():void {
135135
$this->assertNull($actual);
136136
}
137137

138+
public function testValidateNewFileUsingNodeIdWithSuccess():void {
139+
$file = $this->createMock(\OCP\Files\File::class);
140+
$file
141+
->method('getMimeType')
142+
->willReturn('application/pdf');
143+
$this->root
144+
->method('getUserFolder')
145+
->willReturn($this->root);
146+
$this->root
147+
->method('getFirstNodeById')
148+
->willReturn($file);
149+
150+
$user = $this->createMock(\OCP\IUser::class);
151+
$user->method('getUID')->willReturn('john.doe');
152+
$actual = $this->getValidateHelper()->validateNewFile([
153+
'file' => ['nodeId' => 35523],
154+
'name' => 'test',
155+
'userManager' => $user,
156+
]);
157+
$this->assertNull($actual);
158+
}
159+
160+
public function testValidateFileWithInvalidNodeId():void {
161+
$this->expectExceptionMessage('Invalid fileID');
162+
$user = $this->createMock(\OCP\IUser::class);
163+
$user->method('getUID')->willReturn('john.doe');
164+
$this->getValidateHelper()->validateFile([
165+
'file' => ['nodeId' => 'invalid'],
166+
'name' => 'test',
167+
'userManager' => $user,
168+
]);
169+
}
170+
171+
public function testValidateFileWithNodeIdWithoutUser():void {
172+
$this->expectExceptionMessage('User not found');
173+
$this->getValidateHelper()->validateFile([
174+
'file' => ['nodeId' => 35523],
175+
'name' => 'test',
176+
]);
177+
}
178+
138179
public function testValidateNotRequestedSignWhenAlreadyAskedToSignThisDocument():void {
139180
$this->signRequestMapper->method('getByNodeId')->willReturn('exists');
140181
$this->expectExceptionMessage('Already asked to sign this document');

tests/php/Unit/Service/FileServiceTest.php

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,4 +88,76 @@ public function testSetFileByIdSetsFile(): void {
8888
$this->assertInstanceOf(FileService::class, $returned);
8989
$this->assertSame(1, $service->getStatus());
9090
}
91+
92+
public function testGetNodeFromDataWithNodeId(): void {
93+
$node = $this->createMock(\OCP\Files\Node::class);
94+
$folderService = $this->createMock(\OCA\Libresign\Service\FolderService::class);
95+
$folderService->method('getUserId')->willReturn('testuser');
96+
$folderService->method('getFileByNodeId')->with(35523)->willReturn($node);
97+
98+
$userManager = $this->createMock(\OCP\IUser::class);
99+
$userManager->method('getUID')->willReturn('testuser');
100+
101+
$service = $this->createFileService([
102+
\OCA\Libresign\Service\FolderService::class => $folderService,
103+
]);
104+
105+
$data = [
106+
'file' => ['nodeId' => 35523],
107+
'userManager' => $userManager,
108+
];
109+
110+
$result = $service->getNodeFromData($data);
111+
$this->assertSame($node, $result);
112+
}
113+
114+
public function testGetNodeFromDataWithFileId(): void {
115+
$node = $this->createMock(\OCP\Files\Node::class);
116+
$folderService = $this->createMock(\OCA\Libresign\Service\FolderService::class);
117+
$folderService->method('getUserId')->willReturn('testuser');
118+
$folderService->method('getFileByNodeId')->with(12345)->willReturn($node);
119+
120+
$userManager = $this->createMock(\OCP\IUser::class);
121+
$userManager->method('getUID')->willReturn('testuser');
122+
123+
$service = $this->createFileService([
124+
\OCA\Libresign\Service\FolderService::class => $folderService,
125+
]);
126+
127+
$data = [
128+
'file' => ['fileId' => 12345],
129+
'userManager' => $userManager,
130+
];
131+
132+
$result = $service->getNodeFromData($data);
133+
$this->assertSame($node, $result);
134+
}
135+
136+
public function testGetNodeFromDataPrefersFileIdOverNodeId(): void {
137+
$nodeFromFileId = $this->createMock(\OCP\Files\Node::class);
138+
$folderService = $this->createMock(\OCA\Libresign\Service\FolderService::class);
139+
$folderService->method('getUserId')->willReturn('testuser');
140+
$folderService->expects($this->once())
141+
->method('getFileByNodeId')
142+
->with(12345)
143+
->willReturn($nodeFromFileId);
144+
145+
$userManager = $this->createMock(\OCP\IUser::class);
146+
$userManager->method('getUID')->willReturn('testuser');
147+
148+
$service = $this->createFileService([
149+
\OCA\Libresign\Service\FolderService::class => $folderService,
150+
]);
151+
152+
$data = [
153+
'file' => [
154+
'fileId' => 12345,
155+
'nodeId' => 35523, // This should be ignored
156+
],
157+
'userManager' => $userManager,
158+
];
159+
160+
$result = $service->getNodeFromData($data);
161+
$this->assertSame($nodeFromFileId, $result);
162+
}
91163
}

0 commit comments

Comments
 (0)