diff --git a/datasafe-rest-impl/datasafe.postman_collection.json b/datasafe-rest-impl/datasafe.postman_collection.json index 524b1dcfb..e17f46f1d 100644 --- a/datasafe-rest-impl/datasafe.postman_collection.json +++ b/datasafe-rest-impl/datasafe.postman_collection.json @@ -1,232 +1,432 @@ { "info": { - "_postman_id": "54d63510-b402-4a2c-b518-50e79a04d569", + "_postman_id": "db124a60-8dee-44e6-9bf0-97d18e0a9c14", "name": "Datasafe", - "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", + "_exporter_id": "18419826" }, "item": [ { - "name": "authenticate", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "value": "application/json", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "{\"userName\":\"username\",\"password\":\"password\"}" - }, - "url": { - "raw": "{{host}}/api/authenticate", - "host": [ - "{{host}}" + "name": "user", + "item": [ + { + "name": "authenticate", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "", + "pm.collectionVariables.set(\"token\", pm.response.headers.get('token'))", + "" + ], + "type": "text/javascript" + } + } ], - "path": [ - "api", - "authenticate" - ] - } - }, - "response": [] - }, - { - "name": "create user", - "request": { - "method": "PUT", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "value": "application/json", - "type": "text" + "request": { + "auth": { + "type": "noauth" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text", + "disabled": true + }, + { + "key": "Origin", + "value": "http://localhost:8080", + "type": "text", + "disabled": true + } + ], + "body": { + "mode": "raw", + "raw": "{\"userName\":\"username\",\"password\":\"password\"}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{host}}/api/authenticate", + "host": [ + "{{host}}" + ], + "path": [ + "api", + "authenticate" + ] + } }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "{\n\t\"userName\":\"ver\",\n\t\"password\":\"ver\"\n}" + "response": [] }, - "url": { - "raw": "{{host}}/user", - "host": [ - "{{host}}" + { + "name": "delete user Alice", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "" + ], + "type": "text/javascript" + } + } ], - "path": [ - "user" - ] - } - }, - "response": [] - }, - { - "name": "delete user", - "request": { - "method": "DELETE", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "value": "application/json", - "type": "text" - }, - { - "key": "user", - "value": "Max", - "type": "text" - }, - { - "key": "password", - "value": "123", - "type": "text" + "request": { + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "user", + "value": "Alice", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + } + ], + "url": { + "raw": "{{host}}/user", + "host": [ + "{{host}}" + ], + "path": [ + "user" + ] + } }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/user/", - "host": [ - "{{host}}" + "response": [] + }, + { + "name": "delete user Bob", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "" + ], + "type": "text/javascript" + } + } ], - "path": [ - "user", - "" - ] - } - }, - "response": [] - }, - { - "name": "store document", - "request": { - "method": "PUT", - "header": [ - { - "key": "Content-Type", - "value": "application/octet-stream", - "type": "text" - }, - { - "key": "user", - "value": "ver", - "type": "text" - }, - { - "key": "password", - "value": "ver", - "type": "text" + "request": { + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "user", + "value": "Bob", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + } + ], + "url": { + "raw": "{{host}}/user", + "host": [ + "{{host}}" + ], + "path": [ + "user" + ] + } }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - } - ], - "body": { - "mode": "file", - "file": { - "src": "/Users/maxim/tx/store/a.txt" - } + "response": [] }, - "url": { - "raw": "{{host}}/document/test11.txt", - "host": [ - "{{host}}" + { + "name": "create user Alice", + "event": [ + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + }, + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})" + ], + "type": "text/javascript" + } + } ], - "path": [ - "document", - "test11.txt" - ] - } - }, - "response": [] - }, - { - "name": "list documents", - "request": { - "method": "GET", - "header": [ - { - "key": "user", - "value": "vvv", - "type": "text" - }, - { - "key": "password", - "value": "vvv", - "type": "text" + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"userName\":\"Alice\",\n\t\"password\":\"123\"\n}" + }, + "url": { + "raw": "{{host}}/user", + "host": [ + "{{host}}" + ], + "path": [ + "user" + ] + } }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/documents/", - "host": [ - "{{host}}" + "response": [] + }, + { + "name": "create user Bob", + "event": [ + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + }, + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})" + ], + "type": "text/javascript" + } + } ], - "path": [ - "documents", - "" - ] + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"userName\":\"Bob\",\n\t\"password\":\"123\"\n}" + }, + "url": { + "raw": "{{host}}/user", + "host": [ + "{{host}}" + ], + "path": [ + "user" + ] + } + }, + "response": [] } - }, - "response": [] + ] }, { - "name": "read document", - "request": { - "method": "GET", - "header": [ - { - "key": "Accept", - "value": "application/octet-stream", - "type": "text" - }, - { - "key": "user", - "value": "ver", - "type": "text" - }, - { - "key": "password", - "value": "ver", - "type": "text" + "name": "private", + "item": [ + { + "name": "store document", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "multipart/form-data", + "type": "text" + }, + { + "key": "user", + "value": "Alice", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + } + ], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "file", + "type": "file", + "src": "postman-cloud:///1eeb44d1-546d-4870-ae7e-c2f44aeee23e" + } + ] + }, + "url": { + "raw": "{{host}}/document/test.txt", + "host": [ + "{{host}}" + ], + "path": [ + "document", + "test.txt" + ] + } }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/document/test11.txt", - "host": [ - "{{host}}" + "response": [] + }, + { + "name": "list documents", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "", + "var rb = JSON.parse(responseBody);", + "", + "pm.test(\"response contains one file\", () => {", + " pm.expect(rb.length).to.eql(1);", + "})" + ], + "type": "text/javascript" + } + } ], - "path": [ - "document", - "test11.txt" - ] - } - }, - "response": [ + "request": { + "auth": { + "type": "noauth" + }, + "method": "GET", + "header": [ + { + "key": "user", + "value": "Alice", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + } + ], + "url": { + "raw": "{{host}}/documents", + "host": [ + "{{host}}" + ], + "path": [ + "documents" + ] + } + }, + "response": [] + }, { "name": "read document", - "originalRequest": { + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "", + "pm.test(\"file content is read\", () => {", + " pm.expect(responseBody).to.eql(\"hello world!\");", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { "method": "GET", "header": [ { @@ -236,455 +436,730 @@ }, { "key": "user", - "value": "ddd", + "value": "Alice", "type": "text" }, { "key": "password", - "value": "ddd", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", "type": "text" } ], "url": { - "raw": "{{host}}/document/deep/path/test.txt", + "raw": "{{host}}/document/test.txt", "host": [ "{{host}}" ], "path": [ "document", - "deep", - "path", "test.txt" ] } }, - "status": "OK", - "code": 200, - "_postman_previewlanguage": "plain", - "header": [ - { - "key": "Transfer-Encoding", - "value": "chunked" - }, + "response": [] + }, + { + "name": "delete document", + "event": [ { - "key": "Date", - "value": "Fri, 24 May 2019 11:50:22 GMT" + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})" + ], + "type": "text/javascript" + } } ], - "cookie": [], - "body": "test" - } - ] - }, - { - "name": "delete document", - "request": { - "method": "DELETE", - "header": [ - { - "key": "user", - "value": "iii", - "type": "text" - }, - { - "key": "password", - "value": "iii", - "type": "text" + "request": { + "method": "DELETE", + "header": [ + { + "key": "user", + "value": "Alice", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + } + ], + "url": { + "raw": "{{host}}/document/test.txt", + "host": [ + "{{host}}" + ], + "path": [ + "document", + "test.txt" + ] + } }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/document/deep/path/test2.txt", - "host": [ - "{{host}}" - ], - "path": [ - "document", - "deep", - "path", - "test2.txt" - ] + "response": [] } - }, - "response": [] + ] }, { - "name": "send to inbox", - "request": { - "method": "PUT", - "header": [ - { - "key": "Content-Type", - "value": "application/octet-stream", - "type": "text" - }, - { - "key": "user", - "value": "ver", - "type": "text" - }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - } - ], - "body": { - "mode": "file", - "file": { - "src": "/Users/maxim/test.txt" - } - }, - "url": { - "raw": "{{host}}/inbox/test2.txt", - "host": [ - "{{host}}" + "name": "versioned", + "item": [ + { + "name": "versioned write", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})" + ], + "type": "text/javascript" + } + } ], - "path": [ - "inbox", - "test2.txt" - ] - } - }, - "response": [] - }, - { - "name": "inbox read", - "request": { - "method": "GET", - "header": [ - { - "key": "user", - "value": "ver", - "type": "text" - }, - { - "key": "password", - "value": "ver", - "type": "text" - }, - { - "key": "Accept", - "value": "application/octet-stream", - "type": "text" + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "multipart/form-data", + "type": "text" + }, + { + "key": "user", + "value": "Alice", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + } + ], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "file", + "type": "file", + "src": "postman-cloud:///1eeb44d1-546d-4870-ae7e-c2f44aeee23e" + } + ] + }, + "url": { + "raw": "{{host}}/versioned/test.txt", + "host": [ + "{{host}}" + ], + "path": [ + "versioned", + "test.txt" + ] + } }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/inbox/test2.txt", - "host": [ - "{{host}}" + "response": [] + }, + { + "name": "versioned write 2", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})" + ], + "type": "text/javascript" + } + } ], - "path": [ - "inbox", - "test2.txt" - ] - } - }, - "response": [] - }, - { - "name": "inbox delete", - "request": { - "method": "DELETE", - "header": [ - { - "key": "user", - "value": "iii", - "type": "text" - }, - { - "key": "password", - "value": "iii", - "type": "text" + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "multipart/form-data", + "type": "text" + }, + { + "key": "user", + "value": "Alice", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + } + ], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "file", + "type": "file", + "src": "postman-cloud:///1eeb4517-de20-4860-b895-814e47ad657f" + } + ] + }, + "url": { + "raw": "{{host}}/versioned/test.txt", + "host": [ + "{{host}}" + ], + "path": [ + "versioned", + "test.txt" + ] + } }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/inbox/test2.txt", - "host": [ - "{{host}}" + "response": [] + }, + { + "name": "versioned list (last version)", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "", + "var rb = JSON.parse(responseBody);", + "", + "pm.test(\"response contains one file\", () => {", + " pm.expect(rb.length).to.eql(1);", + "})" + ], + "type": "text/javascript" + } + } ], - "path": [ - "inbox", - "test2.txt" - ] - } - }, - "response": [] - }, - { - "name": "inbox list", - "request": { - "method": "GET", - "header": [ - { - "key": "user", - "value": "ver", - "type": "text" - }, - { - "key": "password", - "value": "ver", - "type": "text" - }, - { - "key": "Accept", - "value": "application/json", - "type": "text" + "request": { + "method": "GET", + "header": [ + { + "key": "user", + "value": "Alice", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + }, + { + "key": "Accept", + "value": "application/json", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "url": { + "raw": "{{host}}/versioned/test.txt", + "host": [ + "{{host}}" + ], + "path": [ + "versioned", + "test.txt" + ] + } }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/inbox/", - "host": [ - "{{host}}" + "response": [] + }, + { + "name": "versions list", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "", + "var rb = JSON.parse(responseBody);", + "", + "pm.test(\"response contains one file\", () => {", + " pm.expect(rb.length).to.eql(2);", + "})" + ], + "type": "text/javascript" + } + } ], - "path": [ - "inbox", - "" - ] - } - }, - "response": [] - }, - { - "name": "version list", - "request": { - "method": "GET", - "header": [ - { - "key": "user", - "type": "text", - "value": "ver" - }, - { - "key": "password", - "type": "text", - "value": "ver" - }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - }, - { - "key": "Accept", - "value": "application/json", - "type": "text" + "request": { + "method": "GET", + "header": [ + { + "key": "user", + "type": "text", + "value": "Alice" + }, + { + "key": "password", + "type": "text", + "value": "123" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + }, + { + "key": "Accept", + "value": "application/json", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "url": { + "raw": "{{host}}/versions/list/test.txt", + "host": [ + "{{host}}" + ], + "path": [ + "versions", + "list", + "test.txt" + ] + } }, - { - "key": "Content-Type", - "value": "application/json", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/versions/list/", - "host": [ - "{{host}}" + "response": [] + }, + { + "name": "versioned read (last version)", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "", + "pm.test(\"file content is read\", () => {", + " pm.expect(responseBody).to.eql(\"yet another file\");", + "})" + ], + "type": "text/javascript" + } + } ], - "path": [ - "versions", - "list", - "" - ] - } - }, - "response": [] - }, - { - "name": "versioned read", - "request": { - "method": "GET", - "header": [ - { - "key": "user", - "value": "ver", - "type": "text" - }, - { - "key": "password", - "value": "ver", - "type": "text" - }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - }, - { - "key": "Accept", - "value": "application/octet-stream", - "type": "text" + "request": { + "method": "GET", + "header": [ + { + "key": "user", + "value": "Alice", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + }, + { + "key": "Accept", + "value": "application/octet-stream", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "url": { + "raw": "{{host}}/versioned/test.txt", + "host": [ + "{{host}}" + ], + "path": [ + "versioned", + "test.txt" + ] + } }, - { - "key": "Content-Type", - "value": "application/json", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/versioned/test10.txt", - "host": [ - "{{host}}" + "response": [] + }, + { + "name": "versioned delete", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "" + ], + "type": "text/javascript" + } + } ], - "path": [ - "versioned", - "test10.txt" - ] - } - }, - "response": [] - }, - { - "name": "versioned delete", - "request": { - "method": "DELETE", - "header": [ - { - "key": "user", - "value": "ver", - "type": "text" - }, - { - "key": "password", - "value": "ver", - "type": "text" - }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - }, - { - "key": "Accept", - "value": "application/json", - "type": "text" + "request": { + "method": "DELETE", + "header": [ + { + "key": "user", + "value": "Alice", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + }, + { + "key": "Accept", + "value": "application/json", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "url": { + "raw": "{{host}}/versioned/test.txt", + "host": [ + "{{host}}" + ], + "path": [ + "versioned", + "test.txt" + ] + } }, - { - "key": "Content-Type", - "value": "application/json", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/versioned/test4.txt", - "host": [ - "{{host}}" - ], - "path": [ - "versioned", - "test4.txt" - ] + "response": [] } - }, - "response": [] + ] }, { - "name": "versioned write", - "request": { - "method": "PUT", - "header": [ - { - "key": "Content-Type", - "value": "application/octet-stream", - "type": "text" + "name": "inbox", + "item": [ + { + "name": "send to inbox", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "user", + "value": "Alice", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + }, + { + "key": "recipients", + "value": "Bob", + "type": "text" + } + ], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "file", + "type": "file", + "src": "postman-cloud:///1eeb44d1-546d-4870-ae7e-c2f44aeee23e" + } + ] + }, + "url": { + "raw": "{{host}}/inbox/document/test.txt", + "host": [ + "{{host}}" + ], + "path": [ + "inbox", + "document", + "test.txt" + ] + } }, - { - "key": "user", - "value": "ver", - "type": "text" + "response": [] + }, + { + "name": "inbox list", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "", + "var rb = JSON.parse(responseBody);", + "", + "pm.test(\"response contains one file\", () => {", + " pm.expect(rb.length).to.eql(1);", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "user", + "value": "Bob", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "Accept", + "value": "application/json", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + } + ], + "url": { + "raw": "{{host}}/inbox/documents", + "host": [ + "{{host}}" + ], + "path": [ + "inbox", + "documents" + ] + } }, - { - "key": "password", - "value": "ver", - "type": "text" + "response": [] + }, + { + "name": "inbox read", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "", + "pm.test(\"file content is read\", () => {", + " pm.expect(responseBody).to.eql(\"hello world!\");", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "user", + "value": "Bob", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "Accept", + "value": "application/octet-stream", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + } + ], + "url": { + "raw": "{{host}}/inbox/document/test.txt", + "host": [ + "{{host}}" + ], + "path": [ + "inbox", + "document", + "test.txt" + ] + } }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - } - ], - "body": { - "mode": "file", - "file": { - "src": "/Users/maxim/parallel_transactions_merge_logic_fix.patch" - } + "response": [] }, - "url": { - "raw": "{{host}}/versioned/test10.txt", - "host": [ - "{{host}}" + { + "name": "inbox delete", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "" + ], + "type": "text/javascript" + } + } ], - "path": [ - "versioned", - "test10.txt" - ] + "request": { + "method": "DELETE", + "header": [ + { + "key": "user", + "value": "Bob", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + } + ], + "url": { + "raw": "{{host}}/inbox/document/test.txt", + "host": [ + "{{host}}" + ], + "path": [ + "inbox", + "document", + "test.txt" + ] + } + }, + "response": [] } - }, - "response": [] + ] + } + ], + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{token}}", + "type": "string" + } + ] + }, + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } }, { - "name": "versioned list", - "request": { - "method": "GET", - "header": [ - { - "key": "user", - "value": "ver", - "type": "text" - }, - { - "key": "password", - "value": "ver", - "type": "text" - }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - }, - { - "key": "Accept", - "value": "application/json", - "type": "text" - }, - { - "key": "Content-Type", - "value": "application/json", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/versioned/", - "host": [ - "{{host}}" - ], - "path": [ - "versioned", - "" - ] - } - }, - "response": [] + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "variable": [ + { + "key": "host", + "value": "http://localhost:8080", + "type": "string" + }, + { + "key": "token", + "value": "" } ] } \ No newline at end of file diff --git a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/controller/InboxController.java b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/controller/InboxController.java index 2809d383b..58433fde1 100644 --- a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/controller/InboxController.java +++ b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/controller/InboxController.java @@ -57,9 +57,9 @@ public void writeToInbox(@RequestHeader String user, @RequestHeader Set recipients, @PathVariable String path, @RequestParam("file") MultipartFile file) { + path = path.replaceAll("^/", ""); UserIDAuth fromUser = new UserIDAuth(new UserID(user), ReadKeyPasswordHelper.getForString(password)); Set toUsers = recipients.stream().map(UserID::new).collect(Collectors.toSet()); - path = path.substring(1); try (OutputStream os = dataSafeService.inboxService().write(WriteInboxRequest.forDefaultPublic(fromUser, toUsers, path)); InputStream is = file.getInputStream()) { StreamUtils.copy(is, os); @@ -76,8 +76,8 @@ public void readFromInbox(@RequestHeader String user, @RequestHeader String password, @PathVariable String path, HttpServletResponse response) { + path = path.replaceAll("^/", ""); UserIDAuth userIDAuth = new UserIDAuth(new UserID(user), ReadKeyPasswordHelper.getForString(password)); - path = path.substring(1); PrivateResource resource = BasePrivateResource.forPrivate(path); // this is needed for swagger, produces is just a directive: response.addHeader(CONTENT_TYPE, APPLICATION_OCTET_STREAM_VALUE); @@ -96,6 +96,7 @@ public void readFromInbox(@RequestHeader String user, public void deleteFromInbox(@RequestHeader String user, @RequestHeader String password, @PathVariable String path) { + path = path.replaceAll("^/", ""); UserIDAuth userIDAuth = new UserIDAuth(new UserID(user), ReadKeyPasswordHelper.getForString(password)); PrivateResource resource = BasePrivateResource.forPrivate(path); RemoveRequest request = RemoveRequest.forPrivate(userIDAuth, resource); @@ -110,10 +111,8 @@ public void deleteFromInbox(@RequestHeader String user, public List listInbox(@RequestHeader String user, @RequestHeader String password, @PathVariable(required = false) String path) { + path = path.replaceAll("^/", ""); UserIDAuth userIDAuth = new UserIDAuth(new UserID(user), ReadKeyPasswordHelper.getForString(password)); - path = Optional.ofNullable(path) - .map(it -> it.replaceAll("^\\.$", "")) - .orElse("./"); try { List inboxList = dataSafeService.inboxService().list(ListRequest.forDefaultPrivate(userIDAuth, path)) .map(e -> e.getResource().asPrivate().decryptedPath().asString()) diff --git a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/controller/VersionController.java b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/controller/VersionController.java index a373e31d2..ac91da98e 100644 --- a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/controller/VersionController.java +++ b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/controller/VersionController.java @@ -32,7 +32,6 @@ import java.io.InputStream; import java.io.OutputStream; import java.util.List; -import java.util.Optional; import static org.springframework.http.HttpHeaders.CONTENT_TYPE; import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; @@ -55,7 +54,7 @@ public List listVersionedDocuments(@RequestHeader String user, @RequestHeader(defaultValue = StorageIdentifier.DEFAULT_ID) String storageId, @PathVariable(required = false) String path) { UserIDAuth userIDAuth = new UserIDAuth(new UserID(user), ReadKeyPasswordHelper.getForString(password)); - path = Optional.ofNullable(path).orElse("./"); + path = path.replaceAll("^/", ""); try { List documentList = versionedDatasafeServices.latestPrivate().listWithDetails( ListRequest.forPrivate(userIDAuth, new StorageIdentifier(storageId), path)) @@ -79,6 +78,7 @@ public void readVersionedDocument(@RequestHeader String user, @RequestHeader(defaultValue = StorageIdentifier.DEFAULT_ID) String storageId, @PathVariable String path, HttpServletResponse response) { + path = path.replaceAll("^/", ""); UserIDAuth userIDAuth = new UserIDAuth(new UserID(user), ReadKeyPasswordHelper.getForString(password)); ReadRequest request = ReadRequest.forPrivate(userIDAuth, new StorageIdentifier(storageId), path); @@ -102,6 +102,7 @@ public void writeVersionedDocument(@RequestHeader String user, @RequestHeader(defaultValue = StorageIdentifier.DEFAULT_ID) String storageId, @PathVariable String path, @RequestParam("file") MultipartFile file) { + path = path.replaceAll("^/", ""); UserIDAuth userIDAuth = new UserIDAuth(new UserID(user), ReadKeyPasswordHelper.getForString(password)); WriteRequest request = WriteRequest.forPrivate(userIDAuth, new StorageIdentifier(storageId), path); @@ -120,6 +121,7 @@ public void deleteVersionedDocument(@RequestHeader String user, @RequestHeader String password, @RequestHeader(defaultValue = StorageIdentifier.DEFAULT_ID) String storageId, @PathVariable String path) { + path = path.replaceAll("^/", ""); UserIDAuth userIDAuth = new UserIDAuth(new UserID(user), ReadKeyPasswordHelper.getForString(password)); RemoveRequest request = RemoveRequest.forPrivate(userIDAuth, new StorageIdentifier(storageId), path); @@ -136,9 +138,7 @@ public List versionsOf(@RequestHeader String user, @RequestHeader(defaultValue = StorageIdentifier.DEFAULT_ID) String storageId, @PathVariable(required = false) String path) { UserIDAuth userIDAuth = new UserIDAuth(new UserID(user), ReadKeyPasswordHelper.getForString(password)); - path = Optional.ofNullable(path) - .map(it -> it.replaceAll("^\\.$", "")) - .orElse("./"); + path = path.replaceAll("^/", ""); ListRequest request = ListRequest.forPrivate(userIDAuth, new StorageIdentifier(storageId), path);