Fork me on GitHub
#testing
<
2021-04-20
>
Daniel Wellman19:04:47

I’m experimenting with vcr-clj (https://github.com/gfredericks/vcr-clj) and have noticed that the “cassette” text files appear to have an encoded response body, which means you can’t look at the cassettes to understand what the response says (assuming a JSON text response). Does anyone know of a way to make vcr-clj keep the response as unencoded text?

jumar09:04:26

I'm not sure if there's an option for that - it will try to "Base64 encode" the response body to make it serializable. You can write some utility functions to decode that, e.g. https://github.com/jumarko/clojure-experiments/blob/master/src/clojure_experiments/networking.clj#L66-L88

(defn decode-body [base64-encoded-strings]
   (-> base64-encoded-strings
       vcr-serialization/maybe-join
       codec/base64-decode
       (String.)))

  (with-open [r (java.io.PushbackReader. (io/reader (vcr-cassettes/cassette-file :record)))]
   (let [as-edn (edn/read {:readers  (assoc vcr-serialization/data-readers
                                            'vcr-clj/input-stream decode-body)}
                          r)
         body (-> as-edn :calls (get 0) :return :body)]
     (println body)))
    ,)