go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/yum/yum_test.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package yum 5 6 import ( 7 "fmt" 8 "strings" 9 "testing" 10 11 "github.com/stretchr/testify/assert" 12 "github.com/stretchr/testify/require" 13 "go.mondoo.com/cnquery/providers/os/connection/mock" 14 ) 15 16 func TestParseYumRepoEntry(t *testing.T) { 17 data := ` 18 Repo-id : base/7/x86_64 19 Repo-name : CentOS-7 - Base 20 Repo-status : enabled 21 Repo-revision: 1587512243 22 Repo-updated : Tue Apr 21 23:37:50 2020 23 Repo-pkgs : 10070 24 Repo-size : 8.9 G 25 Repo-mirrors : http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=container 26 Repo-baseurl : http://mirror.imt-systems.com/centos/7.8.2003/os/x86_64/ (9 more) 27 Repo-expire : 21600 second(s) (last: Tue Jun 16 07:13:59 2020) 28 Filter : read-only:present 29 Repo-filename: /etc/yum.repos.d/CentOS-Base.repo 30 31 Repo-id : c7-media 32 Repo-name : CentOS-7 - Media 33 Repo-status : disabled 34 Repo-baseurl : file:///media/CentOS/, file:///media/cdrom/, file:///media/cdrecorder/ 35 Repo-expire : 21600 second(s) (last: Unknown) 36 Filter : read-only:present 37 Repo-filename: /etc/yum.repos.d/CentOS-Media.repo 38 ` 39 repos, err := ParseRepos(strings.NewReader(data)) 40 require.NoError(t, err) 41 assert.Equal(t, 2, len(repos)) 42 43 repo := repos[0] 44 assert.Equal(t, "base/7/x86_64", repo.Id) 45 assert.Equal(t, "CentOS-7 - Base", repo.Name) 46 assert.Equal(t, "enabled", repo.Status) 47 assert.Equal(t, "1587512243", repo.Revision) 48 assert.Equal(t, "Tue Apr 21 23:37:50 2020", repo.Updated) 49 assert.Equal(t, "10070", repo.Pkgs) 50 assert.Equal(t, "8.9 G", repo.Size) 51 assert.Equal(t, "http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=container", repo.Mirrors) 52 assert.Equal(t, []string{"http://mirror.imt-systems.com/centos/7.8.2003/os/x86_64/"}, repo.Baseurl) 53 assert.Equal(t, "21600 second(s) (last: Tue Jun 16 07:13:59 2020)", repo.Expire) 54 assert.Equal(t, "read-only:present", repo.Filter) 55 assert.Equal(t, "/etc/yum.repos.d/CentOS-Base.repo", repo.Filename) 56 57 repo = repos[1] 58 assert.Equal(t, "c7-media", repo.Id) 59 assert.Equal(t, "CentOS-7 - Media", repo.Name) 60 assert.Equal(t, "disabled", repo.Status) 61 assert.Equal(t, []string{"file:///media/CentOS/", "file:///media/cdrom/", "file:///media/cdrecorder/"}, repo.Baseurl) 62 } 63 64 func TestYumRepoRhel7(t *testing.T) { 65 mock, err := mock.New("./testdata/yum_rhel7.toml", nil) 66 require.NoError(t, err) 67 68 cmd, err := mock.RunCommand(RhelYumRepoListCommand) 69 require.NoError(t, err) 70 repos, err := ParseRepos(cmd.Stdout) 71 require.NoError(t, err) 72 assert.Equal(t, 15, len(repos)) 73 74 cmd, err = mock.RunCommand(Rhel6VarsCommand) 75 require.NoError(t, err) 76 vars, err := ParseVariables(cmd.Stdout) 77 require.NoError(t, err) 78 assert.Equal(t, "7Server", vars["releasever"]) 79 } 80 81 func TestYumRepoRhel8(t *testing.T) { 82 mock, err := mock.New("./testdata/yum_rhel8.toml", nil) 83 require.NoError(t, err) 84 85 cmd, err := mock.RunCommand(RhelYumRepoListCommand) 86 require.NoError(t, err) 87 repos, err := ParseRepos(cmd.Stdout) 88 require.NoError(t, err) 89 assert.Equal(t, 17, len(repos)) 90 91 cmd, err = mock.RunCommand(fmt.Sprintf(DnfVarsCommand, PythonRhel)) 92 require.NoError(t, err) 93 vars, err := ParseVariables(cmd.Stdout) 94 require.NoError(t, err) 95 assert.Equal(t, "8", vars["releasever"]) 96 }