github.com/Racer159/jackal@v0.32.7-0.20240401174413-0bd2339e4f2e/src/pkg/utils/network_test.go (about)

     1  // SPDX-License-Identifier: Apache-2.0
     2  // SPDX-FileCopyrightText: 2021-Present The Jackal Authors
     3  
     4  // Package utils provides generic utility functions.
     5  package utils
     6  
     7  import (
     8  	"os"
     9  	"path/filepath"
    10  	"testing"
    11  
    12  	"github.com/Racer159/jackal/src/pkg/message"
    13  	"github.com/defenseunicorns/pkg/helpers"
    14  	"github.com/stretchr/testify/require"
    15  	"github.com/stretchr/testify/suite"
    16  )
    17  
    18  type TestNetworkSuite struct {
    19  	suite.Suite
    20  	*require.Assertions
    21  }
    22  
    23  func (suite *TestNetworkSuite) SetupSuite() {
    24  	suite.Assertions = require.New(suite.T())
    25  }
    26  
    27  func (suite *TestNetworkSuite) Test_0_parseChecksum() {
    28  	// jackal prepare sha256sum .adr-dir
    29  	adr := "https://raw.githubusercontent.com/Racer159/jackal/main/.adr-dir"
    30  	sum := "930f4d5a191812e57b39bd60fca789ace07ec5acd36d63e1047604c8bdf998a3"
    31  	url := adr + "@" + sum
    32  	uri, checksum, err := parseChecksum(url)
    33  	suite.NoError(err)
    34  	suite.Equal(adr, uri)
    35  	suite.Equal(sum, checksum)
    36  
    37  	url = adr + "?foo=bar@" + sum
    38  	uri, checksum, err = parseChecksum(url)
    39  	suite.NoError(err)
    40  	suite.Equal(adr+"?foo=bar", uri)
    41  	suite.Equal(sum, checksum)
    42  
    43  	url = "https://user:pass@hello.world?foo=bar"
    44  	uri, checksum, err = parseChecksum(url)
    45  	suite.NoError(err)
    46  	suite.Equal("https://user:pass@hello.world?foo=bar", uri)
    47  	suite.Equal("", checksum)
    48  
    49  	url = "https://user:pass@hello.world?foo=bar@" + sum
    50  	uri, checksum, err = parseChecksum(url)
    51  	suite.NoError(err)
    52  	suite.Equal("https://user:pass@hello.world?foo=bar", uri)
    53  	suite.Equal(sum, checksum)
    54  }
    55  
    56  func (suite *TestNetworkSuite) Test_1_DownloadToFile() {
    57  	readme := "https://raw.githubusercontent.com/Racer159/jackal/main/README.md"
    58  	tmp := suite.T().TempDir()
    59  	path := filepath.Join(tmp, "README.md")
    60  	suite.NoError(DownloadToFile(readme, path, ""))
    61  	suite.FileExists(path)
    62  
    63  	path = filepath.Join(tmp, "README.md.bad")
    64  	bad := "https://raw.githubusercontent.com/Racer159/jackal/main/README.md.bad"
    65  	suite.Error(DownloadToFile(bad, path, ""))
    66  
    67  	// jackal prepare sha256sum .adr-dir
    68  	path = filepath.Join(tmp, ".adr-dir")
    69  	sum := "930f4d5a191812e57b39bd60fca789ace07ec5acd36d63e1047604c8bdf998a3"
    70  	adr := "https://raw.githubusercontent.com/Racer159/jackal/main/.adr-dir"
    71  	url := adr + "@" + sum
    72  	err := DownloadToFile(url, path, "")
    73  	suite.NoError(err)
    74  	suite.FileExists(path)
    75  	content, err := os.ReadFile(path)
    76  	suite.NoError(err)
    77  	suite.Contains(string(content), "adr")
    78  
    79  	check, err := helpers.GetSHA256OfFile(path)
    80  	suite.NoError(err)
    81  	suite.Equal(sum, check)
    82  
    83  	url = adr + "@" + "badsha"
    84  	path = filepath.Join(tmp, ".adr-dir.bad")
    85  	suite.Error(DownloadToFile(url, path, ""))
    86  
    87  	url = adr + "?foo=bar@" + sum
    88  	path = filepath.Join(tmp, ".adr-dir.good")
    89  	suite.NoError(DownloadToFile(url, path, ""))
    90  	suite.FileExists(path)
    91  }
    92  
    93  func TestNetwork(t *testing.T) {
    94  	message.SetLogLevel(message.DebugLevel)
    95  	suite.Run(t, new(TestNetworkSuite))
    96  }