diff --git a/.dir-locals.el b/.dir-locals.el index 353d0fc76aa018e6db8d9a0c0280d03c83af3a6a..4ddf9d420b72f471ba143122ebc94c5b205c741e 100644 --- a/.dir-locals.el +++ b/.dir-locals.el @@ -39,7 +39,7 @@ (project 1) (qp-expect-with-engines 1) (render-file 1) - (resolve-private-fns 1) + (resolve-private-vars 1) (select 1) (sync-in-context 2) (when-testing-engine 1) diff --git a/frontend/src/metabase/admin/settings/components/SettingsCustomMaps.jsx b/frontend/src/metabase/admin/settings/components/SettingsCustomMaps.jsx index 93451291a9aae2c845d7fba9ed2bce5f3785ef1b..45de6149c257281eceab08a407f4e735c349c89a 100644 --- a/frontend/src/metabase/admin/settings/components/SettingsCustomMaps.jsx +++ b/frontend/src/metabase/admin/settings/components/SettingsCustomMaps.jsx @@ -247,7 +247,7 @@ const EditMap = ({ map, onMapChange, originalMap, geoJson, geoJsonLoading, geoJs </SettingContainer> { (geoJson || geoJsonLoading || geoJsonError) && <LoadingAndErrorWrapper loading={geoJsonLoading} error={geoJsonError}> - { () => + { () => // eslint-disable-line react/display-name <div> <SettingContainer description="Which property specifies the region’s identifier?"> <GeoJsonPropertySelect diff --git a/frontend/src/metabase/visualizations/components/LegacyChoropleth.jsx b/frontend/src/metabase/visualizations/components/LegacyChoropleth.jsx index ded6a75f7eb01edcf7fd9966c3ce4d66974563f0..89bfee6dc9695e010cb052856203c867037e4454 100644 --- a/frontend/src/metabase/visualizations/components/LegacyChoropleth.jsx +++ b/frontend/src/metabase/visualizations/components/LegacyChoropleth.jsx @@ -14,7 +14,7 @@ const LegacyChoropleth = ({ series, geoJson, projection, getColor, onHoverFeatur return ( <div className="absolute top bottom left right flex layout-centered"> <ShouldUpdate series={series} shouldUpdate={(props, nextProps) => !isSameSeries(props.series, nextProps.series)}> - { () => + { () => // eslint-disable-line react/display-name <svg className="flex-full m1" viewBox={`0 0 ${width} ${height}`}> {geoJson.features.map((feature, index) => <path diff --git a/src/metabase/api/geojson.clj b/src/metabase/api/geojson.clj index af15f8e22f7570fa889846f21b30f78eba66c4e1..d71c752c913d68bff034526bcba61b3018dc3069 100644 --- a/src/metabase/api/geojson.clj +++ b/src/metabase/api/geojson.clj @@ -1,42 +1,70 @@ (ns metabase.api.geojson - (:require [cheshire.core :as json] + (:require [clojure.java.io :as io] + [cheshire.core :as json] [compojure.core :refer [defroutes GET]] [schema.core :as s] [metabase.api.common :refer :all] [metabase.models.setting :refer [defsetting], :as setting] [metabase.util :as u])) +(defn- valid-json? + "Does this URL-OR-RESOURCE point to valid JSON? + URL-OR-RESOURCE should be something that can be passed to `slurp`, like an HTTP URL or a `java.net.URL` (which is what `io/resource` returns below)." + [url-or-resource] + (u/with-timeout 5000 + (json/parse-string (slurp url-or-resource))) + true) -(def ^:private valid-json-url? +(defn- valid-json-resource? + "Does this RELATIVE-PATH point to a valid local JSON resource? (RELATIVE-PATH is something like \"app/charts/us-states.json\".)" + [relative-path] + (when-let [^java.net.URI uri (u/ignore-exceptions (java.net.URI. relative-path))] + (when-not (.isAbsolute uri) + (valid-json? (io/resource (str "frontend_client" uri)))))) + +(defn- valid-json-url? + "Is URL a valid HTTP URL and does it point to valid JSON?" + [url] + (when (u/is-url? url) + (valid-json? url))) + +(def ^:private valid-json-url-or-resource? "Check that remote URL points to a valid JSON file, or throw an exception. Since the remote file isn't likely to change, this check isn't repeated for URLs that have already succeded; if the check fails, an exception is thrown (thereby preventing memoization)." - (memoize (fn [url] - (assert (u/is-url? url) - (str "Invalid URL: " url)) - (u/with-timeout 5000 - (json/parse-string (slurp url))) - true))) + (memoize (fn [url-or-resource-path] + (or (valid-json-url? url-or-resource-path) + (valid-json-resource? url-or-resource-path) + (throw (Exception. (str "Invalid JSON URL or resource: " url-or-resource-path))))))) (def ^:private CustomGeoJSON - {s/Keyword {:name s/Str - :url (s/constrained s/Str valid-json-url? "URL must point to a valid JSON file.") - :region_key (s/maybe s/Str) - :region_name (s/maybe s/Str)}}) + {s/Keyword {:name s/Str + :url (s/constrained s/Str valid-json-url-or-resource? "URL must point to a valid JSON file.") + :region_key (s/maybe s/Str) + :region_name (s/maybe s/Str) + (s/optional-key :builtin) s/Bool}}) -(def ^:private builtin-geojson - {:us_states {:name "United States" :url "/app/charts/us-states.json" :region_key "name" :region_name "name" :builtin true} - :world_countries {:name "World" :url "/app/charts/world.json" :region_key "ISO_A2" :region_name "NAME" :builtin true}}) +(def ^:private ^:const builtin-geojson + {:us_states {:name "United States" + :url "/app/charts/us-states.json" + :region_key "name" + :region_name "name" + :builtin true} + :world_countries {:name "World" + :url "/app/charts/world.json" + :region_key "ISO_A2" + :region_name "NAME" + :builtin true}}) (defsetting custom-geojson "JSON containing information about custom GeoJSON files for use in map visualizations instead of the default US State or World GeoJSON." - :type :json + :type :json :default {} - :getter (fn [] (merge (setting/get-json :custom-geojson) builtin-geojson)) - :setter (fn [new-value] - (when new-value - (s/validate CustomGeoJSON new-value)) - (setting/set-json! :custom-geojson new-value))) + :getter (fn [] (merge (setting/get-json :custom-geojson) builtin-geojson)) + :setter (fn [new-value] + (when new-value + (s/validate CustomGeoJSON new-value)) + (setting/set-json! :custom-geojson new-value))) (defendpoint GET "/:key" diff --git a/test/metabase/api/activity_test.clj b/test/metabase/api/activity_test.clj index 067db2ee74e85b20b4709babf3330d509f8146f3..1b5a49123162eefb4c1411f3cbba9adf74ec4c97 100644 --- a/test/metabase/api/activity_test.clj +++ b/test/metabase/api/activity_test.clj @@ -8,7 +8,7 @@ [view-log :refer [ViewLog]]) [metabase.test.data :refer :all] [metabase.test.data.users :refer :all] - [metabase.test.util :refer [match-$ expect-with-temp resolve-private-fns], :as tu] + [metabase.test.util :refer [match-$ expect-with-temp resolve-private-vars], :as tu] [metabase.util :as u])) ;; GET / @@ -172,7 +172,7 @@ ;;; activities->referenced-objects, referenced-objects->existing-objects, add-model-exists-info -(resolve-private-fns metabase.api.activity activities->referenced-objects referenced-objects->existing-objects add-model-exists-info) +(resolve-private-vars metabase.api.activity activities->referenced-objects referenced-objects->existing-objects add-model-exists-info) (def ^:private ^:const fake-activities [{:model "dashboard", :model_id 43, :topic :dashboard-create, :details {}} diff --git a/test/metabase/api/geojson_test.clj b/test/metabase/api/geojson_test.clj index b2e0a3f4bf69310c42ff3022701bd1d2062c5db6..f71cbdc215f1f5290ddcc8b7d06627cc07fd61f3 100644 --- a/test/metabase/api/geojson_test.clj +++ b/test/metabase/api/geojson_test.clj @@ -5,8 +5,10 @@ [metabase.test.data.users :refer [user->client]] [metabase.test.util :as tu])) -(tu/resolve-private-fns metabase.api.geojson +(tu/resolve-private-vars metabase.api.geojson valid-json-url? + valid-json-resource? + builtin-geojson CustomGeoJSON) (def ^:private ^:const ^String test-geojson-url @@ -16,6 +18,7 @@ (def ^:private ^:const test-custom-geojson {:middle-earth {:name "Middle Earth" :url test-geojson-url + :builtin true :region_key nil :region_name nil}}) @@ -25,6 +28,11 @@ (valid-json-url? test-geojson-url)) +;;; test valid-json-resource? +(expect + (valid-json-resource? "/app/charts/us-states.json")) + + ;;; test the CustomGeoJSON schema (expect (boolean (s/validate @CustomGeoJSON test-custom-geojson))) @@ -47,7 +55,7 @@ ;;; test that we can set the value of custom-geojson via the normal routes (expect - test-custom-geojson + (merge @builtin-geojson test-custom-geojson) ;; bind a temporary value so it will get set back to its old value here after the API calls are done stomping all over it (tu/with-temporary-setting-values [custom-geojson nil] ((user->client :crowberto) :put 200 "setting/custom-geojson" {:value test-custom-geojson}) diff --git a/test/metabase/api/session_test.clj b/test/metabase/api/session_test.clj index a7d35cd28857b91ffbc9e9e7217c291716de576f..e11768637e607e3bb293f0edbaa7e3e9beb0d2dd 100644 --- a/test/metabase/api/session_test.clj +++ b/test/metabase/api/session_test.clj @@ -11,7 +11,7 @@ [metabase.test.data :refer :all] [metabase.test.data.users :refer :all] [metabase.util :as u] - [metabase.test.util :refer [random-name resolve-private-fns with-temporary-setting-values with-temp], :as tu])) + [metabase.test.util :refer [random-name resolve-private-vars with-temporary-setting-values with-temp], :as tu])) ;; ## POST /api/session ;; Test that we can login @@ -182,7 +182,7 @@ ;;; ------------------------------------------------------------ TESTS FOR GOOGLE AUTH STUFF ------------------------------------------------------------ -(resolve-private-fns metabase.api.session email->domain email-in-domain? autocreate-user-allowed-for-email? google-auth-create-new-user! google-auth-fetch-or-create-user!) +(resolve-private-vars metabase.api.session email->domain email-in-domain? autocreate-user-allowed-for-email? google-auth-create-new-user! google-auth-fetch-or-create-user!) ;;; tests for email->domain (expect "metabase.com" (email->domain "cam@metabase.com")) diff --git a/test/metabase/api/table_test.clj b/test/metabase/api/table_test.clj index a59b0567d6856822328932e007942ee27c4a081d..b48846b8fcc9fa7388a276075dfe4d7e179343d4 100644 --- a/test/metabase/api/table_test.clj +++ b/test/metabase/api/table_test.clj @@ -11,10 +11,10 @@ (metabase.test.data [dataset-definitions :as defs] [datasets :as datasets] [users :refer :all]) - [metabase.test.util :refer [match-$ resolve-private-fns], :as tu] + [metabase.test.util :refer [match-$ resolve-private-vars], :as tu] [metabase.util :as u])) -(resolve-private-fns metabase.models.table pk-field-id) +(resolve-private-vars metabase.models.table pk-field-id) ;; ## /api/org/* AUTHENTICATION Tests diff --git a/test/metabase/db_test.clj b/test/metabase/db_test.clj index 55875b73813f5528d6c2fd5cc51ecfb1d66de390..b48ca75809c053a33b6efebb901b0d60cb2c431c 100644 --- a/test/metabase/db_test.clj +++ b/test/metabase/db_test.clj @@ -3,7 +3,7 @@ [metabase.db :as db] [metabase.test.util :as tu])) -(tu/resolve-private-fns metabase.db parse-connection-string) +(tu/resolve-private-vars metabase.db parse-connection-string) ;; parse minimal connection string (expect {:type :postgres :user nil :password nil :host "localhost" :port nil :dbname "toms_cool_db" } diff --git a/test/metabase/driver/generic_sql_test.clj b/test/metabase/driver/generic_sql_test.clj index 5254f3d5142826e0fb36d661e922cdd847a841c6..49c66ee3457c1f95ccab7e31d20f23959413e58d 100644 --- a/test/metabase/driver/generic_sql_test.clj +++ b/test/metabase/driver/generic_sql_test.clj @@ -9,7 +9,7 @@ [metabase.test.data :refer :all] (metabase.test.data [dataset-definitions :as defs] [datasets :as datasets]) - [metabase.test.util :refer [resolve-private-fns]]) + [metabase.test.util :refer [resolve-private-vars]]) (:import metabase.driver.h2.H2Driver)) (def ^:private users-table (delay (Table :name "USERS"))) @@ -79,7 +79,7 @@ {:id (id :venues :price), :values [1 2 3 4]}]} (driver/analyze-table (H2Driver.) @venues-table (set (mapv :id (table/fields @venues-table))))) -(resolve-private-fns metabase.driver.generic-sql field-avg-length field-values-lazy-seq table-rows-seq) +(resolve-private-vars metabase.driver.generic-sql field-avg-length field-values-lazy-seq table-rows-seq) ;;; FIELD-AVG-LENGTH (datasets/expect-with-engines @generic-sql-engines diff --git a/test/metabase/driver/h2_test.clj b/test/metabase/driver/h2_test.clj index 42d15870aa7eec87e79486088ec1a98a0410bec8..c32fe5f6136f725887cc6883b01df8411f6a126d 100644 --- a/test/metabase/driver/h2_test.clj +++ b/test/metabase/driver/h2_test.clj @@ -3,10 +3,10 @@ [metabase.db :as db] [metabase.driver :as driver] [metabase.driver.h2 :refer :all] - [metabase.test.util :refer [resolve-private-fns]]) + [metabase.test.util :refer [resolve-private-vars]]) (:import metabase.driver.h2.H2Driver)) -(resolve-private-fns metabase.driver.h2 connection-string->file+options file+options->connection-string connection-string-set-safe-options) +(resolve-private-vars metabase.driver.h2 connection-string->file+options file+options->connection-string connection-string-set-safe-options) ;; Check that the functions for exploding a connection string's options work as expected (expect diff --git a/test/metabase/driver/postgres_test.clj b/test/metabase/driver/postgres_test.clj index 5312ab42c325a2543929a3cb20e2633cb30f9dc8..644ee25626d7259d85db0a9f6d23441fb3356ebf 100644 --- a/test/metabase/driver/postgres_test.clj +++ b/test/metabase/driver/postgres_test.clj @@ -172,7 +172,7 @@ ;; timezone tests -(tu/resolve-private-fns metabase.driver.generic-sql.query-processor +(tu/resolve-private-vars metabase.driver.generic-sql.query-processor run-query-with-timezone) (defn- get-timezone-with-report-timezone [report-timezone] diff --git a/test/metabase/middleware_test.clj b/test/metabase/middleware_test.clj index ec0e6923650053155930d2e67b7b1aca3bdaa2e1..cd963ce8cf7d353a512d5863f5248a314b9f03df 100644 --- a/test/metabase/middleware_test.clj +++ b/test/metabase/middleware_test.clj @@ -64,7 +64,7 @@ (str (java.util.UUID/randomUUID))) -(tu/resolve-private-fns metabase.db simple-insert!) +(tu/resolve-private-vars metabase.db simple-insert!) ;; valid session ID (expect diff --git a/test/metabase/models/dashboard_test.clj b/test/metabase/models/dashboard_test.clj index 83b98c0ae7d63a1840192fe6858eff3440ed8742..abb612ed744b5f7cbc36d29a1dd42f2ce2f1cd63 100644 --- a/test/metabase/models/dashboard_test.clj +++ b/test/metabase/models/dashboard_test.clj @@ -110,7 +110,7 @@ ;;; revert-dashboard! -(tu/resolve-private-fns metabase.models.dashboard revert-dashboard!) +(tu/resolve-private-vars metabase.models.dashboard revert-dashboard!) (expect [{:name "Test Dashboard" diff --git a/test/metabase/models/field_test.clj b/test/metabase/models/field_test.clj index 4eb01a4087584cd6819773bbd94e14f15b989dae..e9977ee5756d0ce9f2600af534f97063bb5d2a7c 100644 --- a/test/metabase/models/field_test.clj +++ b/test/metabase/models/field_test.clj @@ -73,7 +73,7 @@ ;;; infer-field-special-type -(tu/resolve-private-fns metabase.models.field infer-field-special-type) +(tu/resolve-private-vars metabase.models.field infer-field-special-type) (expect nil (infer-field-special-type nil nil)) (expect nil (infer-field-special-type "id" nil)) diff --git a/test/metabase/models/humanization_test.clj b/test/metabase/models/humanization_test.clj index 1eef36ecc97ef2f09ffbf568bed0f147b75ee4ac..9309462ed9d086feec39ac26bf47aae3e44faf3f 100644 --- a/test/metabase/models/humanization_test.clj +++ b/test/metabase/models/humanization_test.clj @@ -6,7 +6,7 @@ [metabase.test.util :as tu] [metabase.db :as db])) -(tu/resolve-private-fns metabase.models.humanization +(tu/resolve-private-vars metabase.models.humanization name->human-readable-name:simple name->human-readable-name:advanced) ;;; name->human-readable-name:advanced diff --git a/test/metabase/models/metric_test.clj b/test/metabase/models/metric_test.clj index 23e993958d4cd1632fd8a0d41b1c04202a98da0b..e040ae06ec444b0a1bdae31cd060196833be7204 100644 --- a/test/metabase/models/metric_test.clj +++ b/test/metabase/models/metric_test.clj @@ -160,7 +160,7 @@ ;; ## Metric Revisions -(tu/resolve-private-fns metabase.models.metric serialize-metric diff-metrics) +(tu/resolve-private-vars metabase.models.metric serialize-metric diff-metrics) ;; serialize-metric (expect diff --git a/test/metabase/models/segment_test.clj b/test/metabase/models/segment_test.clj index 737383ca25930e33945dcf7550ee1cb1374f646a..a2e86d95a6df0ae1f310f7f4fe7dfd9746ae1297 100644 --- a/test/metabase/models/segment_test.clj +++ b/test/metabase/models/segment_test.clj @@ -154,7 +154,7 @@ ;; ## Segment Revisions -(tu/resolve-private-fns metabase.models.segment serialize-segment diff-segments) +(tu/resolve-private-vars metabase.models.segment serialize-segment diff-segments) ;; serialize-segment (expect diff --git a/test/metabase/models/session_test.clj b/test/metabase/models/session_test.clj index dff89ad8077dcc3b9ba14156f073949fa468b612..b231184c70705cd32d57edb162853ef3d55e3f15 100644 --- a/test/metabase/models/session_test.clj +++ b/test/metabase/models/session_test.clj @@ -7,7 +7,7 @@ [metabase.test.data.users :refer :all] [metabase.util :as u])) -(resolve-private-fns metabase.db simple-insert-many!) +(resolve-private-vars metabase.db simple-insert-many!) ;; first-session-for-user (expect "the-greatest-day-ever" diff --git a/test/metabase/models/setting_test.clj b/test/metabase/models/setting_test.clj index bce6e6f58be2cb9751998990caa5cd0b9379405b..0420108943b9a3b872f725a7bb2ee4b7109f0521 100644 --- a/test/metabase/models/setting_test.clj +++ b/test/metabase/models/setting_test.clj @@ -114,7 +114,7 @@ ;;; ------------------------------------------------------------ all & user-facing-info ------------------------------------------------------------ -(resolve-private-fns metabase.models.setting resolve-setting user-facing-info) +(resolve-private-vars metabase.models.setting resolve-setting user-facing-info) ;; these tests are to check that settings get returned with the correct information; these functions are what feed into the API diff --git a/test/metabase/query_processor/parameters_test.clj b/test/metabase/query_processor/parameters_test.clj index e177420d747f68416d0ca61eae1dfba3b9f444e9..bc22aaa50c0c76918539273e944267d1b1b1273d 100644 --- a/test/metabase/query_processor/parameters_test.clj +++ b/test/metabase/query_processor/parameters_test.clj @@ -18,7 +18,7 @@ [users :refer :all]) [metabase.test.util :as tu])) -(tu/resolve-private-fns metabase.query-processor.parameters +(tu/resolve-private-vars metabase.query-processor.parameters absolute-date->range relative-date->range) (expect {:end "2016-03-31", :start "2016-01-01"} (absolute-date->range "Q1-2016")) diff --git a/test/metabase/query_processor/qp_middleware_test.clj b/test/metabase/query_processor/qp_middleware_test.clj index c05dda37de484e8e74fc08ce883deac4b962ec31..8fadc9751e8170f3ce61d4df97a15c21ac3129c5 100644 --- a/test/metabase/query_processor/qp_middleware_test.clj +++ b/test/metabase/query_processor/qp_middleware_test.clj @@ -4,9 +4,9 @@ [metabase.driver :as driver] [metabase.query-processor :refer :all] [metabase.models.setting :as setting] - [metabase.test.util :refer [resolve-private-fns]])) + [metabase.test.util :refer [resolve-private-vars]])) -(resolve-private-fns metabase.query-processor +(resolve-private-vars metabase.query-processor wrap-catch-exceptions post-add-row-count-and-status post-format-rows pre-add-settings) diff --git a/test/metabase/query_processor/sql_parameters_test.clj b/test/metabase/query_processor/sql_parameters_test.clj index 1ec0712cef0b93822f0e6c13dd1df7cf85c131f3..6c3ebf2e33932ebce6621d528b5cf537bab5feac 100644 --- a/test/metabase/query_processor/sql_parameters_test.clj +++ b/test/metabase/query_processor/sql_parameters_test.clj @@ -17,7 +17,7 @@ ;;; ------------------------------------------------------------ simple substitution -- {{x}} ------------------------------------------------------------ -(tu/resolve-private-fns metabase.query-processor.sql-parameters substitute) +(tu/resolve-private-vars metabase.query-processor.sql-parameters substitute) (expect "SELECT * FROM bird_facts WHERE toucans_are_cool = TRUE" (substitute "SELECT * FROM bird_facts WHERE toucans_are_cool = {{toucans_are_cool}}" @@ -145,7 +145,7 @@ ;;; ------------------------------------------------------------ tests for value-for-tag ------------------------------------------------------------ -(tu/resolve-private-fns metabase.query-processor.sql-parameters value-for-tag) +(tu/resolve-private-vars metabase.query-processor.sql-parameters value-for-tag) ;; variable -- specified (expect diff --git a/test/metabase/query_processor_test.clj b/test/metabase/query_processor_test.clj index 0bd1f4b7df74cc7e2ad15d04c198e148572dc5f7..cc5fdee37c40137d8d21c75ba80e8c9871a1e35a 100644 --- a/test/metabase/query_processor_test.clj +++ b/test/metabase/query_processor_test.clj @@ -312,7 +312,7 @@ (expect false (mbql-query? {:type "native"})) (expect true (mbql-query? {:type "query"})) -(tu/resolve-private-fns metabase.query-processor query-without-aggregations-or-limits?) +(tu/resolve-private-vars metabase.query-processor query-without-aggregations-or-limits?) ;; query-without-aggregations-or-limits? (expect false (query-without-aggregations-or-limits? {:query {:aggregation {:aggregation-type :count}}})) diff --git a/test/metabase/sync_database/analyze_test.clj b/test/metabase/sync_database/analyze_test.clj index 0ba6ea66eafb738d9186f4fec317267494fb3a7d..a37f234c0c76bce042a7c64fee4ae10c332e8afb 100644 --- a/test/metabase/sync_database/analyze_test.clj +++ b/test/metabase/sync_database/analyze_test.clj @@ -22,7 +22,7 @@ ;;; ## mark-json-field! -(tu/resolve-private-fns metabase.sync-database.analyze values-are-valid-json?) +(tu/resolve-private-vars metabase.sync-database.analyze values-are-valid-json?) (def ^:const ^:private fake-values-seq-json "A sequence of values that should be marked is valid JSON.") diff --git a/test/metabase/sync_database/introspect_test.clj b/test/metabase/sync_database/introspect_test.clj index 3294051e3fe9cf90babb92fdc530bc276a39a0a1..9df778138463037bc6b77d8456d13dd5d08f0dfb 100644 --- a/test/metabase/sync_database/introspect_test.clj +++ b/test/metabase/sync_database/introspect_test.clj @@ -10,7 +10,7 @@ [metabase.test.util :as tu] [metabase.util :as u])) -(tu/resolve-private-fns metabase.sync-database.introspect +(tu/resolve-private-vars metabase.sync-database.introspect save-all-table-columns! save-all-table-fks! create-raw-table! update-raw-table! disable-raw-tables!) (defn get-tables [database-id] diff --git a/test/metabase/sync_database/sync_dynamic_test.clj b/test/metabase/sync_database/sync_dynamic_test.clj index 309ed10a3477fbc5336ec4921f12e08a38d66d1b..53a5a038580a1d7f986aff28cd4ef36c663d6e0d 100644 --- a/test/metabase/sync_database/sync_dynamic_test.clj +++ b/test/metabase/sync_database/sync_dynamic_test.clj @@ -11,7 +11,7 @@ [metabase.test.mock.toucanery :as toucanery] [metabase.test.util :as tu])) -(tu/resolve-private-fns metabase.sync-database.sync-dynamic +(tu/resolve-private-vars metabase.sync-database.sync-dynamic save-table-fields!) (defn- get-tables [database-id] diff --git a/test/metabase/sync_database/sync_test.clj b/test/metabase/sync_database/sync_test.clj index 0e0102a07325535202be7500fb1fbc1f65977a30..db0d9494f3fc84d51543781e2696f143134452ca 100644 --- a/test/metabase/sync_database/sync_test.clj +++ b/test/metabase/sync_database/sync_test.clj @@ -15,7 +15,7 @@ [schema-per-customer :as schema-per-customer]) [metabase.test.util :as tu])) -(tu/resolve-private-fns metabase.sync-database.sync +(tu/resolve-private-vars metabase.sync-database.sync save-fks! save-table-fields!) (defn- get-tables [database-id] diff --git a/test/metabase/sync_database_test.clj b/test/metabase/sync_database_test.clj index 39f38f39beec4f42b96fa65e13e25fceb92275d0..41e5163d7c759c24b9598b654144a1081e818ab5 100644 --- a/test/metabase/sync_database_test.clj +++ b/test/metabase/sync_database_test.clj @@ -10,7 +10,7 @@ [table :refer [Table]]) [metabase.sync-database :refer :all] (metabase.test [data :refer :all] - [util :refer [resolve-private-fns] :as tu]))) + [util :refer [resolve-private-vars] :as tu]))) (def ^:private ^:const sync-test-tables {"movie" {:name "movie" diff --git a/test/metabase/test/data/bigquery.clj b/test/metabase/test/data/bigquery.clj index 970b8ac61315f7852c1689631b0c1e893866d722..f58dbd425fc536d828ed7790919bb91c90ec9977 100644 --- a/test/metabase/test/data/bigquery.clj +++ b/test/metabase/test/data/bigquery.clj @@ -6,7 +6,7 @@ (metabase.test.data [dataset-definitions :as defs] [datasets :as datasets] [interface :as i]) - [metabase.test.util :refer [resolve-private-fns]] + [metabase.test.util :refer [resolve-private-vars]] [metabase.util :as u]) (:import java.util.Arrays com.google.api.client.util.DateTime @@ -14,7 +14,7 @@ (com.google.api.services.bigquery.model Dataset DatasetReference QueryRequest Table TableDataInsertAllRequest TableDataInsertAllRequest$Rows TableFieldSchema TableReference TableRow TableSchema) metabase.driver.bigquery.BigQueryDriver)) -(resolve-private-fns metabase.driver.bigquery execute execute-no-auto-retry post-process-native) +(resolve-private-vars metabase.driver.bigquery execute execute-no-auto-retry post-process-native) ;;; # ------------------------------------------------------------ CONNECTION DETAILS ------------------------------------------------------------ diff --git a/test/metabase/test/data/druid.clj b/test/metabase/test/data/druid.clj index 6478c547e294cf29c69f9d7b78a67866c2776ff4..118a52b3c1841e96fb0160bdce050a40c96cf408 100644 --- a/test/metabase/test/data/druid.clj +++ b/test/metabase/test/data/druid.clj @@ -6,7 +6,7 @@ (metabase.test.data [dataset-definitions :as defs] [datasets :as datasets] [interface :as i]) - [metabase.test.util :refer [resolve-private-fns]] + [metabase.test.util :refer [resolve-private-vars]] [metabase.util :as u]) (:import metabase.driver.druid.DruidDriver)) @@ -129,7 +129,7 @@ "Maximum number of seconds we should wait for the indexing task to finish before deciding it's failed." 180) -(resolve-private-fns metabase.driver.druid GET POST) +(resolve-private-vars metabase.driver.druid GET POST) (defn- run-indexing-task "Run a batched ingestion task on HOST." diff --git a/test/metabase/test/util.clj b/test/metabase/test/util.clj index 4b426c2441c6489f332bd0f8f24f298a776db5b0..1ea0dd0d028f81846ac3cd0fa3e08782ff6d46a8 100644 --- a/test/metabase/test/util.clj +++ b/test/metabase/test/util.clj @@ -259,7 +259,7 @@ (or (symbol? x) (instance? clojure.lang.Namespace x))) -(defn resolve-private-fns* [source-namespace target-namespace symbols] +(defn resolve-private-vars* [source-namespace target-namespace symbols] {:pre [(namespace-or-symbol? source-namespace) (namespace-or-symbol? target-namespace) (every? symbol? symbols)]} @@ -269,13 +269,13 @@ (throw (Exception. (str source-namespace "/" symb " doesn't exist!"))))]] (intern target-namespace symb varr))) -(defmacro resolve-private-fns +(defmacro resolve-private-vars "Have your cake and eat it too. This Macro adds private functions from another namespace to the current namespace so we can test them. - (resolve-private-fns metabase.driver.generic-sql.sync + (resolve-private-vars metabase.driver.generic-sql.sync field-avg-length field-percent-urls)" [namespc & symbols] - `(resolve-private-fns* (quote ~namespc) *ns* (quote ~symbols))) + `(resolve-private-vars* (quote ~namespc) *ns* (quote ~symbols))) (defn obj->json->obj diff --git a/test/metabase/util/password_test.clj b/test/metabase/util/password_test.clj index 6a3177e8838339437ac2d7e418394d6e439f743d..9d9e5a1ab4d2d9efe5445b79a9ef0f75e0886342 100644 --- a/test/metabase/util/password_test.clj +++ b/test/metabase/util/password_test.clj @@ -1,12 +1,12 @@ (ns metabase.util.password-test (:require [expectations :refer :all] - [metabase.test.util :refer [resolve-private-fns]] + [metabase.test.util :refer [resolve-private-vars]] [metabase.util.password :refer :all])) ;; Password Complexity testing -(resolve-private-fns metabase.util.password count-occurrences password-has-char-counts?) +(resolve-private-vars metabase.util.password count-occurrences password-has-char-counts?) ;; Check that password occurance counting works (expect {:total 3, :lower 3, :upper 0, :letter 3, :digit 0, :special 0} (count-occurrences "abc"))