You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

api_test.go 1.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // Copyright 2019 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package context
  4. import (
  5. "net/url"
  6. "strconv"
  7. "testing"
  8. "code.gitea.io/gitea/modules/setting"
  9. "github.com/stretchr/testify/assert"
  10. )
  11. func TestGenAPILinks(t *testing.T) {
  12. setting.AppURL = "http://localhost:3000/"
  13. kases := map[string][]string{
  14. "api/v1/repos/jerrykan/example-repo/issues?state=all": {
  15. `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=2&state=all>; rel="next"`,
  16. `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=5&state=all>; rel="last"`,
  17. },
  18. "api/v1/repos/jerrykan/example-repo/issues?state=all&page=1": {
  19. `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=2&state=all>; rel="next"`,
  20. `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=5&state=all>; rel="last"`,
  21. },
  22. "api/v1/repos/jerrykan/example-repo/issues?state=all&page=2": {
  23. `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=3&state=all>; rel="next"`,
  24. `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=5&state=all>; rel="last"`,
  25. `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=1&state=all>; rel="first"`,
  26. `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=1&state=all>; rel="prev"`,
  27. },
  28. "api/v1/repos/jerrykan/example-repo/issues?state=all&page=5": {
  29. `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=1&state=all>; rel="first"`,
  30. `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=4&state=all>; rel="prev"`,
  31. },
  32. }
  33. for req, response := range kases {
  34. u, err := url.Parse(setting.AppURL + req)
  35. assert.NoError(t, err)
  36. p := u.Query().Get("page")
  37. curPage, _ := strconv.Atoi(p)
  38. links := genAPILinks(u, 100, 20, curPage)
  39. assert.EqualValues(t, links, response)
  40. }
  41. }