On Sunday, May 11, 2014 3:18:56 AM UTC-5, Ivan Schuetz wrote:
>
> I tried
>
> (let [response (app
>                     (content-type (request :post "/login" {:username 
> "jane" :password "test"})
>                                   "application/json"))]  )
>

Take a look at the source. Params passed to ring-mock.request/request for 
non-GET, non-HEAD requests will always be passed through to 'body[1], and 
if those params are a map, they'll always be urlencoded, and the content 
type of the request will be set to "application/x-www-form-urlencoded"[2]. 
Your call to content-type is changing the declared content-type of the 
request, but the body is still urlencoded. If you instead pass in a json 
string, it will be converted to a byte-array and wrapped in a 
ByteArrayInputStream without further encoding[3]. So you should be able to 
do something like the following (untested).

  (-> (request :post "/login" 
               (clojure.data.json/write-str {:username "jane" :password 
"test"}))
    (content-type "application/json"))

[1]: 
https://github.com/weavejester/ring-mock/blob/master/src/ring/mock/request.clj#L92-L104
[2]: 
https://github.com/weavejester/ring-mock/blob/master/src/ring/mock/request.clj#L70-L73
[3]: 
https://github.com/weavejester/ring-mock/blob/master/src/ring/mock/request.clj#L62-L68

Doesn't work...
>

In the future, it would be helpful to say more about how it doesn't work. 
For example, you could show us the return value of (content-type (request 
:post "/login" {:username "jane" :password "test"}) "application/json") 
and, if you can see what's wrong with it, tell us what's wrong.

The Stack Overflow post you linked to is about peridot, a different library 
for testing Ring apps.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to