mirror of
https://github.com/emmansun/gmsm.git
synced 2025-04-25 19:56:18 +08:00
105 lines
2.1 KiB
Go
105 lines
2.1 KiB
Go
package smx509
|
|
|
|
import "testing"
|
|
|
|
func TestCertPoolEqual(t *testing.T) {
|
|
tc := &Certificate{Raw: []byte{1, 2, 3}, RawSubject: []byte{2}}
|
|
otherTC := &Certificate{Raw: []byte{9, 8, 7}, RawSubject: []byte{8}}
|
|
|
|
emptyPool := NewCertPool()
|
|
nonSystemPopulated := NewCertPool()
|
|
nonSystemPopulated.AddCert(tc)
|
|
nonSystemPopulatedAlt := NewCertPool()
|
|
nonSystemPopulatedAlt.AddCert(otherTC)
|
|
emptySystem, err := SystemCertPool()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
populatedSystem, err := SystemCertPool()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
populatedSystem.AddCert(tc)
|
|
populatedSystemAlt, err := SystemCertPool()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
populatedSystemAlt.AddCert(otherTC)
|
|
tests := []struct {
|
|
name string
|
|
a *CertPool
|
|
b *CertPool
|
|
equal bool
|
|
}{
|
|
{
|
|
name: "two empty pools",
|
|
a: emptyPool,
|
|
b: emptyPool,
|
|
equal: true,
|
|
},
|
|
{
|
|
name: "one empty pool, one populated pool",
|
|
a: emptyPool,
|
|
b: nonSystemPopulated,
|
|
equal: false,
|
|
},
|
|
{
|
|
name: "two populated pools",
|
|
a: nonSystemPopulated,
|
|
b: nonSystemPopulated,
|
|
equal: true,
|
|
},
|
|
{
|
|
name: "two populated pools, different content",
|
|
a: nonSystemPopulated,
|
|
b: nonSystemPopulatedAlt,
|
|
equal: false,
|
|
},
|
|
{
|
|
name: "two empty system pools",
|
|
a: emptySystem,
|
|
b: emptySystem,
|
|
equal: true,
|
|
},
|
|
{
|
|
name: "one empty system pool, one populated system pool",
|
|
a: emptySystem,
|
|
b: populatedSystem,
|
|
equal: false,
|
|
},
|
|
{
|
|
name: "two populated system pools",
|
|
a: populatedSystem,
|
|
b: populatedSystem,
|
|
equal: true,
|
|
},
|
|
{
|
|
name: "two populated pools, different content",
|
|
a: populatedSystem,
|
|
b: populatedSystemAlt,
|
|
equal: false,
|
|
},
|
|
{
|
|
name: "two nil pools",
|
|
a: nil,
|
|
b: nil,
|
|
equal: true,
|
|
},
|
|
{
|
|
name: "one nil pool, one empty pool",
|
|
a: nil,
|
|
b: emptyPool,
|
|
equal: false,
|
|
},
|
|
}
|
|
|
|
for _, tc := range tests {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
equal := tc.a.Equal(tc.b)
|
|
if equal != tc.equal {
|
|
t.Errorf("Unexpected Equal result: got %t, want %t", equal, tc.equal)
|
|
}
|
|
})
|
|
}
|
|
}
|