completion_test.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package completion
  2. import (
  3. "bytes"
  4. "errors"
  5. "net/http"
  6. "testing"
  7. "github.com/stretchr/testify/assert"
  8. "gopkg.in/h2non/gock.v1"
  9. )
  10. const samplePackageResp = `
  11. # AUR package list, generated on Fri, 24 Jul 2020 22:05:22 GMT
  12. cytadela
  13. bitefusion
  14. globs-svn
  15. ri-li
  16. globs-benchmarks-svn
  17. dunelegacy
  18. lumina
  19. eternallands-sound
  20. `
  21. const expectPackageCompletion = `cytadela AUR
  22. bitefusion AUR
  23. globs-svn AUR
  24. ri-li AUR
  25. globs-benchmarks-svn AUR
  26. dunelegacy AUR
  27. lumina AUR
  28. eternallands-sound AUR
  29. `
  30. func Test_createAURList(t *testing.T) {
  31. defer gock.Off()
  32. gock.New("https://aur.archlinux.org").
  33. Get("/packages.gz").
  34. Reply(200).
  35. BodyString(samplePackageResp)
  36. out := &bytes.Buffer{}
  37. err := createAURList(&http.Client{}, "https://aur.archlinux.org", out)
  38. assert.NoError(t, err)
  39. gotOut := out.String()
  40. assert.Equal(t, expectPackageCompletion, gotOut)
  41. }
  42. func Test_createAURListHTTPError(t *testing.T) {
  43. defer gock.Off()
  44. gock.New("https://aur.archlinux.org").
  45. Get("/packages.gz").
  46. ReplyError(errors.New("Not available"))
  47. out := &bytes.Buffer{}
  48. err := createAURList(&http.Client{}, "https://aur.archlinux.org", out)
  49. assert.EqualError(t, err, "Get \"https://aur.archlinux.org/packages.gz\": Not available")
  50. }
  51. func Test_createAURListStatusError(t *testing.T) {
  52. defer gock.Off()
  53. gock.New("https://aur.archlinux.org").
  54. Get("/packages.gz").
  55. Reply(503).
  56. BodyString(samplePackageResp)
  57. out := &bytes.Buffer{}
  58. err := createAURList(&http.Client{}, "https://aur.archlinux.org", out)
  59. assert.EqualError(t, err, "invalid status code: 503")
  60. }