| package signing |
| |
| import ( |
| "fmt" |
| "io/ioutil" |
| "os" |
| "path/filepath" |
| "reflect" |
| "runtime" |
| "testing" |
| |
| "cos.googlesource.com/cos/tools.git/src/pkg/utils" |
| ) |
| |
| func TestDownloadDriverSignatures(t *testing.T) { |
| tmpDir, err := ioutil.TempDir("", "testing") |
| if err != nil { |
| t.Fatalf("Failed to create temp dir: %v", err) |
| } |
| defer os.RemoveAll(tmpDir) |
| origGpuDriverSigningDir := gpuDriverSigningDir |
| gpuDriverSigningDir = tmpDir |
| defer func(origGpuDriverSigningDir string) { gpuDriverSigningDir = origGpuDriverSigningDir }(origGpuDriverSigningDir) |
| |
| downloader := fakeDownloader{} |
| if err := DownloadDriverSignatures(&downloader, "418.87.01"); err != nil { |
| t.Fatalf("Failed to run DownloadDriverSignatures: %v", err) |
| } |
| |
| // Verify downloaded signature |
| for _, tc := range []struct { |
| fn func() string |
| expectedContent string |
| }{ |
| { |
| GetPublicKeyPem, |
| "pubkey.pem", |
| }, |
| { |
| GetPublicKeyDer, |
| "pubkey.der", |
| }, |
| { |
| GetPrivateKey, |
| "", |
| }, |
| } { |
| f := tc.fn() |
| content, err := ioutil.ReadFile(f) |
| if err != nil { |
| t.Fatalf("Failed to read file %s: %v", f, err) |
| } |
| if string(content) != tc.expectedContent { |
| t.Errorf("Unexpected content of %s: want: %s, got: %s", funcName(tc.fn), tc.expectedContent, string(content)) |
| } |
| } |
| } |
| |
| func funcName(fn interface{}) string { |
| return runtime.FuncForPC(reflect.ValueOf(fn).Pointer()).Name() |
| } |
| |
| type fakeDownloader struct { |
| } |
| |
| func (*fakeDownloader) ListExtensions() ([]string, error) { return nil, nil } |
| func (*fakeDownloader) ListExtensionArtifacts(extension string) ([]string, error) { return nil, nil } |
| func (*fakeDownloader) GetExtensionArtifact(extension, artifact string) ([]byte, error) { |
| return nil, nil |
| } |
| |
| func (f *fakeDownloader) DownloadExtensionArtifact(destDir, extension, artifact string) error { |
| var archive = map[string][]byte{ |
| gpuDriverPubKeyPem: []byte("pubkey.pem"), |
| gpuDriverPubKeyDer: []byte("pubkey.der"), |
| } |
| archivePath := filepath.Join(destDir, artifact) |
| if err := os.MkdirAll(filepath.Dir(archivePath), 0755); err != nil { |
| return fmt.Errorf("failed to create dir %s", filepath.Dir(archivePath)) |
| } |
| if err := utils.CreateTarFile(archivePath, archive); err != nil { |
| return fmt.Errorf("Failed to create tarfile: %v", err) |
| } |
| return nil |
| } |