Skip to content

Commit fd8eebe

Browse files
mvo5supakeen
authored andcommitted
bib: simplify extractTLSKeys()
The extractTLSKeys() takes a SimplefileReader so that its testable. The downside is that it makes it slightly harder to use the helper because of the extra parameter. But we don't really need this, we can make the testing entirely invisible for the API user via the common ```go var osReadFile = os.ReadFile ``` pattern. This commit is doing exactly this.
1 parent 93793db commit fd8eebe

File tree

4 files changed

+21
-17
lines changed

4 files changed

+21
-17
lines changed

bib/cmd/bootc-image-builder/export_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,11 @@ func MockOsGetuid(new func() int) (restore func()) {
2020
osGetuid = saved
2121
}
2222
}
23+
24+
func MockOsReadFile(new func(string) ([]byte, error)) (restore func()) {
25+
saved := osReadFile
26+
osReadFile = new
27+
return func() {
28+
osReadFile = saved
29+
}
30+
}

bib/cmd/bootc-image-builder/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,7 @@ func manifestFromCobra(cmd *cobra.Command, args []string, pbar progress.Progress
347347
return nil, nil, err
348348
}
349349

350-
mTLS, err := extractTLSKeys(SimpleFileReader{}, repos)
350+
mTLS, err := extractTLSKeys(repos)
351351
if err != nil {
352352
return nil, nil, err
353353
}

bib/cmd/bootc-image-builder/mtls.go

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,9 @@ type mTLSConfig struct {
1515
ca []byte
1616
}
1717

18-
type fileReader interface {
19-
ReadFile(string) ([]byte, error)
20-
}
21-
22-
type SimpleFileReader struct{}
23-
24-
func (SimpleFileReader) ReadFile(path string) ([]byte, error) {
25-
return os.ReadFile(path)
26-
}
18+
var osReadFile = os.ReadFile
2719

28-
func extractTLSKeys(reader fileReader, repoSets map[string][]rpmmd.RepoConfig) (*mTLSConfig, error) {
20+
func extractTLSKeys(repoSets map[string][]rpmmd.RepoConfig) (*mTLSConfig, error) {
2921
var keyPath, certPath, caPath string
3022
for _, set := range repoSets {
3123
for _, r := range set {
@@ -44,17 +36,17 @@ func extractTLSKeys(reader fileReader, repoSets map[string][]rpmmd.RepoConfig) (
4436
return nil, nil
4537
}
4638

47-
key, err := reader.ReadFile(keyPath)
39+
key, err := osReadFile(keyPath)
4840
if err != nil {
4941
return nil, fmt.Errorf("failed to read TLS client key from the container: %w", err)
5042
}
5143

52-
cert, err := reader.ReadFile(certPath)
44+
cert, err := osReadFile(certPath)
5345
if err != nil {
5446
return nil, fmt.Errorf("failed to read TLS client certificate from the container: %w", err)
5547
}
5648

57-
ca, err := reader.ReadFile(caPath)
49+
ca, err := osReadFile(caPath)
5850
if err != nil {
5951
return nil, fmt.Errorf("failed to read TLS CA certificate from the container: %w", err)
6052
}

bib/cmd/bootc-image-builder/mtls_test.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,10 @@ func TestExtractTLSKeysHappy(t *testing.T) {
3333
}
3434

3535
fakeReader := &fakeFileReader{}
36+
restore := MockOsReadFile(fakeReader.ReadFile)
37+
defer restore()
3638

37-
mTLS, err := extractTLSKeys(fakeReader, repos)
39+
mTLS, err := extractTLSKeys(repos)
3840
require.NoError(t, err)
3941
require.Equal(t, mTLS.ca, []byte("content of /ca"))
4042
require.Equal(t, mTLS.cert, []byte("content of /cert"))
@@ -43,7 +45,7 @@ func TestExtractTLSKeysHappy(t *testing.T) {
4345

4446
// also check that adding another repo with same keys still succeeds
4547
repos["toucan"] = repos["kingfisher"]
46-
_, err = extractTLSKeys(fakeReader, repos)
48+
_, err = extractTLSKeys(repos)
4749
require.NoError(t, err)
4850
require.Len(t, fakeReader.readPaths, 6)
4951
}
@@ -68,8 +70,10 @@ func TestExtractTLSKeysUnhappy(t *testing.T) {
6870
}
6971

7072
fakeReader := &fakeFileReader{}
73+
restore := MockOsReadFile(fakeReader.ReadFile)
74+
defer restore()
7175

72-
_, err := extractTLSKeys(fakeReader, repos)
76+
_, err := extractTLSKeys(repos)
7377
require.EqualError(t, err, "multiple TLS client keys found, this is currently unsupported")
7478
}
7579

0 commit comments

Comments
 (0)