// Copyright (c) 2015-2021 MinIO, Inc. // // This file is part of MinIO Object Storage stack // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . package certs import ( "io/ioutil" "os" "path/filepath" "testing" ) func TestGetRootCAs(t *testing.T) { emptydir, err := ioutil.TempDir("", "test-get-root-cas") if err != nil { t.Fatalf("Unable create temp directory. %v", emptydir) } defer os.RemoveAll(emptydir) dir1, err := ioutil.TempDir("", "test-get-root-cas") if err != nil { t.Fatalf("Unable create temp directory. %v", dir1) } defer os.RemoveAll(dir1) if err = os.Mkdir(filepath.Join(dir1, "empty-dir"), 0755); err != nil { t.Fatalf("Unable create empty dir. %v", err) } dir2, err := ioutil.TempDir("", "test-get-root-cas") if err != nil { t.Fatalf("Unable create temp directory. %v", dir2) } defer os.RemoveAll(dir2) if err = ioutil.WriteFile(filepath.Join(dir2, "empty-file"), []byte{}, 0644); err != nil { t.Fatalf("Unable create test file. %v", err) } testCases := []struct { certCAsDir string expectedErr error }{ // ignores non-existent directories. {"nonexistent-dir", nil}, // Ignores directories. {dir1, nil}, // Ignore empty directory. {emptydir, nil}, // Loads the cert properly. {dir2, nil}, } for _, testCase := range testCases { _, err := GetRootCAs(testCase.certCAsDir) if testCase.expectedErr == nil { if err != nil { t.Fatalf("error: expected = , got = %v", err) } } else if err == nil { t.Fatalf("error: expected = %v, got = ", testCase.expectedErr) } else if testCase.expectedErr.Error() != err.Error() { t.Fatalf("error: expected = %v, got = %v", testCase.expectedErr, err) } } }