package codesign_test import ( "context" "reflect" "testing" "lmika.dev/actions/wails-release/internal/codesign" "lmika.dev/actions/wails-release/internal/runner" ) func TestCreateKeychain_BuildsCorrectArgs(t *testing.T) { f := &runner.Fake{} f.On("security", nil).Return(nil, nil) kc, err := codesign.CreateKeychain(context.Background(), f, "/tmp/foo.keychain", "pw") if err != nil { t.Fatalf("unexpected: %v", err) } if kc.Path != "/tmp/foo.keychain" { t.Fatalf("kc.Path got %q want /tmp/foo.keychain", kc.Path) } want := [][]string{ {"create-keychain", "-p", "pw", "/tmp/foo.keychain"}, {"set-keychain-settings", "-lut", "21600", "/tmp/foo.keychain"}, {"unlock-keychain", "-p", "pw", "/tmp/foo.keychain"}, } for i, w := range want { if !reflect.DeepEqual(f.Calls[i].Args, w) { t.Fatalf("call %d: got %v want %v", i, f.Calls[i].Args, w) } } } func TestImportP12_BuildsCorrectArgs(t *testing.T) { f := &runner.Fake{} f.On("security", nil).Return(nil, nil) err := codesign.ImportP12(context.Background(), f, codesign.Keychain{Path: "/tmp/k", Password: "pw"}, "/tmp/c.p12", "certpw") if err != nil { t.Fatalf("unexpected: %v", err) } want := []string{ "import", "/tmp/c.p12", "-k", "/tmp/k", "-P", "certpw", "-T", "/usr/bin/codesign", } if !reflect.DeepEqual(f.Calls[0].Args, want) { t.Fatalf("args got %v want %v", f.Calls[0].Args, want) } // Partition list set so codesign can use the imported key non-interactively. wantPartition := []string{ "set-key-partition-list", "-S", "apple-tool:,apple:,codesign:", "-s", "-k", "pw", "/tmp/k", } if !reflect.DeepEqual(f.Calls[1].Args, wantPartition) { t.Fatalf("partition args got %v want %v", f.Calls[1].Args, wantPartition) } } func TestDeleteKeychain_BuildsCorrectArgs(t *testing.T) { f := &runner.Fake{} f.On("security", nil).Return(nil, nil) err := codesign.DeleteKeychain(context.Background(), f, codesign.Keychain{Path: "/tmp/k"}) if err != nil { t.Fatalf("unexpected: %v", err) } want := []string{"delete-keychain", "/tmp/k"} if !reflect.DeepEqual(f.Calls[0].Args, want) { t.Fatalf("args got %v want %v", f.Calls[0].Args, want) } }