fix: Fix CNAME parsing
This commit is contained in:
parent
e3032c8233
commit
5b9aaf5e24
@ -190,8 +190,22 @@ func GetRepositoryInformation(owner, repoName string, ctx *context.GlobalContext
|
|||||||
headers = make(map[string]string)
|
headers = make(map[string]string)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cname, found := payload["CNAME"]
|
||||||
|
if found {
|
||||||
|
switch cname.(type) {
|
||||||
|
case string:
|
||||||
|
// NOOP
|
||||||
|
default:
|
||||||
|
log.Warnf("CNAME attribute is not a string for %s/%s", owner, repoName)
|
||||||
|
cname = ""
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
cname = ""
|
||||||
|
}
|
||||||
|
|
||||||
info := context.RepositoryInformation{
|
info := context.RepositoryInformation{
|
||||||
Headers: filterHeaders(headers.(map[string]string)),
|
Headers: filterHeaders(headers.(map[string]string)),
|
||||||
|
CNAME: cname.(string),
|
||||||
}
|
}
|
||||||
ctx.Cache.SetRepositoryInformation(owner, repoName, info)
|
ctx.Cache.SetRepositoryInformation(owner, repoName, info)
|
||||||
return &info
|
return &info
|
||||||
|
@ -6,7 +6,9 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"git.polynom.me/rio/internal/context"
|
||||||
"git.polynom.me/rio/internal/gitea"
|
"git.polynom.me/rio/internal/gitea"
|
||||||
|
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -67,8 +69,15 @@ func TestPickingCorrectRepositoryDefault(t *testing.T) {
|
|||||||
return "", nil
|
return "", nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
ctx := &context.GlobalContext{
|
||||||
|
Gitea: &client,
|
||||||
|
Cache: &context.CacheContext{
|
||||||
|
RepositoryInformationCache: context.MakeRepoInfoCache(),
|
||||||
|
RepositoryPathCache: context.MakeRepoPathCache(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
res, path, err := RepoFromPath("example-user", "example-user.pages.example.org", "", "index.html", &client)
|
res, path, err := RepoFromPath("example-user", "example-user.pages.example.org", "", "index.html", ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("An error occured: %v", err)
|
t.Fatalf("An error occured: %v", err)
|
||||||
}
|
}
|
||||||
@ -118,8 +127,15 @@ func TestPickingCorrectRepositoryDefaultSubdirectory(t *testing.T) {
|
|||||||
return "", nil
|
return "", nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
ctx := &context.GlobalContext{
|
||||||
|
Gitea: &client,
|
||||||
|
Cache: &context.CacheContext{
|
||||||
|
RepositoryInformationCache: context.MakeRepoInfoCache(),
|
||||||
|
RepositoryPathCache: context.MakeRepoPathCache(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
res, path, err := RepoFromPath("example-user", "example-user.pages.example.org", "", "assets/index.css", &client)
|
res, path, err := RepoFromPath("example-user", "example-user.pages.example.org", "", "assets/index.css", ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("An error occured: %v", err)
|
t.Fatalf("An error occured: %v", err)
|
||||||
}
|
}
|
||||||
@ -173,8 +189,15 @@ func TestPickingCorrectRepositorySubdirectoryNoPagesBranch(t *testing.T) {
|
|||||||
return "", nil
|
return "", nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
ctx := &context.GlobalContext{
|
||||||
|
Gitea: &client,
|
||||||
|
Cache: &context.CacheContext{
|
||||||
|
RepositoryInformationCache: context.MakeRepoInfoCache(),
|
||||||
|
RepositoryPathCache: context.MakeRepoPathCache(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
res, path, err := RepoFromPath("example-user", "example-user.pages.example.org", "", "blog/post1.html", &client)
|
res, path, err := RepoFromPath("example-user", "example-user.pages.example.org", "", "blog/post1.html", ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("An error occured: %v", err)
|
t.Fatalf("An error occured: %v", err)
|
||||||
}
|
}
|
||||||
@ -211,8 +234,8 @@ func TestPickingNoRepositoryInvalidCNAME(t *testing.T) {
|
|||||||
return false
|
return false
|
||||||
},
|
},
|
||||||
GetFile: func(username, repositoryName, branch, path string, since *time.Time) ([]byte, bool, error) {
|
GetFile: func(username, repositoryName, branch, path string, since *time.Time) ([]byte, bool, error) {
|
||||||
if username == "example-user" && repositoryName == "example-user.pages.example.org" && branch == "pages" && path == "CNAME" {
|
if username == "example-user" && repositoryName == "example-user.pages.example.org" && branch == "pages" && path == "rio.json" {
|
||||||
return []byte("some-other-domain.local"), true, nil
|
return []byte("{\"CNAME\": \"some-other-domain.local\"}"), true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
t.Fatalf("Invalid file requested: %s/%s@%s:%s", username, repositoryName, branch, path)
|
t.Fatalf("Invalid file requested: %s/%s@%s:%s", username, repositoryName, branch, path)
|
||||||
@ -225,8 +248,15 @@ func TestPickingNoRepositoryInvalidCNAME(t *testing.T) {
|
|||||||
return "", nil
|
return "", nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
ctx := &context.GlobalContext{
|
||||||
|
Gitea: &client,
|
||||||
|
Cache: &context.CacheContext{
|
||||||
|
RepositoryInformationCache: context.MakeRepoInfoCache(),
|
||||||
|
RepositoryPathCache: context.MakeRepoPathCache(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
_, _, err := RepoFromPath("example-user", "example-user.pages.example.org", "example-user.local", "index.html", &client)
|
_, _, err := RepoFromPath("example-user", "example-user.pages.example.org", "example-user.local", "index.html", ctx)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("gitea.Repository returned even though CNAME validation should fail")
|
t.Fatal("gitea.Repository returned even though CNAME validation should fail")
|
||||||
}
|
}
|
||||||
@ -254,8 +284,8 @@ func TestPickingRepositoryValidCNAME(t *testing.T) {
|
|||||||
return false
|
return false
|
||||||
},
|
},
|
||||||
GetFile: func(username, repositoryName, branch, path string, since *time.Time) ([]byte, bool, error) {
|
GetFile: func(username, repositoryName, branch, path string, since *time.Time) ([]byte, bool, error) {
|
||||||
if username == "example-user" && repositoryName == "example-user.local" && branch == "pages" && path == "CNAME" {
|
if username == "example-user" && repositoryName == "example-user.local" && branch == "pages" && path == "rio.json" {
|
||||||
return []byte("example-user.local"), true, nil
|
return []byte("{\"CNAME\": \"example-user.local\"}"), true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
t.Fatalf("Invalid file requested: %s/%s@%s:%s", username, repositoryName, branch, path)
|
t.Fatalf("Invalid file requested: %s/%s@%s:%s", username, repositoryName, branch, path)
|
||||||
@ -268,8 +298,15 @@ func TestPickingRepositoryValidCNAME(t *testing.T) {
|
|||||||
return "", nil
|
return "", nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
ctx := &context.GlobalContext{
|
||||||
|
Gitea: &client,
|
||||||
|
Cache: &context.CacheContext{
|
||||||
|
RepositoryInformationCache: context.MakeRepoInfoCache(),
|
||||||
|
RepositoryPathCache: context.MakeRepoPathCache(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
repo, _, err := RepoFromPath("example-user", "example-user.local", "example-user.pages.example.org", "index.html", &client)
|
repo, _, err := RepoFromPath("example-user", "example-user.local", "example-user.pages.example.org", "index.html", ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Error returned: %v", err)
|
t.Fatalf("Error returned: %v", err)
|
||||||
}
|
}
|
||||||
@ -301,8 +338,8 @@ func TestPickingRepositoryValidCNAMEWithTXTLookup(t *testing.T) {
|
|||||||
return false
|
return false
|
||||||
},
|
},
|
||||||
GetFile: func(username, repositoryName, branch, path string, since *time.Time) ([]byte, bool, error) {
|
GetFile: func(username, repositoryName, branch, path string, since *time.Time) ([]byte, bool, error) {
|
||||||
if username == "example-user" && repositoryName == "some-different-repository" && branch == "pages" && path == "CNAME" {
|
if username == "example-user" && repositoryName == "some-different-repository" && branch == "pages" && path == "rio.json" {
|
||||||
return []byte("example-user.local"), true, nil
|
return []byte("{\"CNAME\": \"example-user.local\"}"), true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
t.Fatalf("Invalid file requested: %s/%s@%s:%s", username, repositoryName, branch, path)
|
t.Fatalf("Invalid file requested: %s/%s@%s:%s", username, repositoryName, branch, path)
|
||||||
@ -318,8 +355,15 @@ func TestPickingRepositoryValidCNAMEWithTXTLookup(t *testing.T) {
|
|||||||
return "", nil
|
return "", nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
ctx := &context.GlobalContext{
|
||||||
|
Gitea: &client,
|
||||||
|
Cache: &context.CacheContext{
|
||||||
|
RepositoryInformationCache: context.MakeRepoInfoCache(),
|
||||||
|
RepositoryPathCache: context.MakeRepoPathCache(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
repo, _, err := RepoFromPath("example-user", "example-user.local", "example-user.pages.example.org", "index.html", &client)
|
repo, _, err := RepoFromPath("example-user", "example-user.local", "example-user.pages.example.org", "index.html", ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Error returned: %v", err)
|
t.Fatalf("Error returned: %v", err)
|
||||||
}
|
}
|
||||||
@ -350,8 +394,8 @@ func TestPickingRepositoryValidCNAMEWithTXTLookupAndSubdirectory(t *testing.T) {
|
|||||||
return false
|
return false
|
||||||
},
|
},
|
||||||
GetFile: func(username, repositoryName, branch, path string, since *time.Time) ([]byte, bool, error) {
|
GetFile: func(username, repositoryName, branch, path string, since *time.Time) ([]byte, bool, error) {
|
||||||
if username == "example-user" && repositoryName == "some-different-repository" && branch == "pages" && path == "CNAME" {
|
if username == "example-user" && repositoryName == "some-different-repository" && branch == "pages" && path == "rio.json" {
|
||||||
return []byte("example-user.local"), true, nil
|
return []byte("{\"CNAME\": \"example-user.local\"}"), true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
t.Fatalf("Invalid file requested: %s/%s@%s:%s", username, repositoryName, branch, path)
|
t.Fatalf("Invalid file requested: %s/%s@%s:%s", username, repositoryName, branch, path)
|
||||||
@ -367,8 +411,15 @@ func TestPickingRepositoryValidCNAMEWithTXTLookupAndSubdirectory(t *testing.T) {
|
|||||||
return "", nil
|
return "", nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
ctx := &context.GlobalContext{
|
||||||
|
Gitea: &client,
|
||||||
|
Cache: &context.CacheContext{
|
||||||
|
RepositoryInformationCache: context.MakeRepoInfoCache(),
|
||||||
|
RepositoryPathCache: context.MakeRepoPathCache(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
repo, _, err := RepoFromPath("example-user", "example-user.local", "example-user.pages.example.org", "blog/index.html", &client)
|
repo, _, err := RepoFromPath("example-user", "example-user.local", "example-user.pages.example.org", "blog/index.html", ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Error returned: %v", err)
|
t.Fatalf("Error returned: %v", err)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user