~bigbes/confluence-md-utilities

ref: fb67f6989dc2cabe60498e0e7b8f7a51e1e9826b confluence-md-utilities/api/url_test.go -rw-r--r-- 2.6 KiB
fb67f698 — Eugene Blikh Initial commit: mdcx — Markdown to Confluence XML converter 2 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package api

import (
	"testing"

	"github.com/stretchr/testify/assert"
	"github.com/stretchr/testify/require"
)

func TestParsePageURL_ViewPageAction(t *testing.T) {
	ref, err := ParsePageURL("https://confluence.example.com/pages/viewpage.action?pageId=12345")
	require.NoError(t, err)
	assert.Equal(t, "https://confluence.example.com", ref.BaseURL)
	assert.Equal(t, "12345", ref.PageID)
	assert.Empty(t, ref.SpaceKey)
	assert.Empty(t, ref.Title)
}

func TestParsePageURL_ViewPageActionWithPort(t *testing.T) {
	ref, err := ParsePageURL("https://confluence.example.com:8443/pages/viewpage.action?pageId=99")
	require.NoError(t, err)
	assert.Equal(t, "https://confluence.example.com:8443", ref.BaseURL)
	assert.Equal(t, "99", ref.PageID)
}

func TestParsePageURL_DisplayFormat(t *testing.T) {
	ref, err := ParsePageURL("https://confluence.example.com/display/TEAM/My+Page+Title")
	require.NoError(t, err)
	assert.Equal(t, "https://confluence.example.com", ref.BaseURL)
	assert.Empty(t, ref.PageID)
	assert.Equal(t, "TEAM", ref.SpaceKey)
	assert.Equal(t, "My Page Title", ref.Title)
}

func TestParsePageURL_DisplayFormatEncodedTitle(t *testing.T) {
	ref, err := ParsePageURL("https://confluence.example.com/display/DEV/API+%26+SDK+Guide")
	require.NoError(t, err)
	assert.Equal(t, "DEV", ref.SpaceKey)
	assert.Equal(t, "API & SDK Guide", ref.Title)
}

func TestParsePageURL_DisplayFormatTrailingSlash(t *testing.T) {
	ref, err := ParsePageURL("https://confluence.example.com/display/TEAM/Page/")
	require.NoError(t, err)
	assert.Equal(t, "TEAM", ref.SpaceKey)
	assert.Equal(t, "Page", ref.Title)
}

func TestParsePageURL_ViewPageNoPageID(t *testing.T) {
	_, err := ParsePageURL("https://confluence.example.com/pages/viewpage.action")
	require.Error(t, err)
	assert.Contains(t, err.Error(), "pageId")
}

func TestParsePageURL_DisplayFormatNoTitle(t *testing.T) {
	_, err := ParsePageURL("https://confluence.example.com/display/SPACE")
	require.Error(t, err)
	assert.Contains(t, err.Error(), "Title")
}

func TestParsePageURL_NoScheme(t *testing.T) {
	_, err := ParsePageURL("confluence.example.com/display/SPACE/Page")
	require.Error(t, err)
}

func TestParsePageURL_UnrecognizedFormat(t *testing.T) {
	_, err := ParsePageURL("https://confluence.example.com/some/other/path")
	require.Error(t, err)
	assert.Contains(t, err.Error(), "unrecognized")
}

func TestParsePageURL_SubPage(t *testing.T) {
	ref, err := ParsePageURL("https://confluence.example.com/display/TEAM/Parent/Child+Page")
	require.NoError(t, err)
	assert.Equal(t, "TEAM", ref.SpaceKey)
	// Sub-pages: the full path after space key is the title
	assert.Equal(t, "Parent/Child Page", ref.Title)
}