mirror of
https://github.com/penpot/penpot.git
synced 2026-08-26 14:48:43 +00:00
44 lines
1.8 KiB
Clojure
44 lines
1.8 KiB
Clojure
;; This Source Code Form is subject to the terms of the Mozilla Public
|
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
;;
|
|
;; Copyright (c) KALEIDOS SUBSIDIARY SL
|
|
|
|
(ns frontend-tests.util-zip-test
|
|
(:require
|
|
[app.util.zip :as-alias uz]
|
|
[app.worker.import :as worker.import]
|
|
[beicon.v2.core :as rx]
|
|
[cljs.test :as t :include-macros true]
|
|
[frontend-tests.helpers.mock :as mock]
|
|
[promesa.core :as p]))
|
|
|
|
(t/deftest read-as-text-nil-entry-raises-typed-error
|
|
(t/testing "read-as-text guards against nil entry"
|
|
(t/is (thrown-with-msg? js/Error #"nil"
|
|
(app.util.zip/read-as-text nil)))))
|
|
|
|
(t/deftest read-zip-manifest-missing-throws-validation-error
|
|
(t/async
|
|
done
|
|
(t/testing "read-zip-manifest rejects ZIPs without manifest.json"
|
|
(mock/with-mocks
|
|
{app.util.zip/get-entry (mock/stub (fn [_ _] (p/resolved nil)))}
|
|
(fn [done']
|
|
(->> (worker.import/read-zip-manifest #js {})
|
|
(rx/subs!
|
|
(fn [_]
|
|
(t/is false "expected validation error to be thrown")
|
|
(done'))
|
|
(fn [err]
|
|
(let [data (ex-data err)]
|
|
(t/is (= :invalid-penpot-file (:code data))
|
|
"missing manifest.json raises typed :invalid-penpot-file error")
|
|
(t/is (string? (:hint data))
|
|
"missing manifest.json error carries a :hint")
|
|
(t/is (re-find #"manifest\.json" (:hint data))
|
|
"missing manifest.json :hint mentions manifest.json")
|
|
(t/is (nil? (re-find #"getData" (:hint data)))
|
|
"missing manifest.json :hint does not leak the raw TypeError text")
|
|
(done'))))))
|
|
done)))) |