Skip to content

Commit 1e50cc4

Browse files
author
Carsten Seeger
committed
go modules + testing
1 parent c1bcc3a commit 1e50cc4

13 files changed

+359
-43
lines changed

auth.go

-23
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,9 @@
11
package goconfluence
22

33
import (
4-
"errors"
54
"net/http"
6-
"net/url"
75
)
86

9-
// NewAPI implements API constructor
10-
func NewAPI(location string, username string, token string) (*API, error) {
11-
if len(location) == 0 || len(username) == 0 || len(token) == 0 {
12-
return nil, errors.New("url, username or token empty")
13-
}
14-
15-
u, err := url.ParseRequestURI(location)
16-
17-
if err != nil {
18-
return nil, err
19-
}
20-
21-
a := new(API)
22-
a.endPoint = u
23-
a.token = token
24-
a.username = username
25-
a.client = &http.Client{}
26-
27-
return a, nil
28-
}
29-
307
// Auth implements basic auth
318
func (a *API) Auth(req *http.Request) {
329
req.SetBasicAuth(a.username, a.token)

auth_test.go

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package goconfluence
2+
3+
import (
4+
"encoding/base64"
5+
"net/http/httptest"
6+
"strings"
7+
"testing"
8+
9+
"github.com/stretchr/testify/assert"
10+
)
11+
12+
func TestAuth(t *testing.T) {
13+
14+
req := httptest.NewRequest("POST", "https://test.test", nil)
15+
16+
api, err := NewAPI("https://test.test", "username", "token")
17+
18+
assert.Nil(t, err)
19+
assert.Empty(t, req.Header)
20+
21+
api.Auth(req)
22+
h := req.Header.Get("Authorization")
23+
assert.NotEmpty(t, h)
24+
25+
split := strings.Split(h, " ")
26+
assert.Len(t, split, 2)
27+
28+
b, err := base64.StdEncoding.DecodeString(split[1])
29+
assert.Nil(t, err)
30+
31+
auth := strings.Split(string(b), ":")
32+
assert.Len(t, auth, 2)
33+
assert.Equal(t, "username", auth[0])
34+
assert.Equal(t, "token", auth[1])
35+
}

content.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ func (a *API) GetLabels(id string) (*Labels, error) {
9090
return a.SendLabelRequest(ep, "GET", nil)
9191
}
9292

93-
// GetLabels returns a list of labels attachted to a content object
93+
// AddLabels returns adds labels
9494
func (a *API) AddLabels(id string, labels *[]Label) (*Labels, error) {
9595
ep, err := a.getContentGenericEndpoint(id, "label")
9696
if err != nil {

content_test.go

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package goconfluence
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/assert"
7+
)
8+
9+
func TestGetContentEndpoints(t *testing.T) {
10+
a, err := NewAPI("https://test.test", "username", "token")
11+
assert.Nil(t, err)
12+
13+
url, err := a.getContentIDEndpoint("test")
14+
assert.Nil(t, err)
15+
assert.Equal(t, "/content/test", url.Path)
16+
17+
url, err = a.getContentEndpoint()
18+
assert.Nil(t, err)
19+
assert.Equal(t, "/content/", url.Path)
20+
21+
url, err = a.getContentChildEndpoint("test", "child")
22+
assert.Nil(t, err)
23+
assert.Equal(t, "/content/test/child/child", url.Path)
24+
25+
url, err = a.getContentGenericEndpoint("test", "child")
26+
assert.Nil(t, err)
27+
assert.Equal(t, "/content/test/child", url.Path)
28+
}
29+
30+
func TestAddContentQueryParams(t *testing.T) {
31+
// tbd
32+
}

coverage.out

+169
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
mode: set
2+
github.com/cseeger-epages/confluence-go-api/internal.go:11.75,12.65 1 1
3+
github.com/cseeger-epages/confluence-go-api/internal.go:16.2,18.16 2 1
4+
github.com/cseeger-epages/confluence-go-api/internal.go:22.2,28.15 6 1
5+
github.com/cseeger-epages/confluence-go-api/internal.go:12.65,14.3 1 1
6+
github.com/cseeger-epages/confluence-go-api/internal.go:18.16,20.3 1 1
7+
github.com/cseeger-epages/confluence-go-api/internal.go:35.27,37.2 1 1
8+
github.com/cseeger-epages/confluence-go-api/internal.go:40.29,41.15 1 0
9+
github.com/cseeger-epages/confluence-go-api/internal.go:41.15,43.3 1 0
10+
github.com/cseeger-epages/confluence-go-api/request.go:14.58,23.16 7 0
11+
github.com/cseeger-epages/confluence-go-api/request.go:26.2,28.25 2 0
12+
github.com/cseeger-epages/confluence-go-api/request.go:51.2,51.68 1 0
13+
github.com/cseeger-epages/confluence-go-api/request.go:23.16,25.3 1 0
14+
github.com/cseeger-epages/confluence-go-api/request.go:29.68,37.17 6 0
15+
github.com/cseeger-epages/confluence-go-api/request.go:40.3,40.18 1 0
16+
github.com/cseeger-epages/confluence-go-api/request.go:41.53,42.18 1 0
17+
github.com/cseeger-epages/confluence-go-api/request.go:43.31,44.50 1 0
18+
github.com/cseeger-epages/confluence-go-api/request.go:45.37,46.70 1 0
19+
github.com/cseeger-epages/confluence-go-api/request.go:47.38,48.67 1 0
20+
github.com/cseeger-epages/confluence-go-api/request.go:37.17,39.4 1 0
21+
github.com/cseeger-epages/confluence-go-api/request.go:56.92,59.14 2 0
22+
github.com/cseeger-epages/confluence-go-api/request.go:67.2,68.16 2 0
23+
github.com/cseeger-epages/confluence-go-api/request.go:72.2,72.17 1 0
24+
github.com/cseeger-epages/confluence-go-api/request.go:76.2,77.16 2 0
25+
github.com/cseeger-epages/confluence-go-api/request.go:81.2,84.16 3 0
26+
github.com/cseeger-epages/confluence-go-api/request.go:88.2,88.22 1 0
27+
github.com/cseeger-epages/confluence-go-api/request.go:59.14,61.17 2 0
28+
github.com/cseeger-epages/confluence-go-api/request.go:64.3,64.39 1 0
29+
github.com/cseeger-epages/confluence-go-api/request.go:61.17,63.4 1 0
30+
github.com/cseeger-epages/confluence-go-api/request.go:68.16,70.3 1 0
31+
github.com/cseeger-epages/confluence-go-api/request.go:72.17,74.3 1 0
32+
github.com/cseeger-epages/confluence-go-api/request.go:77.16,79.3 1 0
33+
github.com/cseeger-epages/confluence-go-api/request.go:84.16,86.3 1 0
34+
github.com/cseeger-epages/confluence-go-api/request.go:92.74,95.16 2 0
35+
github.com/cseeger-epages/confluence-go-api/request.go:99.2,100.16 2 0
36+
github.com/cseeger-epages/confluence-go-api/request.go:104.2,107.16 3 0
37+
github.com/cseeger-epages/confluence-go-api/request.go:111.2,111.19 1 0
38+
github.com/cseeger-epages/confluence-go-api/request.go:95.16,97.3 1 0
39+
github.com/cseeger-epages/confluence-go-api/request.go:100.16,102.3 1 0
40+
github.com/cseeger-epages/confluence-go-api/request.go:107.16,109.3 1 0
41+
github.com/cseeger-epages/confluence-go-api/request.go:115.78,118.16 2 0
42+
github.com/cseeger-epages/confluence-go-api/request.go:122.2,123.16 2 0
43+
github.com/cseeger-epages/confluence-go-api/request.go:127.2,130.16 3 0
44+
github.com/cseeger-epages/confluence-go-api/request.go:134.2,134.21 1 0
45+
github.com/cseeger-epages/confluence-go-api/request.go:118.16,120.3 1 0
46+
github.com/cseeger-epages/confluence-go-api/request.go:123.16,125.3 1 0
47+
github.com/cseeger-epages/confluence-go-api/request.go:130.16,132.3 1 0
48+
github.com/cseeger-epages/confluence-go-api/request.go:138.80,141.16 2 0
49+
github.com/cseeger-epages/confluence-go-api/request.go:145.2,146.16 2 0
50+
github.com/cseeger-epages/confluence-go-api/request.go:150.2,153.16 3 0
51+
github.com/cseeger-epages/confluence-go-api/request.go:157.2,157.22 1 0
52+
github.com/cseeger-epages/confluence-go-api/request.go:141.16,143.3 1 0
53+
github.com/cseeger-epages/confluence-go-api/request.go:146.16,148.3 1 0
54+
github.com/cseeger-epages/confluence-go-api/request.go:153.16,155.3 1 0
55+
github.com/cseeger-epages/confluence-go-api/request.go:161.94,164.19 2 0
56+
github.com/cseeger-epages/confluence-go-api/request.go:172.2,173.16 2 0
57+
github.com/cseeger-epages/confluence-go-api/request.go:177.2,177.17 1 0
58+
github.com/cseeger-epages/confluence-go-api/request.go:181.2,182.16 2 0
59+
github.com/cseeger-epages/confluence-go-api/request.go:186.2,186.16 1 0
60+
github.com/cseeger-epages/confluence-go-api/request.go:197.2,197.23 1 0
61+
github.com/cseeger-epages/confluence-go-api/request.go:164.19,166.17 2 0
62+
github.com/cseeger-epages/confluence-go-api/request.go:169.3,169.39 1 0
63+
github.com/cseeger-epages/confluence-go-api/request.go:166.17,168.4 1 0
64+
github.com/cseeger-epages/confluence-go-api/request.go:173.16,175.3 1 0
65+
github.com/cseeger-epages/confluence-go-api/request.go:177.17,179.3 1 0
66+
github.com/cseeger-epages/confluence-go-api/request.go:182.16,184.3 1 0
67+
github.com/cseeger-epages/confluence-go-api/request.go:186.16,190.17 3 0
68+
github.com/cseeger-epages/confluence-go-api/request.go:194.3,194.17 1 0
69+
github.com/cseeger-epages/confluence-go-api/request.go:190.17,192.4 1 0
70+
github.com/cseeger-epages/confluence-go-api/request.go:201.81,204.16 2 0
71+
github.com/cseeger-epages/confluence-go-api/request.go:208.2,209.16 2 0
72+
github.com/cseeger-epages/confluence-go-api/request.go:212.2,215.16 3 0
73+
github.com/cseeger-epages/confluence-go-api/request.go:219.2,219.23 1 0
74+
github.com/cseeger-epages/confluence-go-api/request.go:204.16,206.3 1 0
75+
github.com/cseeger-epages/confluence-go-api/request.go:209.16,211.3 1 0
76+
github.com/cseeger-epages/confluence-go-api/request.go:215.16,217.3 1 0
77+
github.com/cseeger-epages/confluence-go-api/search.go:9.53,11.2 1 0
78+
github.com/cseeger-epages/confluence-go-api/search.go:14.58,16.16 2 0
79+
github.com/cseeger-epages/confluence-go-api/search.go:19.2,20.39 2 0
80+
github.com/cseeger-epages/confluence-go-api/search.go:16.16,18.3 1 0
81+
github.com/cseeger-epages/confluence-go-api/search.go:24.58,27.21 2 0
82+
github.com/cseeger-epages/confluence-go-api/search.go:30.2,30.28 1 0
83+
github.com/cseeger-epages/confluence-go-api/search.go:33.2,33.41 1 0
84+
github.com/cseeger-epages/confluence-go-api/search.go:36.2,36.22 1 0
85+
github.com/cseeger-epages/confluence-go-api/search.go:39.2,39.22 1 0
86+
github.com/cseeger-epages/confluence-go-api/search.go:42.2,42.14 1 0
87+
github.com/cseeger-epages/confluence-go-api/search.go:27.21,29.3 1 0
88+
github.com/cseeger-epages/confluence-go-api/search.go:30.28,32.3 1 0
89+
github.com/cseeger-epages/confluence-go-api/search.go:33.41,35.3 1 0
90+
github.com/cseeger-epages/confluence-go-api/search.go:36.22,38.3 1 0
91+
github.com/cseeger-epages/confluence-go-api/search.go:39.22,41.3 1 0
92+
github.com/cseeger-epages/confluence-go-api/user.go:9.60,11.2 1 0
93+
github.com/cseeger-epages/confluence-go-api/user.go:14.44,16.16 2 0
94+
github.com/cseeger-epages/confluence-go-api/user.go:19.2,19.37 1 0
95+
github.com/cseeger-epages/confluence-go-api/user.go:16.16,18.3 1 0
96+
github.com/cseeger-epages/confluence-go-api/user.go:23.46,25.16 2 0
97+
github.com/cseeger-epages/confluence-go-api/user.go:28.2,28.37 1 0
98+
github.com/cseeger-epages/confluence-go-api/user.go:25.16,27.3 1 0
99+
github.com/cseeger-epages/confluence-go-api/user.go:33.49,35.16 2 0
100+
github.com/cseeger-epages/confluence-go-api/user.go:38.2,39.34 2 0
101+
github.com/cseeger-epages/confluence-go-api/user.go:45.2,46.37 2 0
102+
github.com/cseeger-epages/confluence-go-api/user.go:35.16,37.3 1 0
103+
github.com/cseeger-epages/confluence-go-api/user.go:39.34,41.3 1 0
104+
github.com/cseeger-epages/confluence-go-api/user.go:41.8,43.3 1 0
105+
github.com/cseeger-epages/confluence-go-api/auth.go:8.39,10.2 1 1
106+
github.com/cseeger-epages/confluence-go-api/content.go:10.65,12.2 1 1
107+
github.com/cseeger-epages/confluence-go-api/content.go:15.54,17.2 1 1
108+
github.com/cseeger-epages/confluence-go-api/content.go:20.78,22.2 1 1
109+
github.com/cseeger-epages/confluence-go-api/content.go:25.80,27.2 1 1
110+
github.com/cseeger-epages/confluence-go-api/content.go:30.59,32.16 2 0
111+
github.com/cseeger-epages/confluence-go-api/content.go:35.2,35.45 1 0
112+
github.com/cseeger-epages/confluence-go-api/content.go:32.16,34.3 1 0
113+
github.com/cseeger-epages/confluence-go-api/content.go:39.63,41.16 2 0
114+
github.com/cseeger-epages/confluence-go-api/content.go:44.2,45.39 2 0
115+
github.com/cseeger-epages/confluence-go-api/content.go:41.16,43.3 1 0
116+
github.com/cseeger-epages/confluence-go-api/content.go:49.57,51.16 2 0
117+
github.com/cseeger-epages/confluence-go-api/content.go:54.2,54.39 1 0
118+
github.com/cseeger-epages/confluence-go-api/content.go:51.16,53.3 1 0
119+
github.com/cseeger-epages/confluence-go-api/content.go:58.55,60.16 2 0
120+
github.com/cseeger-epages/confluence-go-api/content.go:63.2,63.39 1 0
121+
github.com/cseeger-epages/confluence-go-api/content.go:60.16,62.3 1 0
122+
github.com/cseeger-epages/confluence-go-api/content.go:67.58,69.16 2 0
123+
github.com/cseeger-epages/confluence-go-api/content.go:72.2,72.39 1 0
124+
github.com/cseeger-epages/confluence-go-api/content.go:69.16,71.3 1 0
125+
github.com/cseeger-epages/confluence-go-api/content.go:76.55,78.16 2 0
126+
github.com/cseeger-epages/confluence-go-api/content.go:81.2,81.40 1 0
127+
github.com/cseeger-epages/confluence-go-api/content.go:78.16,80.3 1 0
128+
github.com/cseeger-epages/confluence-go-api/content.go:85.53,87.16 2 0
129+
github.com/cseeger-epages/confluence-go-api/content.go:90.2,90.43 1 0
130+
github.com/cseeger-epages/confluence-go-api/content.go:87.16,89.3 1 0
131+
github.com/cseeger-epages/confluence-go-api/content.go:94.70,96.16 2 0
132+
github.com/cseeger-epages/confluence-go-api/content.go:99.2,99.47 1 0
133+
github.com/cseeger-epages/confluence-go-api/content.go:96.16,98.3 1 0
134+
github.com/cseeger-epages/confluence-go-api/content.go:103.68,105.16 2 0
135+
github.com/cseeger-epages/confluence-go-api/content.go:108.2,108.46 1 0
136+
github.com/cseeger-epages/confluence-go-api/content.go:105.16,107.3 1 0
137+
github.com/cseeger-epages/confluence-go-api/content.go:112.57,114.16 2 0
138+
github.com/cseeger-epages/confluence-go-api/content.go:117.2,117.40 1 0
139+
github.com/cseeger-epages/confluence-go-api/content.go:114.16,116.3 1 0
140+
github.com/cseeger-epages/confluence-go-api/content.go:121.59,123.16 2 0
141+
github.com/cseeger-epages/confluence-go-api/content.go:126.2,126.44 1 0
142+
github.com/cseeger-epages/confluence-go-api/content.go:123.16,125.3 1 0
143+
github.com/cseeger-epages/confluence-go-api/content.go:130.59,132.16 2 0
144+
github.com/cseeger-epages/confluence-go-api/content.go:135.2,135.43 1 0
145+
github.com/cseeger-epages/confluence-go-api/content.go:132.16,134.3 1 0
146+
github.com/cseeger-epages/confluence-go-api/content.go:139.55,141.16 2 0
147+
github.com/cseeger-epages/confluence-go-api/content.go:144.2,144.48 1 0
148+
github.com/cseeger-epages/confluence-go-api/content.go:141.16,143.3 1 0
149+
github.com/cseeger-epages/confluence-go-api/content.go:148.60,151.28 2 0
150+
github.com/cseeger-epages/confluence-go-api/content.go:154.2,154.22 1 0
151+
github.com/cseeger-epages/confluence-go-api/content.go:157.2,157.25 1 0
152+
github.com/cseeger-epages/confluence-go-api/content.go:160.2,160.28 1 0
153+
github.com/cseeger-epages/confluence-go-api/content.go:163.2,163.26 1 0
154+
github.com/cseeger-epages/confluence-go-api/content.go:166.2,166.22 1 0
155+
github.com/cseeger-epages/confluence-go-api/content.go:169.2,169.24 1 0
156+
github.com/cseeger-epages/confluence-go-api/content.go:172.2,172.23 1 0
157+
github.com/cseeger-epages/confluence-go-api/content.go:175.2,175.25 1 0
158+
github.com/cseeger-epages/confluence-go-api/content.go:178.2,178.22 1 0
159+
github.com/cseeger-epages/confluence-go-api/content.go:181.2,181.14 1 0
160+
github.com/cseeger-epages/confluence-go-api/content.go:151.28,153.3 1 0
161+
github.com/cseeger-epages/confluence-go-api/content.go:154.22,156.3 1 0
162+
github.com/cseeger-epages/confluence-go-api/content.go:157.25,159.3 1 0
163+
github.com/cseeger-epages/confluence-go-api/content.go:160.28,162.3 1 0
164+
github.com/cseeger-epages/confluence-go-api/content.go:163.26,165.3 1 0
165+
github.com/cseeger-epages/confluence-go-api/content.go:166.22,168.3 1 0
166+
github.com/cseeger-epages/confluence-go-api/content.go:169.24,171.3 1 0
167+
github.com/cseeger-epages/confluence-go-api/content.go:172.23,174.3 1 0
168+
github.com/cseeger-epages/confluence-go-api/content.go:175.25,177.3 1 0
169+
github.com/cseeger-epages/confluence-go-api/content.go:178.22,180.3 1 0

examples/attributes.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func main() {
2424
}
2525

2626
// get attachments of a specific page
27-
res, err := api.GetAttachments("1234567")
27+
res, err = api.GetAttachments("1234567")
2828
if err != nil {
2929
log.Fatal(err)
3030
}
@@ -35,7 +35,7 @@ func main() {
3535
}
3636

3737
// get child pages of a specific page
38-
res, err := api.GetChildPages("1234567")
38+
res, err = api.GetChildPages("1234567")
3939
if err != nil {
4040
log.Fatal(err)
4141
}
@@ -54,12 +54,12 @@ func main() {
5454
fmt.Printf("%+v\n", hist)
5555

5656
// get information about watching users
57-
res, err := api.GetWatchers("1234567")
57+
watchers, err := api.GetWatchers("1234567")
5858
if err != nil {
5959
log.Fatal(err)
6060
}
6161

62-
for _, v := range res.Watchers {
62+
for _, v := range watchers.Watchers {
6363
fmt.Printf("%+v\n", v)
6464
}
6565

examples/content.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,15 @@ func main() {
5656
},
5757
}
5858

59-
c, err := api.CreateContent(data)
59+
c, err = api.CreateContent(data)
6060
if err != nil {
6161
log.Fatal(err)
6262
}
6363

6464
fmt.Printf("%+v\n", c)
6565

6666
// update content
67-
data := &goconfluence.Content{
67+
data = &goconfluence.Content{
6868
ID: "1234567",
6969
Type: "page",
7070
Title: "updated-title",
@@ -87,7 +87,7 @@ func main() {
8787
},
8888
}
8989

90-
c, err := api.UpdateContent(data)
90+
c, err = api.UpdateContent(data)
9191
if err != nil {
9292
log.Fatal(err)
9393
}

examples/labels.go

+3-6
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,11 @@ func main() {
2424
}
2525

2626
// add new label
27-
labels := []goconfluence.Label{
28-
goconfluence.Label{
29-
Prefix: "global",
30-
Name: "test-label-api",
31-
},
27+
newlabels := []goconfluence.Label{
28+
{Prefix: "global", Name: "test-label-api"},
3229
}
3330

34-
lres, err := api.AddLabels("1234567", &labels)
31+
lres, err := api.AddLabels("1234567", &newlabels)
3532
if err != nil {
3633
log.Fatal(err)
3734
}

go.mod

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
module github.com/cseeger-epages/confluence-go-api
2+
3+
go 1.12
4+
5+
require (
6+
github.com/magefile/mage v1.8.0
7+
github.com/stretchr/testify v1.3.0
8+
)

go.sum

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
2+
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
3+
github.com/magefile/mage v1.8.0 h1:mzL+xIopvPURVBwHG9A50JcjBO+xV3b5iZ7khFRI+5E=
4+
github.com/magefile/mage v1.8.0/go.mod h1:IUDi13rsHje59lecXokTfGX0QIzO45uVPlXnJYsXepA=
5+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
6+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
7+
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
8+
github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
9+
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=

0 commit comments

Comments
 (0)