Skip to content

Commit 6e7ba7e

Browse files
committed
[FAB-3992] Improve msp code coverage to 85.6%
fabric/msp code coverage is 84%. I added a few test cases to make it 85.6% - TestNotFoundInBCCSP: The msp setup can't find a matching key in BCCSP KS - Expanded TestRevocation to have a CRL with an invalid signature, so that the identity shouldn't be revoked even though the CRL exists Change-Id: I98e6e072959968c0c741605dbe2f19a6d650268e Signed-off-by: Yacov Manevich <[email protected]>
1 parent 423106d commit 6e7ba7e

File tree

7 files changed

+127
-6
lines changed

7 files changed

+127
-6
lines changed

msp/msp_test.go

+48-4
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,13 @@ limitations under the License.
1717
package msp
1818

1919
import (
20+
"errors"
21+
"fmt"
2022
"os"
23+
"path/filepath"
2124
"reflect"
2225
"testing"
2326

24-
"fmt"
25-
26-
"path/filepath"
27-
2827
"github.com/golang/protobuf/proto"
2928
"github.com/hyperledger/fabric/bccsp"
3029
"github.com/hyperledger/fabric/bccsp/sw"
@@ -147,6 +146,34 @@ func TestDoubleSetup(t *testing.T) {
147146
assert.NoError(t, err)
148147
}
149148

149+
type bccspNoKeyLookupKS struct {
150+
bccsp.BCCSP
151+
}
152+
153+
func (*bccspNoKeyLookupKS) GetKey(ski []byte) (k bccsp.Key, err error) {
154+
return nil, errors.New("not found")
155+
}
156+
157+
func TestNotFoundInBCCSP(t *testing.T) {
158+
dir, err := config.GetDevMspDir()
159+
assert.NoError(t, err)
160+
conf, err := GetLocalMspConfig(dir, nil, "DEFAULT")
161+
162+
assert.NoError(t, err)
163+
164+
thisMSP, err := NewBccspMsp()
165+
assert.NoError(t, err)
166+
ks, err := sw.NewFileBasedKeyStore(nil, filepath.Join(dir, "keystore"), true)
167+
assert.NoError(t, err)
168+
csp, err := sw.New(256, "SHA2", ks)
169+
assert.NoError(t, err)
170+
thisMSP.(*bccspmsp).bccsp = &bccspNoKeyLookupKS{csp}
171+
172+
err = thisMSP.Setup(conf)
173+
assert.Error(t, err)
174+
assert.Contains(t, "KeyMaterial not found in SigningIdentityInfo", err.Error())
175+
}
176+
150177
func TestGetIdentities(t *testing.T) {
151178
_, err := localMsp.GetDefaultSigningIdentity()
152179
if err != nil {
@@ -844,6 +871,23 @@ func TestMain(m *testing.M) {
844871
os.Exit(-1)
845872
}
846873

874+
id, err := localMsp.GetIdentifier()
875+
if err != nil {
876+
fmt.Println("Failed obtaining identifier for localMSP")
877+
os.Exit(-1)
878+
}
879+
880+
msps, err := mspMgr.GetMSPs()
881+
if err != nil {
882+
fmt.Println("Failed obtaining MSPs from MSP manager")
883+
os.Exit(-1)
884+
}
885+
886+
if msps[id] == nil {
887+
fmt.Println("Couldn't find localMSP in MSP manager")
888+
os.Exit(-1)
889+
}
890+
847891
retVal := m.Run()
848892
os.Exit(retVal)
849893
}

msp/revocation_test.go

+18-2
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,19 @@ limitations under the License.
1717
package msp
1818

1919
import (
20-
"testing"
21-
2220
"path/filepath"
21+
"testing"
2322

2423
"github.com/hyperledger/fabric/bccsp/sw"
2524
"github.com/hyperledger/fabric/protos/msp"
25+
"github.com/op/go-logging"
2626
"github.com/stretchr/testify/assert"
2727
)
2828

29+
func init() {
30+
logging.SetLevel(logging.DEBUG, "msp/identity")
31+
}
32+
2933
func TestRevocation(t *testing.T) {
3034
// testdata/revocation
3135
// 1) a key and a signcert (used to populate the default signing identity);
@@ -39,6 +43,18 @@ func TestRevocation(t *testing.T) {
3943
// the certificate associated to this id is revoked and so validation should fail!
4044
err = id.Validate()
4145
assert.Error(t, err)
46+
47+
// This MSP is identical to the previous one, with only 1 difference:
48+
// the signature on the CRL is invalid
49+
thisMSP = getLocalMSP(t, "testdata/revocation2")
50+
51+
id, err = thisMSP.GetDefaultSigningIdentity()
52+
assert.NoError(t, err)
53+
54+
// the certificate associated to this id is revoked but the signature on the CRL is invalid
55+
// so validation should succeed
56+
err = id.Validate()
57+
assert.NoError(t, err, "Identity found revoked although the signature over the CRL is invalid")
4258
}
4359

4460
func TestIdentityPolicyPrincipalAgainstRevokedIdentity(t *testing.T) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICYjCCAgmgAwIBAgIUB3CTDOU47sUC5K4kn/Caqnh114YwCgYIKoZIzj0EAwIw
3+
fzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNh
4+
biBGcmFuY2lzY28xHzAdBgNVBAoTFkludGVybmV0IFdpZGdldHMsIEluYy4xDDAK
5+
BgNVBAsTA1dXVzEUMBIGA1UEAxMLZXhhbXBsZS5jb20wHhcNMTYxMDEyMTkzMTAw
6+
WhcNMjExMDExMTkzMTAwWjB/MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv
7+
cm5pYTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEChMWSW50ZXJuZXQg
8+
V2lkZ2V0cywgSW5jLjEMMAoGA1UECxMDV1dXMRQwEgYDVQQDEwtleGFtcGxlLmNv
9+
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKIH5b2JaSmqiQXHyqC+cmknICcF
10+
i5AddVjsQizDV6uZ4v6s+PWiJyzfA/rTtMvYAPq/yeEHpBUB1j053mxnpMujYzBh
11+
MA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQXZ0I9
12+
qp6CP8TFHZ9bw5nRtZxIEDAfBgNVHSMEGDAWgBQXZ0I9qp6CP8TFHZ9bw5nRtZxI
13+
EDAKBggqhkjOPQQDAgNHADBEAiAHp5Rbp9Em1G/UmKn8WsCbqDfWecVbZPQj3RK4
14+
oG5kQQIgQAe4OOKYhJdh3f7URaKfGTf492/nmRmtK+ySKjpHSrU=
15+
-----END CERTIFICATE-----
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICYjCCAgmgAwIBAgIUB3CTDOU47sUC5K4kn/Caqnh114YwCgYIKoZIzj0EAwIw
3+
fzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNh
4+
biBGcmFuY2lzY28xHzAdBgNVBAoTFkludGVybmV0IFdpZGdldHMsIEluYy4xDDAK
5+
BgNVBAsTA1dXVzEUMBIGA1UEAxMLZXhhbXBsZS5jb20wHhcNMTYxMDEyMTkzMTAw
6+
WhcNMjExMDExMTkzMTAwWjB/MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv
7+
cm5pYTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEChMWSW50ZXJuZXQg
8+
V2lkZ2V0cywgSW5jLjEMMAoGA1UECxMDV1dXMRQwEgYDVQQDEwtleGFtcGxlLmNv
9+
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKIH5b2JaSmqiQXHyqC+cmknICcF
10+
i5AddVjsQizDV6uZ4v6s+PWiJyzfA/rTtMvYAPq/yeEHpBUB1j053mxnpMujYzBh
11+
MA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQXZ0I9
12+
qp6CP8TFHZ9bw5nRtZxIEDAfBgNVHSMEGDAWgBQXZ0I9qp6CP8TFHZ9bw5nRtZxI
13+
EDAKBggqhkjOPQQDAgNHADBEAiAHp5Rbp9Em1G/UmKn8WsCbqDfWecVbZPQj3RK4
14+
oG5kQQIgQAe4OOKYhJdh3f7URaKfGTf492/nmRmtK+ySKjpHSrU=
15+
-----END CERTIFICATE-----

msp/testdata/revocation2/crls/crl.pem

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
-----BEGIN X509 CRL-----
2+
MIIBYzCCAQgCAQEwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMCVVMxEzARBgNVBAgT
3+
CkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xHzAdBgNVBAoTFklu
4+
dGVybmV0IFdpZGdldHMsIEluYy4xDDAKBgNVBAsTA1dXVzEUMBIGA1UEAxMLZXhh
5+
bXBsZS5jb20XDTE3MDEyMzIwNTYyMFoXDTE3MDEyNjIwNTYyMFowJzAlAhQERXCx
6+
LHROap1vM3CV40EHOghPTBcNMTcwMTIzMjA0NzMxWqAvMC0wHwYDVR0jBBgwFoAU
7+
F2dCPaqegj/ExR2fW8OZ0bWcSBAwCgYDVR0UBAMCAQgwCgYIKoZIzj0EAwIDSQAw
8+
RgIhAOTTpQYkAO+gwVe1LQOcNMD5fzFViOwBUraMrk6dRMlmAiEA8z2dpXKGwHrj
9+
FRBbKkDnSpaVcZgjns+mLdHV2JkF0gk=
10+
-----END X509 CRL-----
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
-----BEGIN EC PRIVATE KEY-----
2+
MHcCAQEEIAsWwFunEzqz1Rh6nvD4MiPkKCtmoxzh3jTquG5MSbeLoAoGCCqGSM49
3+
AwEHoUQDQgAEHBuKsAO43hs4JGpFfiGMkB/xsILTsOvmN2WmwpsPHZNL6w8HWe3x
4+
CPQtdG/XJJvZ+C756KEsUBM3yw5PTfku8g==
5+
-----END EC PRIVATE KEY-----
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICjDCCAjKgAwIBAgIUBEVwsSx0TmqdbzNwleNBBzoIT0wwCgYIKoZIzj0EAwIw
3+
fzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNh
4+
biBGcmFuY2lzY28xHzAdBgNVBAoTFkludGVybmV0IFdpZGdldHMsIEluYy4xDDAK
5+
BgNVBAsTA1dXVzEUMBIGA1UEAxMLZXhhbXBsZS5jb20wHhcNMTYxMTExMTcwNzAw
6+
WhcNMTcxMTExMTcwNzAwWjBjMQswCQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGgg
7+
Q2Fyb2xpbmExEDAOBgNVBAcTB1JhbGVpZ2gxGzAZBgNVBAoTEkh5cGVybGVkZ2Vy
8+
IEZhYnJpYzEMMAoGA1UECxMDQ09QMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
9+
HBuKsAO43hs4JGpFfiGMkB/xsILTsOvmN2WmwpsPHZNL6w8HWe3xCPQtdG/XJJvZ
10+
+C756KEsUBM3yw5PTfku8qOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYw
11+
FAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFOFC
12+
dcUZ4es3ltiCgAVDoyLfVpPIMB8GA1UdIwQYMBaAFBdnQj2qnoI/xMUdn1vDmdG1
13+
nEgQMCUGA1UdEQQeMByCCm15aG9zdC5jb22CDnd3dy5teWhvc3QuY29tMAoGCCqG
14+
SM49BAMCA0gAMEUCIDf9Hbl4xn3z4EwNKmilM9lX2Fq4jWpAaRVB97OmVEeyAiEA
15+
25aDPQHGGq2AvhKT0wvt08cX1GTGCIbfmuLpMwKQj38=
16+
-----END CERTIFICATE-----

0 commit comments

Comments
 (0)