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 }