diff --git a/server/embed/auth_test.go b/server/embed/auth_test.go index 83a3ccfda1f9..14b4a83a8a0b 100644 --- a/server/embed/auth_test.go +++ b/server/embed/auth_test.go @@ -17,12 +17,19 @@ package embed import ( "testing" + "go.etcd.io/etcd/server/v3/embed/testutil" "go.etcd.io/etcd/server/v3/etcdserver/api/v3client" ) func TestEnableAuth(t *testing.T) { tdir := t.TempDir() cfg := NewConfig() + + testURLConfig := testutil.NewConfigTestURLs() + cfg.ListenClientUrls, cfg.AdvertiseClientUrls = testURLConfig.ClientURLs, testURLConfig.ClientURLs + cfg.ListenPeerUrls, cfg.AdvertisePeerUrls = testURLConfig.PeerURLs, testURLConfig.PeerURLs + cfg.InitialCluster = testURLConfig.InitialCluster + cfg.Dir = tdir e, err := StartEtcd(cfg) if err != nil { diff --git a/server/embed/serve_test.go b/server/embed/serve_test.go index 487a82c915cd..f69dafaf8bf4 100644 --- a/server/embed/serve_test.go +++ b/server/embed/serve_test.go @@ -15,14 +15,12 @@ package embed import ( - "fmt" - "net/url" - "os" "testing" "github.com/stretchr/testify/require" "go.etcd.io/etcd/server/v3/auth" + "go.etcd.io/etcd/server/v3/embed/testutil" ) // TestStartEtcdWrongToken ensures that StartEtcd with wrong configs returns with error. @@ -31,29 +29,14 @@ func TestStartEtcdWrongToken(t *testing.T) { cfg := NewConfig() - // Similar to function in integration/embed/embed_test.go for setting up Config. - urls := newEmbedURLs(2) - curls := []url.URL{urls[0]} - purls := []url.URL{urls[1]} - cfg.ListenClientUrls, cfg.AdvertiseClientUrls = curls, curls - cfg.ListenPeerUrls, cfg.AdvertisePeerUrls = purls, purls - cfg.InitialCluster = "" - for i := range purls { - cfg.InitialCluster += ",default=" + purls[i].String() - } - cfg.InitialCluster = cfg.InitialCluster[1:] + testURLConfig := testutil.NewConfigTestURLs() + cfg.ListenClientUrls, cfg.AdvertiseClientUrls = testURLConfig.ClientURLs, testURLConfig.ClientURLs + cfg.ListenPeerUrls, cfg.AdvertisePeerUrls = testURLConfig.PeerURLs, testURLConfig.PeerURLs + cfg.InitialCluster = testURLConfig.InitialCluster + cfg.Dir = tdir cfg.AuthToken = "wrong-token" _, err := StartEtcd(cfg) require.ErrorIsf(t, err, auth.ErrInvalidAuthOpts, "expected %v, got %v", auth.ErrInvalidAuthOpts, err) } - -func newEmbedURLs(n int) (urls []url.URL) { - scheme := "unix" - for i := 0; i < n; i++ { - u, _ := url.Parse(fmt.Sprintf("%s://localhost:%d%06d", scheme, os.Getpid(), i)) - urls = append(urls, *u) - } - return urls -} diff --git a/server/embed/testutil/url.go b/server/embed/testutil/url.go new file mode 100644 index 000000000000..689896a83081 --- /dev/null +++ b/server/embed/testutil/url.go @@ -0,0 +1,51 @@ +// Copyright 2026 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package testutil + +import ( + "fmt" + "net/url" + "os" +) + +type ConfigTestURLs struct { + PeerURLs []url.URL + ClientURLs []url.URL + InitialCluster string +} + +// Similar to function in integration/embed/embed_test.go for setting up Config. +func NewConfigTestURLs() *ConfigTestURLs { + urls := newEmbedURLs(2) + cfg := &ConfigTestURLs{ + ClientURLs: []url.URL{urls[0]}, + PeerURLs: []url.URL{urls[1]}, + InitialCluster: "", + } + for i := range cfg.PeerURLs { + cfg.InitialCluster += ",default=" + cfg.PeerURLs[i].String() + } + cfg.InitialCluster = cfg.InitialCluster[1:] + return cfg +} + +func newEmbedURLs(n int) (urls []url.URL) { + scheme := "unix" + for i := 0; i < n; i++ { + u, _ := url.Parse(fmt.Sprintf("%s://localhost:%d%06d", scheme, os.Getpid(), i)) + urls = append(urls, *u) + } + return urls +}