Skip to content

Commit

Permalink
Add a test case for namespace inheritance in canonicalization
Browse files Browse the repository at this point in the history
  • Loading branch information
Russell Haering committed Apr 19, 2023
1 parent 6ff53e2 commit f644ba4
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions canonicalize_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package dsig

import (
"strings"
"testing"

"github.com/beevik/etree"
Expand Down Expand Up @@ -80,3 +81,31 @@ func TestExcC14nRedeclareDefaultNamespace(t *testing.T) {
canonicalizer := MakeC14N10ExclusiveCanonicalizerWithPrefixList("")
runCanonicalizationTest(t, canonicalizer, input, expected)
}

func TestC14N10RecCanonicalizerWithNamespaceInheritance(t *testing.T) {
input := `<RootElement xmlns="http://www.example.com/ns1" xmlns:ns2="http://www.example.com/ns2">
<ns2:ChildElement>
<ns2:GrandChildElement>Hello, World!</ns2:GrandChildElement>
</ns2:ChildElement>
</RootElement>`

expected := `<ns2:ChildElement xmlns="http://www.example.com/ns1" xmlns:ns2="http://www.example.com/ns2">
<ns2:GrandChildElement>Hello, World!</ns2:GrandChildElement>
</ns2:ChildElement>`

doc := etree.NewDocument()
if err := doc.ReadFromString(input); err != nil {
t.Fatalf("Error parsing input XML: %v", err)
}

childElement := doc.FindElement(".//ns2:ChildElement")
if childElement == nil {
t.Fatal("Error: childElement not found")
}

canonicalizer := MakeC14N10RecCanonicalizer()
canonicalized, err := canonicalizer.Canonicalize(childElement)
require.NoError(t, err)
require.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(string(canonicalized)))

}

0 comments on commit f644ba4

Please sign in to comment.