Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

types encoding tests + json #169

Merged
merged 1 commit into from
Mar 12, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions qbft/messages.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,7 @@ func (msg *Message) Decode(data []byte) error {

// GetRoot returns the root used for signing and verification
func (msg *Message) GetRoot() ([32]byte, error) {
r, err := msg.HashTreeRoot()
return r, err
return msg.HashTreeRoot()
}

// Validate returns error if msg validation doesn't pass.
Expand Down
2 changes: 1 addition & 1 deletion qbft/messages_encoding.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 11 additions & 2 deletions types/spectest/all_tests.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,12 @@ package spectest

import (
"github.com/bloxapp/ssv-spec/types/spectest/tests/beacon"
"github.com/bloxapp/ssv-spec/types/spectest/tests/consensusdata"

"github.com/bloxapp/ssv-spec/types/spectest/tests/encryption"
"github.com/bloxapp/ssv-spec/types/spectest/tests/partialsigmessage"
"github.com/bloxapp/ssv-spec/types/spectest/tests/share"
"github.com/bloxapp/ssv-spec/types/spectest/tests/ssvmsg"
"testing"
)

Expand All @@ -12,7 +17,11 @@ type SpecTest interface {
}

var AllTests = []SpecTest{
//share.Encoding(),
ssvmsg.Encoding(),

partialsigmessage.Encoding(),

share.Encoding(),
//share.HasQuorum(),
//share.QuorumWithDuplicate(),
//share.HasQuorum3f1(),
Expand All @@ -28,7 +37,7 @@ var AllTests = []SpecTest{
encryption.EncryptBLSSK(),

// TODO: consider removing tests below
//consensusdata.Encoding(),
consensusdata.Encoding(),
//consensusdata.DutyNil(),
//consensusdata.ValidAttester(),
//consensusdata.NoAttestationData(),
Expand Down
46 changes: 46 additions & 0 deletions types/spectest/generate/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package main

import (
"encoding/json"
"fmt"
"github.com/bloxapp/ssv-spec/types/spectest"
"os"
"reflect"
)

//go:generate go run main.go

func main() {
all := map[string]spectest.SpecTest{}
for _, t := range spectest.AllTests {
n := reflect.TypeOf(t).String() + "_" + t.TestName()
if all[n] != nil {
panic(fmt.Sprintf("duplicate test: %s\n", n))
}
all[n] = t
}

byts, err := json.Marshal(all)
if err != nil {
panic(err.Error())
}

if len(all) != len(spectest.AllTests) {
panic("did not generate all tests\n")
}

fmt.Printf("found %d tests\n", len(all))
writeJson(byts)
}

func writeJson(data []byte) {
basedir, _ := os.Getwd()
//path := filepath.Join(basedir, "ssv", "spectest", "generate")
fileName := "tests.json"
fullPath := basedir + "/" + fileName

fmt.Printf("writing spec tests json to: %s\n", fullPath)
if err := os.WriteFile(fullPath, data, 0644); err != nil {
panic(err.Error())
}
}
1 change: 1 addition & 0 deletions types/spectest/generate/tests.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"*beacon.DepositDataSpecTest_deposit data root and ssz":{"Name":"deposit data root and ssz","ValidatorPK":"b3d50de8d77299da8d830de1edfb34d3ce03c1941846e73870bb33f6de7b8a01383f6b32f55a1d038a4ddcb21a765194","WithdrawalCredentials":"005b55a6c968852666b132a80f53712e5097b0fca86301a16992e695a8e86f16","ForkVersion":[0,0,0,0],"ExpectedSigningRoot":"69d2af2fd5870077e45f574087a38f476ac3b0f680a511767fb1b0f17f8c4cbd"},"*consensusdata.EncodingTest_ConsensusData encoding":{"Name":"ConsensusData encoding","Data":"FAAAAAAAAAAAAAAAmAAAAJgAAAAEAAAAAAAAAI6ABmVRqBsxglhwntr33R9jzWhqDk24spu7es/mVghnevWlJ9lEjuR4NUheArULwAwAAAAAAAAAAQAAAAAAAAADAAAAAAAAAIAAAAAAAAAAJAAAAAAAAAALAAAAAAAAAGwAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAAMAAAAEAEAABQCAACxiDO7dUnsM+isQUugAv1FuwlMowC9JFlvBKQ0qJvupGJAHafGuS+zmRvRcWPrYDYEpA6N1ngSZsmQAjRGd2/0KpMT3yago0GEpZDlf6QAPWEML6IU20597EaFkgECmLxkAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCUNCyVFGVU34Sdwg90JfymktrO58tFJY3dJkqOWSmGFGn9o9FWe5Uhy6gxiP/WGg2+bXGAx6lvWBDRjbMF6RQ3crdm02iqltN1H5jQzi25+ebyYyVwIIjYfw3lAMZ8aGQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAp/iM5D7/OqjN0uOVfFvq1OITU/vsrGB5pTmNAwGbxF/3yVF4UXLe7nDpvFq7yMpqDwRB6dTMnadMMRITV/fXx96VM/b0V9pJPjMU4i1VSrdmE+RpsFDiRq/1OaM4Bxl8ZAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=","ExpectedRoot":[202,75,73,99,42,185,101,164,4,168,237,77,218,139,80,206,133,131,215,51,85,94,85,216,49,208,140,85,249,9,99,191]},"*encryption.EncryptionSpecTest_encryption bls secret key encryption":{"Name":"bls secret key encryption","SKPem":"LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBNEk5NXJzc1FGSWw4TVlwUHZJS2hnRmlPZTZBdWRjZlpWZVhHdUo4cVZQWHJnUjRkCm83dmhHRCtDT2FJQjIrR3FWNlBXNU5tMnBsek41OXg0L1ZVSkRKbEhHS2NrRXRYTk9LNWFMR0MwRWJibHFZMVgKVVNxMThWTFF2YVUvdjBLeUh2cjNIelRPYTZJdGVPejRieWc5bTd6cW5VemVXcERaUy9DZGxqc2xKbWhWM2k1UApHdWxqNlh5YUs0dGs3alFNRTVjVFdneWhNOHpWTkpqb1RoeUw2NE1reGtvb1k5UzRaTmZQeEhxZjBDaEFvLzgwCnNNL0pONmZtWXd6WGlCVEZ0WUxDMnJuMnBtRlk0NUQ0aVNHcExyUE9YL0xXSzVIZUF4Q3N4YVdYdDRnY0tuMFIKbVFkSDdmTHBDRVA5bEtFa1Z1akdpQ2NqeUVEWFVvZ3A4cjdmOFFJREFRQUJBb0lCQUhOcDZqMW5DbTJ6dDh2eQpiVWJTME5TWkx5bmt5dHdvQ2RDM0Z1cCtpNUE5RUh3OUVUaTg4RlM1RjJJdG5NejQ3OGE1WTFJZGYxMkRweVE2CjBVaEtzeXJ4Z0hQd08zOGV1YW9mR2lOaTFFbWllZWtweHEzbHlMc3VPREN3Uk5JMUlqei8rWkRsWUE0N3ZTbEEKaWZML2VLS1pkdSsvdVN4TTlCR3VxaCt6YUVXVE5ieFRGdVFFZytNOW95enlESmlTa3RiajlLWTk2Smo0VlJGVQo1aVdsc0pZRWp2MERUVGI0S283R1hENVg3MGVZeERDaUNsS01BcnNUazM1c2dtcXU3NlhEYk9DdDFKNit1QTN5CkE5T0dwV2ttb0pFUWprbkRpK1ZhWm9vL2JqY3VralJSczQrNmw2L0tZV2oyVDJDRk8wbnF0emR5SEZobE9pQkYKbGE1YW5BRUNnWUVBNmJqVzRqSzBuSm5SanVnYk1NckFmYStTV2ovMHR0L3NZaUlzN1hRYXBFTkVYaEZNaDFrTgp3dmdpZVFPSWJPZW9aYzgwWlNWNmRhRGZOK2JSejdxWFJuQzI5YXVpbVNEc2FQRWVNTUJldkFuOWpta3R2M21wCi9yeDJkNE9ycmFrSU9HMVJjQTVkUlpwaS95aDJWclRHSDhRQlNxZ1RaSVZ2SG1vWjBTa3FGOEVDZ1lFQTlmY1UKZVJUMkNmMkJWSjNwQldaUk92R2JBYnFINi9wU3dkL0lDOFFCZ2dkUTRVZmkrU0tDaTJ5UWg5YW9vWTU1VGhRbgphYXhnYzRKdGxKTnhHWnZSMjQrbWtCbUtBMTYrK3cyNXA1bStGOUlMSDg4OWE4emxSSkt2dTVwU2NGR0RSc0dTClczTGIzdzdvaStMN2ZJeS80UFUweFNJVFR0R1g5cjlnWnBNbFZERUNnWUVBcVBEZkFxbzhPMlpFUDlRdXMxb2IKUWI2RFA1RXpSbTBkNU9Gbk1FellaUnZxYzBSMTJPL2FMckJGMnN0ZTlibU4wK211cWQ0cFlwVmlSSG9uOXN1ZApSV0Y4SHFCdDY5b01pTjZoUUFRTmRrYVNiVHBCdzBJaVN1dlhoaFE3S0ZBaWpRY1g4ck92WC94MHlwTm8xc3ZjCjJtRkh2YnM0S1ZUNk9UWGdhM3doM1FFQ2dZQm9KZFR2YUNhK0dDOTVDdHd1UXlMR0dLT1AyZEhQNDlEQzh1U2IKeHNUMHIvQlpVNzBSek1FR0ZGUW1rSWdhMEY4ZzVudkJ6UkdTRjNvYTNVdVlrbGdMNWdtYkhwVkgxQWg5K1ZQUgpXZElaK0FCcDJiQ2lRc0laaFJzUURzbzFjTzVyT1crbGRUOFFkaG1Wa2VqMjFnb3hVT0tsVGtacXEyanpQQm12CmxVTExJUUtCZ0RwM1hDdHFSTncxUkJvTDZBcW9FcE9RM2JPeEgrRTZpZWViOE51RmRzeldIUmg1SUZXTituWmEKYzRVeU5Wd1JCVFRlUUhJWC9vWFdVeDhJaSs1Ni91ZXBZeUU0RFZRRndVK3QvU0pBU1BteEgxZWpHR2p0NjVlVwpMdUVyb1R6N3dEZ1NNRE54ZE5RaHFKRmN2OEhrR1gwajZFZ1NPc2M1dzBZUDRKZDdSZTg1Ci0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==","PKPem":"LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBNEk5NXJzc1FGSWw4TVlwUHZJS2gKZ0ZpT2U2QXVkY2ZaVmVYR3VKOHFWUFhyZ1I0ZG83dmhHRCtDT2FJQjIrR3FWNlBXNU5tMnBsek41OXg0L1ZVSgpESmxIR0tja0V0WE5PSzVhTEdDMEViYmxxWTFYVVNxMThWTFF2YVUvdjBLeUh2cjNIelRPYTZJdGVPejRieWc5Cm03enFuVXplV3BEWlMvQ2RsanNsSm1oVjNpNVBHdWxqNlh5YUs0dGs3alFNRTVjVFdneWhNOHpWTkpqb1RoeUwKNjRNa3hrb29ZOVM0Wk5mUHhIcWYwQ2hBby84MHNNL0pONmZtWXd6WGlCVEZ0WUxDMnJuMnBtRlk0NUQ0aVNHcApMclBPWC9MV0s1SGVBeENzeGFXWHQ0Z2NLbjBSbVFkSDdmTHBDRVA5bEtFa1Z1akdpQ2NqeUVEWFVvZ3A4cjdmCjhRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","PlainText":"OdyA9Z+EpsZ8lI3sYdDM7rztddfC3C7x/J/2a8sIJcM=","CipherText":"AfeuKFTXucWNtc+nfW2ZMKpz8rTpJY8KoF4IJ1Ks3e7RifgIa7DKeWkiExmEHpTa7N1Ol6s8yhXgF/ovqLPXkKfVD3gIsh2vJPpCB10SFsqTXSR4/bOpXfQPMyBTTU8tGlyjfuGgHeCluYtx9BXO6ovmx5xqP0JNXpnVF9DXhHU305dbDaOFufX9I1EcsLG8MKdNc8g7HQLvfxBmHdDw641CDoxjpQa8WfVQ85od5fcedAdboBcp+9MUYlUUKWg+DOVEXqm80ZXk6aCoQkLSsbN5suVZlPW2hIxX7MUGuZosnUCiqWh6jafmE0kqXKpxlhkGz3fHiglAnSMHVeUoJw=="},"*encryption.EncryptionSpecTest_encryption simple encryption":{"Name":"simple encryption","SKPem":"LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBdDlBUFo0QUNJcURpVlY4NkUzOXpwelgrRy9ONnJBMHJqOUhBVndDbXV3SGhNYm9PCmMrdWF0VVNkZTgvVmFVRCtYcytoRWJidk9DM21HNWR0d3FQblFiUytsWTF4eEdFbWlpWTQxREVtVTM5a3hGVWkKU0UxNlBJWHhhUVZhMW9IajN4c1IyZWlZZHRWYUVhejhVOW44L3JKcFd5Y0JvOC9mMzhESXFRdG5vSXZjaWxGawpRYUkrMUVGeGdQcGtRN3h1OGZVZ1U5YzNXMzJGYXFEU3lFNVVUbHhpWTZ0MjloenlmM09OZk1ncDBDQ1A2QlZGCitaellEcjZVM2RrUXk1M3prVjcxRlFlcVJGWmxld3pYUVpxaURQa3hkTWl6QytKTXdQeXBhVnZVMUh5dGt2WmcKRUdlT2tlLzdhL1p6RFNyd1V2RFpjV2VEbDRTSG9BTmJhWkwxc3dJREFRQUJBb0lCQUFJTGJYQndTeFhKaGxyKwp3UzJnV0UvKzJNSEUxcE45WGdPdWlKNHZJcXVuM0xKcDZHay9zS3ZkaElieEMrV3MxR2VIbGJvVnQ5bC9JVFVqClhSUXlNSXRaa0ZrbmhxRnhselVvTWEraWtGT1RjaktBNCsyNzl1VWZkRXovd3ovcGwvaE9XOGQ1ditCcWhTTDMKTXFOWUpHbE00TUVqME8vYWl4bjVFZ0pYWHlLNUJyY014MXIwbnJLZmFpeklGRkhnTFZheUVSVXNiZ04wQzh4VwpSUDY3Yk1VQWJhZlA1SWxWZnhxREhlcWloMmkxYStWRUZJTjFvc2VNb21WTHZjeE1WT2FPRjJnTUIyQjVyY09BClBiYTZaaDlrNzV5cVZoYnFPeC9DcisxZzRJUndkWVFnMzhPMVpxRUZ5WW45NE5JS3FSMXpsWHpvYmRjQVU2bWQKbWxLb3MvRUNnWUVBNmQ2VUkyWjJ0ZFFjSTg0WVYwODJtT2pRN3U4aFNrQWxHL3BQNkNlWEFlUGNXWHZsVm1vZApsSytpdGZVeUp5Mk05Q2c2VitoM1FZVTVJa3lySGdiYWhmM0FSd0k5cUg1RkgrMDlVODZrMytObW1EU25DdFF2Cmh5eERlaXJsb2xlV0hqYVREeDZUUW9HY2VpRHMyakszKzd6UVVHUXp4a3drMktYVGJwdnpMdGtDZ1lFQXlUVGYKTEpUeUVORU15djcvS1dwWERrUlltRE5lRWF0TmIvbnpDZUdJeXJkV0ErZVUxMnk3Y0JIQjhVQitkMzFwbTRJTwordDdnclBKZjVGNlFQZWQ3dUdvdlg3YjdYMXVsQjFXZlZBMXU5bzhKL2l6VjVDM0F6Z01PUnIvQ2I5U3pUakJhCjdRSkdxSjkwcXlqVDcwU3U4eVIwZkR5amY3QnpkNE5tWUppV3lXc0NnWUJMQnlZZFNVVHlSbThVcVl5emplMGwKRnlQWVU0MHBoZlNoeWljU2dvajJpVVJxek0yaGNIKzI4TFhSakMwZjFvUXUzQzBEZ01lcGxIVGs1UlhNbDBSSgowa042UkdURmhtVGt2alo3aVlMcGRNbTRNTVFhUEVKWEtrTW5rVldFUkhjYmtFU1RpQ3FVSG9LMXg1UlUyQXFnClQwM0JUTFF6Zk1BaFpPbTB4WUU1MlFLQmdHTDRzL0t0RFdsQ080VzY2dTZIVlcwNkowNHVyazRJc2wycldHWjYKM3h2QUZQcDB0cDFFNmVwVmdjM1hDSjVrUFVkMk1VSXIwZDZnbHBTeUEwZkFEdmFHbk9qN0RDazYzakYrWjVJagp6WHBRbi95OE56WTNYMGkyN2hYVkM2S1F3T1pzR0wzT3ljejJLcUJxdzkxRkxyMkJLQjlZZ0tBMXZvYUNSeUNxCnpqa2pBb0dCQUpQVno2OG05NTdzMWlrTVdldWQvYkZLNUxyT1RTRVRsWVV2eXpkTUlOVm1mSWRGTTVJRGVOSVEKSy9hVGJxRUZDM25lek80aFpIblZLVmttYXZTRGUzL0ZKSWlESlg4ajlEWmx5MlV4TjgzL0tnUVFKWDZMUnp2agpBSnFnZFVObEZNSUNuaXpGR21OWUpmQTQ4SmhVZGN3Q2dXbmdESHdad0Q4U3ZWQTFpSjJHCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==","PKPem":"LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdDlBUFo0QUNJcURpVlY4NkUzOXoKcHpYK0cvTjZyQTByajlIQVZ3Q211d0hoTWJvT2MrdWF0VVNkZTgvVmFVRCtYcytoRWJidk9DM21HNWR0d3FQbgpRYlMrbFkxeHhHRW1paVk0MURFbVUzOWt4RlVpU0UxNlBJWHhhUVZhMW9IajN4c1IyZWlZZHRWYUVhejhVOW44Ci9ySnBXeWNCbzgvZjM4RElxUXRub0l2Y2lsRmtRYUkrMUVGeGdQcGtRN3h1OGZVZ1U5YzNXMzJGYXFEU3lFNVUKVGx4aVk2dDI5aHp5ZjNPTmZNZ3AwQ0NQNkJWRitaellEcjZVM2RrUXk1M3prVjcxRlFlcVJGWmxld3pYUVpxaQpEUGt4ZE1pekMrSk13UHlwYVZ2VTFIeXRrdlpnRUdlT2tlLzdhL1p6RFNyd1V2RFpjV2VEbDRTSG9BTmJhWkwxCnN3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","PlainText":"aGVsbG8gd29ybGQ=","CipherText":"Bh9zlv8yYN0AyaWnu6JJnMCpWCoXZr8KK5ILFF1q9BV+PLb177gPN2DoS+UaySTTSLN+//8zPCIA1FLD531vCjVa1YgbVrO0sRDuGcIRq7Ow5DyU3/G2i/heTl94pX1/XEgPJ3Tgm8HHcGGB2qLDgb3AIRxoWTTkea2BIztoHw9KYceYX5p1j1sw991wAFst1DhIdYtV6DLGlWzf3J07BjzqnfEsP/qnIRcMb0GBwLStCrQ3dbUeLu2SqXqQpBud8Z3bMmJJLxHAdT01eBQwws7mnyj7cxApTAKFsyMXFMcZpmZYqccY1o4CI0XtYn0PEA/fVWFyhaXe1B/0Z5u/yw=="},"*partialsigmessage.EncodingTest_SignedPartialSignatureMessage encoding":{"Name":"SignedPartialSignatureMessage encoding","Data":"bAAAALgezSLkqlWt6mqT31w6CdHAWSVeTXP6ItK6HPuQMykaUpHcVx/4Oclv8eX49I/AVwBFjTiPPidWjw12BNR26jsY5Sb5aLFqaScq0u4m/lujP8QFOYoqJiUi1mOJHjO1IAEAAAAAAAAAAgAAAAAAAAAMAAAAAAAAABQAAACkebAj2fKOuczdNbuWD7XCZVMN/xeK5+Spt38Bf3WcpaISXnJr3gzZKjMwCVSUyMAHgqJ/qJB+jBqt49rNuOBhRobGfh9igwRgXXhh4O2YA8auIWtKrlWo/7Se7Rk8vqdGJhHSxZK99SFPEk/npSaatz1E78nmzhq+MvgZauUm3gEAAAAAAAAA","ExpectedRoot":[135,210,231,183,128,210,66,213,218,41,56,104,5,42,120,80,50,237,24,60,163,179,110,246,242,146,222,252,161,20,160,115]},"*share.EncodingTest_share encoding":{"Name":"share encoding","Data":"AQAAAAAAAACOgAZlUagbMYJYcJ7a990fY81oag5NuLKbu3rP5lYIZ3r1pSfZRI7keDVIXgK1C8CX2UqBHWRJNgUqnS1KzWRxiXTPZ42+/SZzJMjp+OcDSkprfYd54noBlTjDxCXD5eekAAAAAAADAVNZU7WmBAB0lIzxheqn0qu9ZoCPAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAJfZSoEdZEk2BSqdLUrNZHGJdM9njb79JnMkyOn45wNKSmt9h3niegGVOMPEJcPl5wIAAAAAAAAAprzr4wl9dBcbQMcSoDHOsDcds9PEAs8s5pG5Eg87q3XU1W36DzdZFUSZm/GMU1PtAwAAAAAAAACAkOC3ZmpF7MXU73QYrJnwnmyyRAKf6moKf8y+nuCLxTneDfpmvmuryEk92Z3RqY0EAAAAAAAAAKfAona3Cl7jOVx9bSZV7WBSiqJS1NIeyl/MUiPlDMQr0WiygKt6tTFzVN3fzz355A==","ExpectedRoot":[179,115,251,110,55,46,177,200,236,20,174,62,142,228,236,192,195,119,100,208,16,212,156,138,255,44,110,223,13,58,114,109]},"*ssvmsg.EncodingTest_SSVMessage encoding":{"Name":"SSVMessage encoding","Data":"AQAAAAAAAAAAAAMBjoAGZVGoGzGCWHCe2vfdH2PNaGoOTbiym7t6z+ZWCGd69aUn2USO5Hg1SF4CtQvABAAAAEQAAABsAAAApVZlz3TuLIK4vjEUnvzGlYmL5mI5hK21RBXikyxnZ1MhB5p1Tz9XRG5VXu9NZkxlFac5f6EIhzmJsz6Q8/2G8p/8KumzQ1IUHPpEIzssJMMofzgF+pR1vZ0QkCXrkPxgAQAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAKYbeKIkTW+URtBxFnc8cxvUgaZuPuntXVt1KFjOCrVm1zMQbPiph2scA4N/hdapmw+2FgdC0u1U3o5lDZxv/dbzsa/2DtU/4GikKydyc285YjzwO9RARZY6aiBX5zR9honJ3gZijJRsOpPIiNehMjDEsKmWKyeY/d2Py2FXQksYAQAAAAAAAACosguZ5eDz3NOF7vERCfhvTIro73xPw9e4N/sXKz/fXdulVAb0RjLyzwi8pQ/feEMAp9pNlcbUjOhOrLERKl16Hu5XCPwK8sj6mNpDO91feQTffNZ5q3agTrZTApBywq4zQKm73Yn2W7pPRtUqzMfw8jKwNvEF2QTjO/P5D1TZ7gEAAAAAAAAAhENH+GxvlSd+8SjijMvQrOsWLh3GuZ4pdJTAFCdmcdzCOs/tK237XdnUNCOKWaS6E3APAEfia2lZJMY9RhRHAp7e8XNuV4jHdsfTz54gvmoBmGk9gOLFl6lCLoDluOpLfIqx2r8xKHy9smKFy1aeqLRwyPoGmkptLg6v5WMjeyUBAAAAAAAAAA==","ExpectedRoot":[217,100,78,11,219,83,139,155,146,104,109,236,120,19,192,180,134,192,224,200,8,45,225,63,72,179,139,109,89,146,60,147]}}
76 changes: 76 additions & 0 deletions types/spectest/run_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,19 @@
package spectest

import (
"encoding/json"
"fmt"
"github.com/bloxapp/ssv-spec/types/spectest/tests/beacon"
"github.com/bloxapp/ssv-spec/types/spectest/tests/consensusdata"
"github.com/bloxapp/ssv-spec/types/spectest/tests/encryption"
"github.com/bloxapp/ssv-spec/types/spectest/tests/partialsigmessage"
"github.com/bloxapp/ssv-spec/types/spectest/tests/share"
"github.com/bloxapp/ssv-spec/types/spectest/tests/ssvmsg"
"github.com/stretchr/testify/require"
"os"
"path/filepath"
"reflect"
"strings"
"testing"
)

Expand All @@ -11,3 +24,66 @@ func TestAll(t *testing.T) {
})
}
}

func TestJson(t *testing.T) {
basedir, _ := os.Getwd()
path := filepath.Join(basedir, "generate")
fileName := "tests.json"
untypedTests := map[string]interface{}{}
byteValue, err := os.ReadFile(path + "/" + fileName)
if err != nil {
panic(err.Error())
}

if err := json.Unmarshal(byteValue, &untypedTests); err != nil {
panic(err.Error())
}

fmt.Printf("running %d tests\n", len(untypedTests))
for name, test := range untypedTests {
testName := test.(map[string]interface{})["Name"].(string)
t.Run(testName, func(t *testing.T) {
testType := strings.Split(name, "_")[0]
switch testType {
case reflect.TypeOf(&consensusdata.EncodingTest{}).String():
byts, err := json.Marshal(test)
require.NoError(t, err)
typedTest := &consensusdata.EncodingTest{}
require.NoError(t, json.Unmarshal(byts, &typedTest))
typedTest.Run(t)
case reflect.TypeOf(&partialsigmessage.EncodingTest{}).String():
byts, err := json.Marshal(test)
require.NoError(t, err)
typedTest := &partialsigmessage.EncodingTest{}
require.NoError(t, json.Unmarshal(byts, &typedTest))
typedTest.Run(t)
case reflect.TypeOf(&share.EncodingTest{}).String():
byts, err := json.Marshal(test)
require.NoError(t, err)
typedTest := &share.EncodingTest{}
require.NoError(t, json.Unmarshal(byts, &typedTest))
typedTest.Run(t)
case reflect.TypeOf(&ssvmsg.EncodingTest{}).String():
byts, err := json.Marshal(test)
require.NoError(t, err)
typedTest := &ssvmsg.EncodingTest{}
require.NoError(t, json.Unmarshal(byts, &typedTest))
typedTest.Run(t)
case reflect.TypeOf(&encryption.EncryptionSpecTest{}).String():
byts, err := json.Marshal(test)
require.NoError(t, err)
typedTest := &encryption.EncryptionSpecTest{}
require.NoError(t, json.Unmarshal(byts, &typedTest))
typedTest.Run(t)
case reflect.TypeOf(&beacon.DepositDataSpecTest{}).String():
byts, err := json.Marshal(test)
require.NoError(t, err)
typedTest := &beacon.DepositDataSpecTest{}
require.NoError(t, json.Unmarshal(byts, &typedTest))
typedTest.Run(t)
default:
t.Fatalf("unknown test")
}
})
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package consensusdata

// AggregatorValidation tests a valid consensus data with AggregateAndProof
func AggregatorValidation() *ValidationSpecTest {
func AggregatorValidation() *SpecTest {
panic("implement")
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package consensusdata

// AttestationValidation tests a valid consensus data with AttestationData
func AttestationValidation() *ValidationSpecTest {
func AttestationValidation() *SpecTest {
panic("implement")
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package consensusdata

// BellatrixBlindedBlockValidation tests a valid consensus data with bellatrix blinded block
func BellatrixBlindedBlockValidation() *ValidationSpecTest {
func BellatrixBlindedBlockValidation() *SpecTest {
panic("implement")
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package consensusdata

// BellatrixBlockValidation tests a valid consensus data with bellatrix block
func BellatrixBlockValidation() *ValidationSpecTest {
func BellatrixBlockValidation() *SpecTest {
panic("implement")
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package consensusdata

// CapellaBlindedBlockValidation tests a valid consensus data with capella blinded block
func CapellaBlindedBlockValidation() *ValidationSpecTest {
func CapellaBlindedBlockValidation() *SpecTest {
panic("implement")
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package consensusdata

// CapellaBlockValidation tests a valid consensus data with capella block
func CapellaBlockValidation() *ValidationSpecTest {
func CapellaBlockValidation() *SpecTest {
panic("implement")
}
6 changes: 0 additions & 6 deletions types/spectest/tests/consensusdata/consensus_data_encoding.go

This file was deleted.

6 changes: 0 additions & 6 deletions types/spectest/tests/consensusdata/contributions_encoding.go

This file was deleted.

25 changes: 25 additions & 0 deletions types/spectest/tests/consensusdata/encoding.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package consensusdata

import (
"github.com/bloxapp/ssv-spec/types/testingutils"
)

// Encoding tests encoding of a ssv message
func Encoding() *EncodingTest {
msg := testingutils.TestSyncCommitteeContributionConsensusData

byts, err := msg.Encode()
if err != nil {
panic(err.Error())
}
root, err := msg.HashTreeRoot()
if err != nil {
panic(err.Error())
}

return &EncodingTest{
Name: "ConsensusData encoding",
Data: byts,
ExpectedRoot: root,
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package consensusdata

// InvalidAggregatorValidation tests an invalid consensus data with AggregateAndProof
func InvalidAggregatorValidation() *ValidationSpecTest {
func InvalidAggregatorValidation() *SpecTest {
panic("implement")
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package consensusdata

// InvalidAttestationValidation tests an invalid consensus data with AttestationData
func InvalidAttestationValidation() *ValidationSpecTest {
func InvalidAttestationValidation() *SpecTest {
panic("implement")
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package consensusdata

// InvalidBellatrixBlindedBlockValidation tests an invalid consensus data with bellatrix blinded block
func InvalidBellatrixBlindedBlockValidation() *ValidationSpecTest {
func InvalidBellatrixBlindedBlockValidation() *SpecTest {
panic("implement")
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package consensusdata

// InvalidBellatrixBlockValidation tests an invalid consensus data with bellatrix block
func InvalidBellatrixBlockValidation() *ValidationSpecTest {
func InvalidBellatrixBlockValidation() *SpecTest {
panic("implement")
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package consensusdata

// InvalidCapellaBlindedBlockValidation tests an invalid consensus data with capella blinded block
func InvalidCapellaBlindedBlockValidation() *ValidationSpecTest {
func InvalidCapellaBlindedBlockValidation() *SpecTest {
panic("implement")
}
Loading