2 // Copyright (C) 2019-2019 Marcus Rohrmoser, https://code.mro.name/mro/Shaarli-API-test
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.
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.
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/>.
25 "github.com/stretchr/testify/assert"
29 func TestURL(t
*testing
.T
) {
32 u
, _
:= url
.Parse("https://l.mro.name/pinboard.cgi/v1/info")
33 assert
.Equal(t
, "https://l.mro.name/pinboard.cgi/v1/info", u
.String(), "ach")
36 assert
.Equal(t
, "https://l.mro.name/pinboard.cgi/v1/info", base
.String(), "ach")
38 path_info
:= "/v1/info"
39 base
.Path
= base
.Path
[0:len(base
.Path
)-len(path_info
)] + "/../index.php"
40 assert
.Equal(t
, "https://l.mro.name/pinboard.cgi/../index.php", base
.String(), "ach")
44 base
.RawQuery
= v
.Encode()
45 assert
.Equal(t
, "https://l.mro.name/pinboard.cgi/../index.php?post=uhu", base
.String(), "ach")
48 func TestFormValuesFromHtml(t
*testing
.T
) {
49 file
, err
:= os
.Open("testdata/v0.10.2/login.html") // curl --location --output testdata/login.html 'https://demo.shaarli.org/?post=https://demo.mro.name/shaarligo'
50 assert
.Nil(t
, err
, "soso")
51 ips
, _
:= formValuesFromReader(file
, "loginform")
52 assert
.Equal(t
, 40, len(ips
["token"][0]), "form.token")
53 // assert.Equal(t, "", ips["returnurl"][0], "form.returnurl")
54 assert
.Equal(t
, "Login", ips
[""][0], "form.")
55 assert
.Equal(t
, "", ips
["login"][0], "form.login")
56 assert
.Equal(t
, "", ips
["password"][0], "form.password")
57 assert
.Equal(t
, "", ips
["longlastingsession"][0], "form.longlastingsession")
60 file
, err
= os
.Open("testdata/sebsauvage/login.html") // curl --location --output testdata/login.html 'https://demo.shaarli.org/?post=https://demo.mro.name/shaarligo'
61 assert
.Nil(t
, err
, "soso")
62 ips
, _
= formValuesFromReader(file
, "loginform")
63 assert
.Equal(t
, 40, len(ips
["token"][0]), "form.token")
64 // assert.Equal(t, "", ips["returnurl"][0], "form.returnurl")
65 assert
.Equal(t
, "Login", ips
[""][0], "form.")
66 assert
.Equal(t
, "", ips
["login"][0], "form.login")
67 assert
.Equal(t
, "", ips
["password"][0], "form.password")
68 assert
.Equal(t
, "", ips
["longlastingsession"][0], "form.longlastingsession")
71 file
, err
= os
.Open("testdata/bookmark/login.html") // curl --location --output testdata/login.html 'https://demo.shaarli.org/?post=https://demo.mro.name/shaarligo'
72 assert
.Nil(t
, err
, "soso")
73 ips
, _
= formValuesFromReader(file
, "loginform")
74 assert
.Equal(t
, 40, len(ips
["token"][0]), "form.token")
75 // assert.Equal(t, "", ips["returnurl"][0], "form.returnurl")
76 assert
.Equal(t
, "Login", ips
[""][0], "form.")
77 assert
.Equal(t
, "", ips
["login"][0], "form.login")
78 assert
.Equal(t
, "", ips
["password"][0], "form.password")
79 assert
.Equal(t
, "", ips
["longlastingsession"][0], "form.longlastingsession")
82 file
, err
= os
.Open("testdata/shaarligo/linkform.html") // curl --location --output testdata/login.html 'https://demo.shaarli.org/?post=https://demo.mro.name/shaarligo'
83 assert
.Nil(t
, err
, "soso")
84 ips
, _
= formValuesFromReader(file
, "linkform")
85 assert
.Equal(t
, 40, len(ips
["token"][0]), "form.token")
86 assert
.Equal(t
, "", ips
["returnurl"][0], "form.returnurl")
87 assert
.Equal(t
, "20190106_172531", ips
["lf_linkdate"][0], "form.lf_linkdate")
88 // tim, _ := time.ParseInLocation("20060102_150405", "20190106_172531", time.Now().Location())
89 // assert.Equal(t, int64(1546791931), tim.Unix(), "form.lf_linkdate")
90 // assert.Equal(t, time.Unix(1546791931, 0), tim, "form.lf_linkdate")
91 assert
.Equal(t
, "", ips
["lf_url"][0], "form.lf_url")
92 assert
.Equal(t
, "uhu", ips
["lf_title"][0], "form.lf_title")
93 assert
.Equal(t
, "content", ips
["lf_description"][0], "form.lf_description")
94 assert
.Equal(t
, "", ips
["lf_tags"][0], "form.lf_tags")
95 assert
.Equal(t
, "Save", ips
["save_edit"][0], "form.save_edit")
99 <?xml version="1.0" encoding="UTF-8"?>
100 <?xml-stylesheet type='text/xsl' href='./assets/default/de/do-post.xslt'?>
102 must be compatible with https://code.mro.name/mro/Shaarli-API-test/src/master/tests/test-post.sh
103 https://code.mro.name/mro/ShaarliOS/src/1d124e012933d1209d64071a90237dc5ec6372fc/ios/ShaarliOS/API/ShaarliCmd.m#L386
105 <html xmlns="http://www.w3.org/1999/xhtml" xml:base="https://l.mro.name/">
106 <head><title>{ 🔗 🐳 🚀 💫 }</title></head>
108 <ul id="taglist" style="display:none"></ul>
109 <form method="post" name="linkform">
110 <input name="lf_linkdate" type="hidden" value="20190106_172531"/>
111 <input name="lf_url" type="text" value=""/>
112 <input name="lf_title" type="text" value="uhu"/>
113 <textarea name="lf_description" rows="4" cols="25"></textarea>
114 <input name="lf_tags" type="text" data-multiple="data-multiple" value=""/>
115 <input name="lf_private" type="checkbox" value=""/>
116 <input name="save_edit" type="submit" value="Save"/>
117 <input name="cancel_edit" type="submit" value="Cancel"/>
118 <input name="token" type="hidden" value="d9aab65f6ca2462449079d72d5321ebae0ec8325"/>
119 <input name="returnurl" type="hidden" value=""/>
120 <input name="lf_image" type="hidden" value=""/>
127 func TestRailRoad(t
*testing
.T
) {
128 fa
:= func(success
bool) (ret
string, err error
) {
130 return "fail", fmt
.Errorf("failure")
134 fb
:= func(s
string, err0 error
) (int, error
) {
146 assert
.Equal(t
, 2, v
, "success")
147 assert
.Equal(t
, nil, e
, "success")
150 v
, e
:= fb(fa(false))
151 assert
.Equal(t
, 0, v
, "success")
152 assert
.Equal(t
, "failure", e
.Error(), "success")