// Copyright 2026 The Gitea Authors. All rights reserved. // SPDX-License-Identifier: MIT package git import ( "crypto/ed25519" "crypto/rand" "encoding/pem" "net/url" "os" "path/filepath" "testing" "github.com/stretchr/testify/require" "golang.org/x/crypto/ssh" ) func TestGetAuthForURLSupportsEd25519PrivateKey(t *testing.T) { _, privateKey, err := ed25519.GenerateKey(rand.Reader) require.NoError(t, err) block, err := ssh.MarshalPrivateKey(privateKey, "") require.NoError(t, err) keyFile := filepath.Join(t.TempDir(), "id_ed25519") require.NoError(t, os.WriteFile(keyFile, pem.EncodeToMemory(block), 0o600)) remoteURL, err := url.Parse("ssh://git@example.com/owner/repo") require.NoError(t, err) auth, err := GetAuthForURL(remoteURL, "", keyFile, nil) require.NoError(t, err) require.Equal(t, "ssh", auth.Scheme) require.Equal(t, keyFile, auth.KeyFile) }