ring-clojure / ring-clojure/ring
[bug] wrap-nested-params remove namespaces in keywords
Nobody has claimed this yet.
- Dominant language
- Clojure
- Stars
- 3.9k
- Forks
- 528
- PR merge metrics
- No merged PRs in 30d
Description
(def app-stateless
(-> handler
(wrap-keyword-params {:parse-namespaces? true})
;(wrap-nested-params)
(wrap-params)
(add-headers)
(wrap-restful-format)))
(-> (peridot/session core/app-stateless)
(peridot/content-type "application/edn")
(peridot/request "/authentication" :request-method :post
:body (pr-str {:action "sign-up"
:user/email "foo@example.com"
:user/password "qwaszx"
:foo {:bar/baz "mee"}})))
params value
What is wrong:
When wrap-nested-params is uncomment it removes all namespaces in 1-deep, but no deeper.
{:action "sign-up", :email "foo@example.com", :password "qwaszx", :foo #:bar{:baz "mee"}}
^ removed :user/, but not :bar/.
When it is commented I get values as I expected:
{:action "sign-up", :user/email "foo@example.com", :user/password "qwaszx", :foo #:bar{:baz "mee"}}
How it should be
It shouldn't remove namespaces.
{:action "sign-up", :user/email "foo@example.com", :user/password "qwaszx", :foo #:bar{:baz "mee"}}
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by locating the implementation and tests for wrap-nested-params, then reproduce the request using the app-stateless and peridot examples in the issue. Check how nested keyword maps are transformed. Done means namespaces such as :user/email and :bar/baz are preserved at every nesting depth, with regression coverage for the shown parameters.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- clojure
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 40/100