| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| package org.apache.fineract.integrationtests.newstyle; |
| |
| import java.io.File; |
| import java.io.IOException; |
| import okhttp3.MediaType; |
| import okhttp3.MultipartBody.Part; |
| import okhttp3.ResponseBody; |
| import org.apache.fineract.client.models.GetEntityTypeEntityIdDocumentsResponse; |
| import org.apache.fineract.client.models.PostEntityTypeEntityIdDocumentsResponse; |
| import org.apache.fineract.client.util.Parts; |
| import org.junit.jupiter.api.Order; |
| import org.junit.jupiter.api.Test; |
| |
| /** |
| * Integration Test for /documents API. |
| * |
| * @author Michael Vorburger.ch |
| */ |
| public class DocumentTest extends IntegrationTest { |
| |
| final File testFile = new File(getClass().getResource("/michael.vorburger-crepes.jpg").getFile()); |
| |
| Long clientId = new ClientTest().getClientId(); |
| Long documentId; |
| |
| @Test |
| @Order(1) |
| void retrieveAllDocuments() { |
| assertThat(ok(fineract().documents.retrieveAllDocuments("clients", clientId))).isNotNull(); |
| } |
| |
| @Test |
| @Order(2) |
| void createDocument() { |
| String name = "Test"; |
| Part part = Parts.fromFile(testFile); |
| String description = null; |
| // TODO used var in tests when moved from fineract-client (Java 8 only) to new module |
| PostEntityTypeEntityIdDocumentsResponse response = ok( |
| fineract().documents.createDocument("clients", clientId, part, name, description)); |
| assertThat(response.getResourceId()).isNotNull(); |
| assertThat(response.getResourceIdentifier()).isNotEmpty(); |
| documentId = response.getResourceId(); |
| } |
| |
| @Test |
| @Order(3) |
| void getDocument() { |
| GetEntityTypeEntityIdDocumentsResponse doc = ok(fineract().documents.getDocument("clients", clientId, documentId)); |
| assertThat(doc.getName()).isEqualTo("Test"); |
| assertThat(doc.getFileName()).isEqualTo(testFile.getName()); |
| assertThat(doc.getDescription()).isNull(); |
| assertThat(doc.getId()).isEqualTo(documentId); |
| assertThat(doc.getParentEntityType()).isEqualTo("clients"); |
| assertThat(doc.getParentEntityId()).isEqualTo(clientId); |
| // TODO huh?! It's more than uploaded file; seems like a bug - it's including create body, not just file size |
| assertThat(doc.getSize()).isEqualTo(testFile.length() + 411); |
| assertThat(doc.getType()).isEqualTo("image/jpeg"); |
| // TODO doc.getStorageType() shouldn't be exposed by the API?! |
| } |
| |
| @Test |
| @Order(4) |
| void downloadFile() throws IOException { |
| ResponseBody r = ok(fineract().documents.downloadFile("clients", clientId, documentId)); |
| assertThat(r.contentType()).isEqualTo(MediaType.get("image/jpeg")); |
| assertThat(r.bytes().length).isEqualTo(testFile.length()); |
| // NOK: assertThat(r.contentLength()).isEqualTo(testFile.length()); |
| } |
| |
| @Test |
| @Order(10) |
| void updateDocument() { |
| String newName = "Test changed name"; |
| String newDescription = getClass().getName(); |
| ok(fineract().documents.updateDocument("clients", clientId, documentId, null, newName, newDescription)); |
| |
| GetEntityTypeEntityIdDocumentsResponse doc = ok(fineract().documents.getDocument("clients", clientId, documentId)); |
| assertThat(doc.getName()).isEqualTo(newName); |
| assertThat(doc.getDescription()).isEqualTo(newDescription); |
| } |
| |
| @Test |
| @Order(99) |
| void deleteDocument() { |
| ok(fineract().documents.deleteDocument("clients", clientId, documentId)); |
| assertThat(fineract().documents.getDocument("clients", clientId, documentId)).hasHttpStatus(404); |
| } |
| |
| @Order(9999) |
| @Test // FINERACT-1036 |
| void createDocumentBadArgs() { |
| assertThat(fineract().documents.createDocument("clients", 123L, null, "test.pdf", null)).hasHttpStatus(400); |
| } |
| } |