diff --git a/nixos/modules/tests/exercise-storage.py b/nixos/modules/tests/exercise-storage.py index d56232a4919e415c3331b7c8fc105016ca260b46..cc09a43f27dcbae136ea0173b2f76f93805bfe2b 100755 --- a/nixos/modules/tests/exercise-storage.py +++ b/nixos/modules/tests/exercise-storage.py @@ -12,6 +12,7 @@ from subprocess import check_output from io import BytesIO import requests +import hyperlink def main(): (clientDir,) = argv[1:] @@ -19,28 +20,62 @@ def main(): someData = urandom(2 ** 16) api_root = get_api_root(clientDir) - cap = put(api_root, someData) - dataReadBack = get(api_root, cap) + exercise_immutable(api_root, someData) + exercise_mkdir(api_root) + +def exercise_immutable(api_root, someData): + cap = tahoe_put(api_root, someData) + dataReadBack = tahoe_get(api_root, cap) assert someData == dataReadBack + return cap +def exercise_mkdir(api_root): + cap = tahoe_mkdir(api_root) + info = tahoe_stat(api_root, cap) + assert info def get_api_root(path): with open(path + u"/node.url") as f: - return f.read().strip() - + return hyperlink.URL.from_text(f.read().strip()) -def put(api_root, data): - response = requests.put(api_root + u"uri", BytesIO(data)) +def tahoe_put(api_root, data, **kwargs): + response = requests.put( + api_root.child(u"uri").to_uri(), + BytesIO(data), + ) response.raise_for_status() return response.text - -def get(api_root, cap): - response = requests.get(api_root + u"uri/" + cap, stream=True) +def tahoe_get(api_root, cap): + response = requests.get( + api_root.child(u"uri", cap).to_uri(), + stream=True, + ) response.raise_for_status() return response.raw.read() +def tahoe_mkdir(api_root): + response = requests.post( + api_root.child(u"uri").replace(query={u"t": u"mkdir", u"format": u"mdmf"}).to_uri(), + ) + response.raise_for_status() + return response.text + +def tahoe_link(api_root, dir_cap, name, subject_cap): + response = requests.post( + api_root.child(u"uri", dir_cap, name).replace(query={u"t": u"uri"}).to_uri(), + BytesIO(subject_cap), + ) + response.raise_for_status() + return response.text + +def tahoe_stat(api_root, cap): + response = requests.get( + api_root.child(u"uri", cap).replace(query={u"t": u"json"}).to_uri(), + ) + response.raise_for_status() + return response.json if __name__ == u'__main__': main() diff --git a/nixos/modules/tests/private-storage.nix b/nixos/modules/tests/private-storage.nix index e4d541989804992036b324eecd817c91920f62e9..cc2fa798f3654a0d249c8c21a9c9499a0740fc43 100644 --- a/nixos/modules/tests/private-storage.nix +++ b/nixos/modules/tests/private-storage.nix @@ -53,7 +53,7 @@ import <nixpkgs/nixos/tests/make-test.nix> { # plugin. pspkgs.privatestorage # Support for the tests we'll run. - (pkgs.python3.withPackages (ps: [ ps.requests ])) + (pkgs.python3.withPackages (ps: [ ps.requests ps.hyperlink ])) ]; } // networkConfig; diff --git a/nixos/pkgs/zkapauthorizer-repo.nix b/nixos/pkgs/zkapauthorizer-repo.nix index e85e99405a6e7003c4ba968053a5662a4f73f689..727827b61af700bbc96b6ae35d672925d96a3f75 100644 --- a/nixos/pkgs/zkapauthorizer-repo.nix +++ b/nixos/pkgs/zkapauthorizer-repo.nix @@ -4,6 +4,6 @@ in pkgs.fetchFromGitHub { owner = "PrivateStorageio"; repo = "ZKAPAuthorizer"; - rev = "996f0acdb46dc0f2ef14a06ae0012771b43c087c"; - sha256 = "09kkzq6pd61xwaq6dlfl25rqbi7ssdzkvknhsx59cyanxpk66rcd"; + rev = "ede17a6e2e53d56978dcd5962322987c15d59634"; + sha256 = "1i1cmj6mnmr3i1md7qks57xqdp1blhr375jsxds29glk9b8wp757"; } \ No newline at end of file