diff --git a/nixos/tests/grocy.nix b/nixos/tests/grocy.nix index fe0ddd341486..48bbc9f7d3fa 100644 --- a/nixos/tests/grocy.nix +++ b/nixos/tests/grocy.nix @@ -14,6 +14,9 @@ import ./make-test-python.nix ({ pkgs, ... }: { }; testScript = '' + from base64 import b64encode + from urllib.parse import quote + machine.start() machine.wait_for_open_port(80) machine.wait_for_unit("multi-user.target") @@ -42,6 +45,29 @@ import ./make-test-python.nix ({ pkgs, ... }: { machine.succeed("curl -sSI http://localhost/api/tasks 2>&1 | grep '401 Unauthorized'") + file_name = "test.txt" + file_name_base64 = b64encode(file_name.encode('ascii')).decode('ascii') + file_name_base64_urlencode = quote(file_name_base64) + + machine.succeed( + f"echo Sample equipment manual > /tmp/{file_name}" + ) + + machine.succeed( + f"curl -sSf -X 'PUT' -b 'grocy_session={cookie}' " + + f" 'http://localhost/api/files/equipmentmanuals/{file_name_base64_urlencode}' " + + " --header 'Accept: */*' " + + " --header 'Content-Type: application/octet-stream' " + + f" --data-binary '@/tmp/{file_name}' " + ) + + machine.succeed( + f"curl -sSf -X 'GET' -b 'grocy_session={cookie}' " + + f" 'http://localhost/api/files/equipmentmanuals/{file_name_base64_urlencode}' " + + " --header 'Accept: application/octet-stream' " + + f" | cmp /tmp/{file_name}" + ) + machine.shutdown() ''; }) diff --git a/pkgs/servers/grocy/0001-Define-configs-with-env-vars.patch b/pkgs/servers/grocy/0001-Define-configs-with-env-vars.patch index 4e3d36c33c9f..4429a804e80d 100644 --- a/pkgs/servers/grocy/0001-Define-configs-with-env-vars.patch +++ b/pkgs/servers/grocy/0001-Define-configs-with-env-vars.patch @@ -1,4 +1,4 @@ -From 035709eeac697945a26276cc17b996c1a0678ddc Mon Sep 17 00:00:00 2001 +From 05b762c6ca58ecb5fd631a019fbda69b0647785f Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Tue, 22 Dec 2020 15:38:56 +0100 Subject: [PATCH] Define configs with env vars @@ -33,10 +33,10 @@ index 17ba6a99..89f48089 100644 $container->set('UrlManager', function (Container $container) { diff --git a/services/DatabaseService.php b/services/DatabaseService.php -index dfcd5d4b..bc8d1a1d 100644 +index c093f361..0894791f 100644 --- a/services/DatabaseService.php +++ b/services/DatabaseService.php -@@ -107,6 +107,6 @@ class DatabaseService +@@ -114,6 +114,6 @@ class DatabaseService return GROCY_DATAPATH . '/grocy_' . $dbSuffix . '.db'; } @@ -45,23 +45,23 @@ index dfcd5d4b..bc8d1a1d 100644 } } diff --git a/services/FilesService.php b/services/FilesService.php -index 7d070350..fba2e923 100644 +index 7d070350..a6dd4b08 100644 --- a/services/FilesService.php +++ b/services/FilesService.php -@@ -103,7 +103,7 @@ class FilesService extends BaseService +@@ -10,7 +10,7 @@ class FilesService extends BaseService - public function GetFilePath($group, $fileName) + public function __construct() { -- $groupFolderPath = $this->StoragePath . '/' . $group; +- $this->StoragePath = GROCY_DATAPATH . '/storage'; + $this->StoragePath = getenv('GROCY_STORAGE_DIR'); - - if (!file_exists($groupFolderPath)) + if (!file_exists($this->StoragePath)) { + mkdir($this->StoragePath); diff --git a/services/StockService.php b/services/StockService.php -index f73ac5bd..6b6e693a 100644 +index 85f57803..15556112 100644 --- a/services/StockService.php +++ b/services/StockService.php -@@ -1589,8 +1589,7 @@ class StockService extends BaseService +@@ -1704,8 +1704,7 @@ class StockService extends BaseService throw new \Exception('No barcode lookup plugin defined'); } @@ -72,5 +72,5 @@ index f73ac5bd..6b6e693a 100644 { require_once $path; -- -2.31.1 +2.38.1