pinboard_test.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. //
  2. // Copyright (C) 2017-2021 Marcus Rohrmoser, http://purl.mro.name/ShaarliGo
  3. //
  4. // This program is free software: you can redistribute it and/or modify
  5. // it under the terms of the GNU General Public License as published by
  6. // the Free Software Foundation, either version 3 of the License, or
  7. // (at your option) any later version.
  8. //
  9. // This program is distributed in the hope that it will be useful,
  10. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. // GNU General Public License for more details.
  13. //
  14. // You should have received a copy of the GNU General Public License
  15. // along with this program. If not, see <http://www.gnu.org/licenses/>.
  16. //
  17. package main
  18. import (
  19. "net/url"
  20. "github.com/stretchr/testify/assert"
  21. "testing"
  22. )
  23. func TestClampString(t *testing.T) {
  24. t.Parallel()
  25. ti := "๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ"
  26. mx := "u๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๐Ÿ’ซ๏ฟฝ"
  27. assert.Equal(t, 256, len(mx), "Na klar")
  28. assert.Equal(t, 1024, len(ti), "Na klar")
  29. ti = limit(255, "โ€ฆ", ti)
  30. assert.Equal(t, 255, len(ti), "Na klar")
  31. }
  32. func TestPinboardPostsAdd(t *testing.T) {
  33. t.Parallel()
  34. base, _ := url.Parse("https://api.pinboard.in/v1?auth_token=fee%3AABCDE445566")
  35. // dt := mustParseRFC3339("1990-12-31T02:02:02+01:00")
  36. en := Entry{
  37. Id: Id("foo"),
  38. Links: []Link{Link{Href: "https://pinboard.in/api#posts_add"}},
  39. Title: HumanText{Body: "#Hello, #world!"},
  40. // Content: &HumanText{Body: "1st at l.mro.name/o/p/xyz"},
  41. Categories: []Category{
  42. Category{Term: "Uhu"},
  43. Category{Term: "๐Ÿฆ‰"},
  44. },
  45. }
  46. url, err := pinboardPostsAdd(*base, en, "=> "+string(en.Id))
  47. assert.Equal(t, nil, err, "Na klar")
  48. assert.Equal(t, "https://api.pinboard.in/v1/posts/add?auth_token=fee%3AABCDE445566&description=%23Hello%2C+%23world%21&dt=0001-01-01T00%3A00%3A00Z&extended=%3D%3E+foo&tags=Uhu+%F0%9F%A6%89&url=https%3A%2F%2Fpinboard.in%2Fapi%23posts_add", url.String(), "Na klar")
  49. }