cookies icon indicating copy to clipboard operation
cookies copied to clipboard

Cookie set to '' when pass the value as 0

Open mrbone opened this issue 6 years ago • 3 comments

When I want to record the user visit time in the header, I found the 0 value cannot set to cookie only if we convert it to string type, but other number type value can be saved. I create one test to reproduce the issue:

it('when set value to 0', () => {
      var cookie = new cookies.Cookie('foo', 0 );
      assert.equal(cookie.toHeader(), 'foo=0; path=/; httponly')
 }) //this will faile

it('when set value to 1', () => {
        var cookie = new cookies.Cookie('foo', 1 );
        assert.equal(cookie.toHeader(), 'foo=1; path=/; httponly')
}) //this will pass

And I check the source code found this issue happens because of the index.js L:131

  this.value = value || ""

This will convert the 0 to empty string, so I am woundering is this a bug or not, if not, I think we should notice the user we should always put he String type value.

mrbone avatar Aug 22 '18 03:08 mrbone

Yea, I think it's definitely a bug. There are two choices: (a) coerce the value or (b) require it to be a string.

Just from the pros and cons and pitfalls, I think (b) is the better choice.

You're welcome to make a PR with that change, otherwise I'll get to it at some point 👍

dougwilson avatar Sep 10 '18 03:09 dougwilson

Hi, I create a PR to fix this issue, please reivew it. #104

mrbone avatar Oct 19 '18 10:10 mrbone

Yup, same thing is happening with passing false as cookie value.

AjayPoshak avatar Dec 04 '18 08:12 AjayPoshak