github.com/linuxboot/fiano@v1.2.0/pkg/visitors/validate_test.go (about)

     1  // Copyright 2018 the LinuxBoot Authors. All rights reserved
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package visitors
     6  
     7  import (
     8  	"testing"
     9  
    10  	"github.com/linuxboot/fiano/pkg/uefi"
    11  )
    12  
    13  func TestValidateFV(t *testing.T) {
    14  	var tests = []struct {
    15  		name string
    16  		buf  []byte
    17  		msgs []string
    18  	}{
    19  		{"sampleFV", sampleFV, nil},
    20  	}
    21  	for _, test := range tests {
    22  		t.Run(test.name, func(t *testing.T) {
    23  			fv, err := uefi.NewFirmwareVolume(test.buf, 0, false)
    24  			if err != nil {
    25  				t.Fatalf("Error was not expected, got %v", err.Error())
    26  			}
    27  			v := &Validate{}
    28  			if err := v.Run(fv); err != nil {
    29  				t.Fatal(err)
    30  			}
    31  			if len(v.Errors) != len(test.msgs) {
    32  				t.Errorf("Errors mismatched, wanted \n%v\n, got \n%v\n", test.msgs, v.Errors)
    33  			} else {
    34  				for i := range v.Errors {
    35  					if v.Errors[i].Error() != test.msgs[i] {
    36  						t.Errorf("Error mismatched, wanted \n%v\n, got \n%v\n", test.msgs[i], v.Errors[i].Error())
    37  					}
    38  				}
    39  			}
    40  		})
    41  	}
    42  }
    43  
    44  func TestValidateFile(t *testing.T) {
    45  	var tests = []struct {
    46  		name string
    47  		buf  []byte
    48  		msgs []string
    49  	}{
    50  		{"emptyPadFile", emptyPadFile, nil},
    51  		{"badFreeFormFile", badFreeFormFile, []string{"file FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF header checksum failure! sum was 54"}},
    52  		{"goodFreeFormFile", goodFreeFormFile, nil},
    53  	}
    54  	for _, test := range tests {
    55  		t.Run(test.name, func(t *testing.T) {
    56  			f, err := uefi.NewFile(test.buf)
    57  			if err != nil {
    58  				t.Fatalf("Error was not expected, got %v", err.Error())
    59  			}
    60  			v := &Validate{}
    61  			if err := v.Run(f); err != nil {
    62  				t.Fatal(err)
    63  			}
    64  			if len(v.Errors) != len(test.msgs) {
    65  				t.Errorf("Errors mismatched, wanted \n%v\n, got \n%v\n", test.msgs, v.Errors)
    66  			} else {
    67  				for i := range v.Errors {
    68  					if v.Errors[i].Error() != test.msgs[i] {
    69  						t.Errorf("Error mismatched, wanted \n%v\n, got \n%v\n", test.msgs[i], v.Errors[i].Error())
    70  					}
    71  				}
    72  			}
    73  		})
    74  	}
    75  }