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  }