Skip to content

Commit 8f5c91f

Browse files
Unify saml_test.go and saml2_test.go
1 parent 4b1b265 commit 8f5c91f

2 files changed

Lines changed: 65 additions & 75 deletions

File tree

saml2_test.go

Lines changed: 0 additions & 70 deletions
This file was deleted.

saml_test.go

Lines changed: 65 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,81 @@
11
package saml2
22

33
import (
4+
"bytes"
5+
"compress/flate"
6+
"crypto"
7+
"crypto/tls"
48
"crypto/x509"
59
"encoding/base64"
610
"encoding/hex"
711
"encoding/pem"
12+
"encoding/xml"
13+
"fmt"
14+
"io/ioutil"
15+
"log"
816
"testing"
917

10-
"bytes"
11-
"compress/flate"
12-
1318
"github.com/beevik/etree"
1419
"github.com/russellhaering/gosaml2/types"
15-
"github.com/russellhaering/goxmldsig"
16-
require "github.com/stretchr/testify/require"
20+
dsig "github.com/russellhaering/goxmldsig"
21+
"github.com/stretchr/testify/require"
1722
)
1823

24+
var cert tls.Certificate
25+
var pk crypto.PrivateKey
26+
27+
func init() {
28+
var err error
29+
pfx := "./testdata/test"
30+
cert, err = tls.LoadX509KeyPair(fmt.Sprintf("%s.crt", pfx), fmt.Sprintf("%s.key", pfx))
31+
if err != nil {
32+
log.Fatal(err)
33+
}
34+
pk = cert.PrivateKey
35+
}
36+
37+
func TestDecode(t *testing.T) {
38+
f, err := ioutil.ReadFile("./testdata/saml.post")
39+
if err != nil {
40+
t.Fatalf("could not open test file: %v\n", err)
41+
}
42+
decoded := make([]byte, len(f))
43+
44+
base64.StdEncoding.Decode(decoded, f)
45+
response := &types.Response{}
46+
47+
err = xml.Unmarshal(decoded, response)
48+
if err != nil {
49+
t.Fatalf("error decoding test saml: %v", err)
50+
}
51+
52+
ea := response.EncryptedAssertions[0]
53+
54+
k, err := ea.EncryptedKey.DecryptSymmetricKey(&cert)
55+
if err != nil {
56+
t.Fatalf("could not get symmetric key: %v\n", err)
57+
}
58+
59+
if k == nil {
60+
t.Fatalf("no symmetric key")
61+
}
62+
63+
assertion, err := ea.Decrypt(&cert)
64+
if err != nil {
65+
t.Fatalf("error decrypting saml data: %v\n", err)
66+
}
67+
68+
f2, err := ioutil.ReadFile("./testdata/saml.xml")
69+
if err != nil {
70+
t.Fatalf("could not read expected output")
71+
}
72+
73+
expected := &types.Assertion{}
74+
err = xml.Unmarshal(f2, expected)
75+
76+
require.EqualValues(t, expected, assertion, "decrypted assertion did not match expectation")
77+
}
78+
1979
func signResponse(t *testing.T, resp string, sp *SAMLServiceProvider) string {
2080
doc := etree.NewDocument()
2181
err := doc.ReadFromBytes([]byte(resp))

0 commit comments

Comments
 (0)