From 84c7b12c83cc07e00e0e3af2585ef22988deef95 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Wed, 1 Nov 2023 17:03:35 +0100 Subject: [PATCH] add test for implicit creation of a fork in an organization --- .../.forgejo/workflows/test.yml | 26 ++++++++++++++ .../README | 1 + .../upgraded | 14 ++++++++ tests/run.sh | 36 ++++++++++++++++--- 4 files changed, 72 insertions(+), 5 deletions(-) create mode 100644 tests/origin-organization-fork-destination/.forgejo/workflows/test.yml create mode 100644 tests/origin-organization-fork-destination/README create mode 100755 tests/origin-organization-fork-destination/upgraded diff --git a/tests/origin-organization-fork-destination/.forgejo/workflows/test.yml b/tests/origin-organization-fork-destination/.forgejo/workflows/test.yml new file mode 100644 index 0000000..017c7ff --- /dev/null +++ b/tests/origin-organization-fork-destination/.forgejo/workflows/test.yml @@ -0,0 +1,26 @@ +# SPDX-License-Identifier: MIT +name: test +on: + pull_request_target: + types: + - opened + - synchronize + - closed +jobs: + test: + runs-on: docker + steps: + - uses: actions/checkout@v4 + - uses: SELF@vTest + with: + origin-url: ${{ env.GITHUB_SERVER_URL }} + origin-repo: user1/origin-organization-fork-destination + origin-token: ${{ secrets.ORIGIN_TOKEN }} + origin-pr: ${{ github.event.pull_request.number }} + destination-url: ${{ env.GITHUB_SERVER_URL }} + destination-repo: user2/destinationrepo + destination-fork-repo: destination-fork/destinationrepo + destination-branch: main + destination-token: ${{ secrets.DESTINATION_TOKEN }} + update: ./upgraded + debug: true diff --git a/tests/origin-organization-fork-destination/README b/tests/origin-organization-fork-destination/README new file mode 100644 index 0000000..d2b2178 --- /dev/null +++ b/tests/origin-organization-fork-destination/README @@ -0,0 +1 @@ +originrepo diff --git a/tests/origin-organization-fork-destination/upgraded b/tests/origin-organization-fork-destination/upgraded new file mode 100755 index 0000000..94bb293 --- /dev/null +++ b/tests/origin-organization-fork-destination/upgraded @@ -0,0 +1,14 @@ +#!/bin/bash + +set -ex + +destination_checkout="$1" +destination_pr_json="$2" +origin_checkout="$3" +origin_pr_json="$4" + +test -d $destination_checkout +test -d $origin_checkout +test -f $origin_pr_json + +date +%s > $destination_checkout/last diff --git a/tests/run.sh b/tests/run.sh index 9970d96..cac5bb9 100755 --- a/tests/run.sh +++ b/tests/run.sh @@ -33,7 +33,7 @@ function user_curl() { function user_token() { local username=$1 name=$2 - curl -sS -f -H Content-Type:application/json --user "$username:${options[password]}" --data '{"name":"'$name'","scopes":["write:repository","write:issue","read:user"]}' ${options[url]}/api/v1/users/$username/tokens | jq --raw-output .sha1 | tee $TMPDIR/$username/repo-token + curl -sS -f -H Content-Type:application/json --user "$username:${options[password]}" --data '{"name":"'$name'","scopes":["write:repository","write:issue","read:organization","read:user"]}' ${options[url]}/api/v1/users/$username/tokens | jq --raw-output .sha1 | tee $TMPDIR/$username/repo-token } function user_secret() { @@ -206,14 +206,14 @@ function fixture() { orgs_delete - user_create user3 user3@example.com - log_verbose create organization destination-fork - user_curl user3 api_json --data '{"username":"destination-fork"}' ${options[url]}/api/v1/orgs - user_create user2 user2@example.com log_verbose push tests/${destination} repository to user2/${destination} forgejo-test-helper.sh push tests/${destination} http://user2:admin1234@${options[host_port]} user2 ${destination} + user_create user3 user3@example.com + log_verbose create organization destination-fork + user_curl user3 api_json --data '{"username":"destination-fork"}' ${options[url]}/api/v1/orgs + user_create user1 user1@example.com log_verbose push tests/${origin} repository to user1/${origin} forgejo-test-helper.sh push tests/${origin} http://user1:admin1234@${options[host_port]} user1 ${origin} cascading-pr @@ -293,6 +293,32 @@ function create_in_destination_fork_and_close() { wait_success ${options[url]}/api/v1/repos/user1/origin-fork-destination $(cat $TMPDIR/user1-origin-fork-destination.sha) } +function create_in_existing_destination_fork_and_close() { + fixture origin-organization-fork-destination destinationrepo + user_secret user1 DESTINATION_TOKEN $(user_token user3 DESTINATION_TOKEN) + log_verbose fork user2/destinationrepo to destination-fork/destinationrepo + user_curl user3 api_json --data '{"organization":"destination-fork"}' ${options[url]}/api/v1/repos/user2/destinationrepo/forks + + create_pull_request_case1 user1 user1 origin-organization-fork-destination + + wait_success ${options[url]}/api/v1/repos/user1/origin-organization-fork-destination $(cat $TMPDIR/user1-origin-organization-fork-destination.sha) + has_cascade_pull_request + close_pull_request origin-organization-fork-destination + wait_success ${options[url]}/api/v1/repos/user1/origin-organization-fork-destination $(cat $TMPDIR/user1-origin-organization-fork-destination.sha) +} + +function create_in_organization_destination_fork_and_close() { + fixture origin-organization-fork-destination destinationrepo + user_secret user1 DESTINATION_TOKEN $(user_token user3 DESTINATION_TOKEN) + + create_pull_request_case1 user1 user1 origin-organization-fork-destination + + wait_success ${options[url]}/api/v1/repos/user1/origin-organization-fork-destination $(cat $TMPDIR/user1-origin-organization-fork-destination.sha) + has_cascade_pull_request + close_pull_request origin-organization-fork-destination + wait_success ${options[url]}/api/v1/repos/user1/origin-organization-fork-destination $(cat $TMPDIR/user1-origin-organization-fork-destination.sha) +} + function create_and_merge_close() { fixture originrepo-close-merge destinationrepo user_secret user1 DESTINATION_TOKEN $(user_token user2 DESTINATION_TOKEN)