diff options
author | Daniil Gentili <daniil@daniil.it> | 2022-06-25 19:06:01 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-25 19:06:01 +0200 |
commit | 95383b7a16205d749e9d696d69d0ae665e91501e (patch) | |
tree | 9bf9edfd5bd7ed1c6da7eefa73ea8843b609f8ca /modules/sitemap/sitemap_test.go | |
parent | 97bfabc745cdcce11ce50a62e29bb7a4e7e66e6c (diff) | |
download | gitea-95383b7a16205d749e9d696d69d0ae665e91501e.tar.gz gitea-95383b7a16205d749e9d696d69d0ae665e91501e.zip |
Add sitemap support (#18407)
Diffstat (limited to 'modules/sitemap/sitemap_test.go')
-rw-r--r-- | modules/sitemap/sitemap_test.go | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/modules/sitemap/sitemap_test.go b/modules/sitemap/sitemap_test.go new file mode 100644 index 0000000000..63007b8479 --- /dev/null +++ b/modules/sitemap/sitemap_test.go @@ -0,0 +1,77 @@ +// Copyright 2022 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package sitemap + +import ( + "bytes" + "encoding/xml" + "fmt" + "strings" + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +func TestOk(t *testing.T) { + testReal := func(s *Sitemap, name string, urls []URL, expected string) { + for _, url := range urls { + s.Add(url) + } + buf := &bytes.Buffer{} + _, err := s.WriteTo(buf) + assert.NoError(t, nil, err) + assert.Equal(t, xml.Header+"<"+name+" xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">"+expected+"</"+name+">\n", buf.String()) + } + test := func(urls []URL, expected string) { + testReal(NewSitemap(), "urlset", urls, expected) + testReal(NewSitemapIndex(), "sitemapindex", urls, expected) + } + + ts := time.Unix(1651322008, 0).UTC() + + test( + []URL{}, + "", + ) + test( + []URL{ + {URL: "https://gitea.io/test1", LastMod: &ts}, + }, + "<url><loc>https://gitea.io/test1</loc><lastmod>2022-04-30T12:33:28Z</lastmod></url>", + ) + test( + []URL{ + {URL: "https://gitea.io/test2", LastMod: nil}, + }, + "<url><loc>https://gitea.io/test2</loc></url>", + ) + test( + []URL{ + {URL: "https://gitea.io/test1", LastMod: &ts}, + {URL: "https://gitea.io/test2", LastMod: nil}, + }, + "<url><loc>https://gitea.io/test1</loc><lastmod>2022-04-30T12:33:28Z</lastmod></url>"+ + "<url><loc>https://gitea.io/test2</loc></url>", + ) +} + +func TestTooManyURLs(t *testing.T) { + s := NewSitemap() + for i := 0; i < 50001; i++ { + s.Add(URL{URL: fmt.Sprintf("https://gitea.io/test%d", i)}) + } + buf := &bytes.Buffer{} + _, err := s.WriteTo(buf) + assert.EqualError(t, err, "The sitemap contains too many URLs: 50001") +} + +func TestSitemapTooBig(t *testing.T) { + s := NewSitemap() + s.Add(URL{URL: strings.Repeat("b", sitemapFileLimit)}) + buf := &bytes.Buffer{} + _, err := s.WriteTo(buf) + assert.EqualError(t, err, "The sitemap is too big: 52428931") +} |