diff options
author | Kyle D <kdumontnu@gmail.com> | 2022-09-02 15:18:23 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-02 15:18:23 -0400 |
commit | c8ded77680db7344c8dc1ccee76bce0b4e02e103 (patch) | |
tree | bc63678ef62dc71ce68b29eeaf019c45cdb12034 /integrations/api_releases_test.go | |
parent | 5710ff343c9f16119ddbff06044e5d61388baa22 (diff) | |
download | gitea-c8ded77680db7344c8dc1ccee76bce0b4e02e103.tar.gz gitea-c8ded77680db7344c8dc1ccee76bce0b4e02e103.zip |
Kd/ci playwright go test (#20123)
* Add initial playwright config
* Simplify Makefile
* Simplify Makefile
* Use correct config files
* Update playwright settings
* Fix package-lock file
* Don't use test logger for e2e tests
* fix frontend lint
* Allow passing TEST_LOGGER variable
* Init postgres database
* use standard gitea env variables
* Update playwright
* update drone
* Move empty env var to commands
* Cleanup
* Move integrations to subfolder
* tests integrations to tests integraton
* Run e2e tests with go test
* Fix linting
* install CI deps
* Add files to ESlint
* Fix drone typo
* Don't log to console in CI
* Use go test http server
* Add build step before tests
* Move shared init function to common package
* fix drone
* Clean up tests
* Fix linting
* Better mocking for page + version string
* Cleanup test generation
* Remove dependency on gitea binary
* Fix linting
* add initial support for running specific tests
* Add ACCEPT_VISUAL variable
* don't require git-lfs
* Add initial documentation
* Review feedback
* Add logged in session test
* Attempt fixing drone race
* Cleanup and bump version
* Bump deps
* Review feedback
* simplify installation
* Fix ci
* Update install docs
Diffstat (limited to 'integrations/api_releases_test.go')
-rw-r--r-- | integrations/api_releases_test.go | 232 |
1 files changed, 0 insertions, 232 deletions
diff --git a/integrations/api_releases_test.go b/integrations/api_releases_test.go deleted file mode 100644 index ef9390390d..0000000000 --- a/integrations/api_releases_test.go +++ /dev/null @@ -1,232 +0,0 @@ -// Copyright 2018 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package integrations - -import ( - "fmt" - "net/http" - "net/url" - "testing" - - repo_model "code.gitea.io/gitea/models/repo" - "code.gitea.io/gitea/models/unittest" - user_model "code.gitea.io/gitea/models/user" - "code.gitea.io/gitea/modules/git" - api "code.gitea.io/gitea/modules/structs" - - "github.com/stretchr/testify/assert" -) - -func TestAPIListReleases(t *testing.T) { - defer prepareTestEnv(t)() - - repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) - user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}) - token := getUserToken(t, user2.LowerName) - - link, _ := url.Parse(fmt.Sprintf("/api/v1/repos/%s/%s/releases", user2.Name, repo.Name)) - link.RawQuery = url.Values{"token": {token}}.Encode() - resp := MakeRequest(t, NewRequest(t, "GET", link.String()), http.StatusOK) - var apiReleases []*api.Release - DecodeJSON(t, resp, &apiReleases) - if assert.Len(t, apiReleases, 3) { - for _, release := range apiReleases { - switch release.ID { - case 1: - assert.False(t, release.IsDraft) - assert.False(t, release.IsPrerelease) - case 4: - assert.True(t, release.IsDraft) - assert.False(t, release.IsPrerelease) - case 5: - assert.False(t, release.IsDraft) - assert.True(t, release.IsPrerelease) - default: - assert.NoError(t, fmt.Errorf("unexpected release: %v", release)) - } - } - } - - // test filter - testFilterByLen := func(auth bool, query url.Values, expectedLength int, msgAndArgs ...string) { - if auth { - query.Set("token", token) - } - link.RawQuery = query.Encode() - resp = MakeRequest(t, NewRequest(t, "GET", link.String()), http.StatusOK) - DecodeJSON(t, resp, &apiReleases) - assert.Len(t, apiReleases, expectedLength, msgAndArgs) - } - - testFilterByLen(false, url.Values{"draft": {"true"}}, 0, "anon should not see drafts") - testFilterByLen(true, url.Values{"draft": {"true"}}, 1, "repo owner should see drafts") - testFilterByLen(true, url.Values{"draft": {"false"}}, 2, "exclude drafts") - testFilterByLen(true, url.Values{"draft": {"false"}, "pre-release": {"false"}}, 1, "exclude drafts and pre-releases") - testFilterByLen(true, url.Values{"pre-release": {"true"}}, 1, "only get pre-release") - testFilterByLen(true, url.Values{"draft": {"true"}, "pre-release": {"true"}}, 0, "there is no pre-release draft") -} - -func createNewReleaseUsingAPI(t *testing.T, session *TestSession, token string, owner *user_model.User, repo *repo_model.Repository, name, target, title, desc string) *api.Release { - urlStr := fmt.Sprintf("/api/v1/repos/%s/%s/releases?token=%s", - owner.Name, repo.Name, token) - req := NewRequestWithJSON(t, "POST", urlStr, &api.CreateReleaseOption{ - TagName: name, - Title: title, - Note: desc, - IsDraft: false, - IsPrerelease: false, - Target: target, - }) - resp := session.MakeRequest(t, req, http.StatusCreated) - - var newRelease api.Release - DecodeJSON(t, resp, &newRelease) - rel := &repo_model.Release{ - ID: newRelease.ID, - TagName: newRelease.TagName, - Title: newRelease.Title, - } - unittest.AssertExistsAndLoadBean(t, rel) - assert.EqualValues(t, newRelease.Note, rel.Note) - - return &newRelease -} - -func TestAPICreateAndUpdateRelease(t *testing.T) { - defer prepareTestEnv(t)() - - repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) - owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) - session := loginUser(t, owner.LowerName) - token := getTokenForLoggedInUser(t, session) - - gitRepo, err := git.OpenRepository(git.DefaultContext, repo.RepoPath()) - assert.NoError(t, err) - defer gitRepo.Close() - - err = gitRepo.CreateTag("v0.0.1", "master") - assert.NoError(t, err) - - target, err := gitRepo.GetTagCommitID("v0.0.1") - assert.NoError(t, err) - - newRelease := createNewReleaseUsingAPI(t, session, token, owner, repo, "v0.0.1", target, "v0.0.1", "test") - - urlStr := fmt.Sprintf("/api/v1/repos/%s/%s/releases/%d?token=%s", - owner.Name, repo.Name, newRelease.ID, token) - req := NewRequest(t, "GET", urlStr) - resp := session.MakeRequest(t, req, http.StatusOK) - - var release api.Release - DecodeJSON(t, resp, &release) - - assert.Equal(t, newRelease.TagName, release.TagName) - assert.Equal(t, newRelease.Title, release.Title) - assert.Equal(t, newRelease.Note, release.Note) - - req = NewRequestWithJSON(t, "PATCH", urlStr, &api.EditReleaseOption{ - TagName: release.TagName, - Title: release.Title, - Note: "updated", - IsDraft: &release.IsDraft, - IsPrerelease: &release.IsPrerelease, - Target: release.Target, - }) - resp = session.MakeRequest(t, req, http.StatusOK) - - DecodeJSON(t, resp, &newRelease) - rel := &repo_model.Release{ - ID: newRelease.ID, - TagName: newRelease.TagName, - Title: newRelease.Title, - } - unittest.AssertExistsAndLoadBean(t, rel) - assert.EqualValues(t, rel.Note, newRelease.Note) -} - -func TestAPICreateReleaseToDefaultBranch(t *testing.T) { - defer prepareTestEnv(t)() - - repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) - owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) - session := loginUser(t, owner.LowerName) - token := getTokenForLoggedInUser(t, session) - - createNewReleaseUsingAPI(t, session, token, owner, repo, "v0.0.1", "", "v0.0.1", "test") -} - -func TestAPICreateReleaseToDefaultBranchOnExistingTag(t *testing.T) { - defer prepareTestEnv(t)() - - repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) - owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) - session := loginUser(t, owner.LowerName) - token := getTokenForLoggedInUser(t, session) - - gitRepo, err := git.OpenRepository(git.DefaultContext, repo.RepoPath()) - assert.NoError(t, err) - defer gitRepo.Close() - - err = gitRepo.CreateTag("v0.0.1", "master") - assert.NoError(t, err) - - createNewReleaseUsingAPI(t, session, token, owner, repo, "v0.0.1", "", "v0.0.1", "test") -} - -func TestAPIGetReleaseByTag(t *testing.T) { - defer prepareTestEnv(t)() - - repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) - owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) - session := loginUser(t, owner.LowerName) - - tag := "v1.1" - - urlStr := fmt.Sprintf("/api/v1/repos/%s/%s/releases/tags/%s", - owner.Name, repo.Name, tag) - - req := NewRequestf(t, "GET", urlStr) - resp := session.MakeRequest(t, req, http.StatusOK) - - var release *api.Release - DecodeJSON(t, resp, &release) - - assert.Equal(t, "testing-release", release.Title) - - nonexistingtag := "nonexistingtag" - - urlStr = fmt.Sprintf("/api/v1/repos/%s/%s/releases/tags/%s", - owner.Name, repo.Name, nonexistingtag) - - req = NewRequestf(t, "GET", urlStr) - resp = session.MakeRequest(t, req, http.StatusNotFound) - - var err *api.APIError - DecodeJSON(t, resp, &err) - assert.NotEmpty(t, err.Message) -} - -func TestAPIDeleteReleaseByTagName(t *testing.T) { - defer prepareTestEnv(t)() - - repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) - owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) - session := loginUser(t, owner.LowerName) - token := getTokenForLoggedInUser(t, session) - - createNewReleaseUsingAPI(t, session, token, owner, repo, "release-tag", "", "Release Tag", "test") - - // delete release - req := NewRequestf(t, http.MethodDelete, fmt.Sprintf("/api/v1/repos/%s/%s/releases/tags/release-tag?token=%s", owner.Name, repo.Name, token)) - _ = session.MakeRequest(t, req, http.StatusNoContent) - - // make sure release is deleted - req = NewRequestf(t, http.MethodDelete, fmt.Sprintf("/api/v1/repos/%s/%s/releases/tags/release-tag?token=%s", owner.Name, repo.Name, token)) - _ = session.MakeRequest(t, req, http.StatusNotFound) - - // delete release tag too - req = NewRequestf(t, http.MethodDelete, fmt.Sprintf("/api/v1/repos/%s/%s/tags/release-tag?token=%s", owner.Name, repo.Name, token)) - _ = session.MakeRequest(t, req, http.StatusNoContent) -} |