Skip to content

Commit

Permalink
[WIP] Continue adding JSON tests
Browse files Browse the repository at this point in the history
Signed-off-by: Yogesh Deshpande <[email protected]>
  • Loading branch information
yogeshbdeshpande committed Jan 30, 2024
1 parent 691451f commit 4404b77
Show file tree
Hide file tree
Showing 2 changed files with 125 additions and 30 deletions.
54 changes: 36 additions & 18 deletions comid/integregisters.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
"github.com/veraison/swid"
)

// IRegisterIndex is the interface that must be implemented by a;; RegisterValues.
// IRegisterIndex is the interface to hold register index
type IRegisterIndex interface{}

type IntegReg struct {
Expand All @@ -23,12 +23,12 @@ func NewIntegRegister() (*IntegReg, error) {

func (i *IntegReg) AddDigest(index IRegisterIndex, digest swid.HashEntry) error {
switch t := index.(type) {
case string, uint, int, uint64:
case string, uint, uint64:
digests := append(i.Register[t], digest)
i.Register[t] = digests

default:
return fmt.Errorf("unexpected type for int: %T", t)
return fmt.Errorf("unexpected type for index: %T", t)
}
return nil
}
Expand All @@ -47,36 +47,54 @@ func (o *IntegReg) UnMarshalCBOR(data []byte) error {
}

func (o IntegReg) ToJSON() ([]byte, error) {

Check failure on line 49 in comid/integregisters.go

View workflow job for this annotation

GitHub Actions / Lint

receiver-naming: receiver name o should be consistent with previous receiver name i for IntegReg (revive)
// First Check if it is VALID or not ?
jdata := make(map[string]json.RawMessage)

jmap := make(map[string]json.RawMessage)
for key, val := range o.Register {
var v tnv
switch t := key.(type) {
case uint, int, uint64:
case uint, uint64:
b, err := json.Marshal(key)
v := tnv{Type: "uint", Value: b}
if err != nil {
return nil, err
}
newk, err := json.Marshal(v)
v = tnv{Type: "uint", Value: b}
if err != nil {
return nil, err
}
newkey := string(newk)
newval, err := json.Marshal(val)
case string:
b, err := json.Marshal(key)
v = tnv{Type: "text", Value: b}
if err != nil {
return nil, err
}
jdata[newkey] = newval
case string:

default:
return nil, fmt.Errorf("unknown type %T for index-type-choice", t)

}
newk, err := json.Marshal(v)
if err != nil {
return nil, err
}
newkey := string(newk)
newval, err := json.Marshal(val)
if err != nil {
return nil, err
}
jmap[newkey] = newval
}
return json.Marshal(jdata)
return json.Marshal(jmap)
}

/*
newk, err := json.Marshal(v)
if err != nil {
return nil, err
}
newkey := string(newk)
newval, err := json.Marshal(val)
if err != nil {
return nil, err
}
jdata[newkey] = newval
*/
/*
var (
v tnv
Expand Down
101 changes: 89 additions & 12 deletions comid/integregisters_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ import (
"github.com/veraison/swid"
)

func TestIntegRegister_MarshalCBOR_OK(t *testing.T) {
func TestIntegRegisterUInt_MarshalCBOR_OK(t *testing.T) {
var index uint
bank, err := NewIntegRegister()
require.NoError(t, err)

Expand All @@ -20,25 +21,28 @@ func TestIntegRegister_MarshalCBOR_OK(t *testing.T) {
hash := []byte("124354658697908012435465869790801243546586979080")
err = entry.Set(swid.Sha384, hash)
require.NoError(t, err)
err = bank.AddDigest(0, *entry)
err = bank.AddDigest(index, *entry)

require.NoError(t, err)
err = bank.AddDigest(1, *entry)
index++
err = bank.AddDigest(index, *entry)
require.NoError(t, err)
err = bank.AddDigest(2, *entry)
index++
err = bank.AddDigest(index, *entry)
require.NoError(t, err)
hash1 := []byte("124354658697908012435465869790801243546586979090")
err = entry.Set(swid.Sha384, hash1)
require.NoError(t, err)
err = bank.AddDigest(0, *entry)
index = 0
err = bank.AddDigest(index, *entry)
require.NoError(t, err)
bytes, err := bank.MarshalCBOR()
require.NoError(t, err)
fmt.Printf("CBOR Payload = %x", bytes)

}

func TestINtegRegister_UnMarshalCBOR_OK(t *testing.T) {
func TestIntegRegisterUint_UnMarshalCBOR_OK(t *testing.T) {
bstr := MustHexDecode(nil, `a302818207583031323433353436353836393739303830313234333534363538363937393038303132343335343635383639373930383000828207583031323433353436353836393739303830313234333534363538363937393038303132343335343635383639373930383082075830313234333534363538363937393038303132343335343635383639373930383031323433353436353836393739303930018182075830313234333534363538363937393038303132343335343635383639373930383031323433353436353836393739303830`)
bank, err := NewIntegRegister()
require.NoError(t, err)
Expand All @@ -47,7 +51,8 @@ func TestINtegRegister_UnMarshalCBOR_OK(t *testing.T) {

}

func TestIntegRegister_MarshalToJSON_OK(t *testing.T) {
func TestIntegRegister_ToJSON_OK(t *testing.T) {
var index uint
bank, err := NewIntegRegister()
require.NoError(t, err)

Expand All @@ -56,20 +61,92 @@ func TestIntegRegister_MarshalToJSON_OK(t *testing.T) {
hash := []byte("124354658697908012435465869790801243546586979080")
err = entry.Set(swid.Sha384, hash)
require.NoError(t, err)
err = bank.AddDigest(0, *entry)
err = bank.AddDigest(index, *entry)

require.NoError(t, err)
err = bank.AddDigest(1, *entry)
index++
err = bank.AddDigest(index, *entry)
require.NoError(t, err)
err = bank.AddDigest(2, *entry)
index++
err = bank.AddDigest(index, *entry)
require.NoError(t, err)
hash1 := []byte("124354658697908012435465869790801243546586979090")
err = entry.Set(swid.Sha384, hash1)
require.NoError(t, err)
err = bank.AddDigest(0, *entry)
index = 0
err = bank.AddDigest(index, *entry)
require.NoError(t, err)
bytes, err := bank.ToJSON()
require.NoError(t, err)
fmt.Printf("JSPN Payload = %s", bytes)
fmt.Printf("JSON Payload = %s", bytes)

}

func TestIntegRegisterStr_MarshalCBOR_OK(t *testing.T) {
var index string

bank, err := NewIntegRegister()
require.NoError(t, err)

entry := &swid.HashEntry{}

hash := []byte("124354658697908012435465869790801243546586979080")
err = entry.Set(swid.Sha384, hash)
require.NoError(t, err)
index = "1"
err = bank.AddDigest(index, *entry)

require.NoError(t, err)
index = "2"
err = bank.AddDigest(index, *entry)
require.NoError(t, err)
index = "3"
err = bank.AddDigest(index, *entry)
require.NoError(t, err)
hash1 := []byte("124354658697908012435465869790801243546586979090")
err = entry.Set(swid.Sha384, hash1)
require.NoError(t, err)
bytes, err := bank.MarshalCBOR()
require.NoError(t, err)
fmt.Printf("CBOR Payload = %x", bytes)

}

func TestIntegRegisterText_UnMarshalCBOR_OK(t *testing.T) {
bstr := MustHexDecode(nil, `a3613281820758303132343335343635383639373930383031323433353436353836393739303830313234333534363538363937393038306133818207583031323433353436353836393739303830313234333534363538363937393038303132343335343635383639373930383061318182075830313234333534363538363937393038303132343335343635383639373930383031323433353436353836393739303830`)
bank, err := NewIntegRegister()
require.NoError(t, err)
err = bank.UnMarshalCBOR(bstr)
require.NoError(t, err)
}

func TestIntegRegisterText_ToJSON_OK(t *testing.T) {
var index string
bank, err := NewIntegRegister()
require.NoError(t, err)

entry := &swid.HashEntry{}

hash := []byte("124354658697908012435465869790801243546586979080")
err = entry.Set(swid.Sha384, hash)
require.NoError(t, err)
index = "a"
err = bank.AddDigest(index, *entry)
require.NoError(t, err)
index = "b"

err = bank.AddDigest(index, *entry)
require.NoError(t, err)
index = "c"
err = bank.AddDigest(index, *entry)
require.NoError(t, err)
hash1 := []byte("124354658697908012435465869790801243546586979090")
err = entry.Set(swid.Sha384, hash1)
require.NoError(t, err)
index = "d"
err = bank.AddDigest(index, *entry)
require.NoError(t, err)
bytes, err := bank.ToJSON()
require.NoError(t, err)
fmt.Printf("JSON Payload = %s", bytes)
}

0 comments on commit 4404b77

Please sign in to comment.