completion_test.go 1.6 KB

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