diff --git a/integration/cli.py b/integration/cli.py index 9ffc9be..7e1f10d 100644 --- a/integration/cli.py +++ b/integration/cli.py @@ -26,6 +26,7 @@ class Gitea: self.create_repository() self.install_sso() self.add_deploy_key() + self.new_oauth2_app() def __add_credentials_parser(self, parser): group = parser.add_argument_group("credentials", "User credentials") @@ -121,6 +122,33 @@ class Gitea: self.install_sso_parser.set_defaults(func=run) + def new_oauth2_app(self): + def run(args, c: Session): + gitea = gitea_from_args(args, c=c) + # checks if user exists + gitea.login() + creds = gitea.add_oauth_application( + name=args.app_name, + redirect_urls=[args.redirect_uri], + ) + print(f"client_id: {creds[0]}client_secret: \n{creds[1]}") + + self.install_oauth2_app = self.subparser.add_parser( + name="new_oauth2_app", + description="Create new oauth2 app on Gitea", + help="Create new oauth2 app on Gitea", + ) + self.__add_credentials_parser(self.install_oauth2_app) + self.install_oauth2_app.add_argument( + "app_name", type=str, help="(Human readable)Name of the OAuth app" + ) + self.install_oauth2_app.add_argument( + "redirect_uri", + type=str, + help="Redirect URI of the app", + ) + self.install_oauth2_app.set_defaults(func=run) + def add_deploy_key(self): def run(args, c: Session): gitea = gitea_from_args(args, c=c) diff --git a/integration/gitea.py b/integration/gitea.py index 3407c48..7acd4d2 100755 --- a/integration/gitea.py +++ b/integration/gitea.py @@ -297,6 +297,15 @@ class Gitea: resp = self.c.post(url, json=payload) assert resp.status_code == 201 + def add_oauth_application(self, name: str, redirect_urls: [str]): + url = self.get_api_uri(f"/api/v1/user/applicaitons/oauth2") + payload = {"name": name, "redirect_urls": redirect_urls} + resp = self.c.post(url, json=payload) + print(f"new oauth status code: {resp.status_code}") + assert resp.status_code == 201 + data = resp.json() + return (data["client_id"], data["client_secret"]) + class ParseSSOLogin(HTMLParser): url: str = None diff --git a/integration/lib.sh b/integration/lib.sh index e9d8048..2b3eda4 100755 --- a/integration/lib.sh +++ b/integration/lib.sh @@ -13,13 +13,15 @@ then MAILDEV_URL="http://smtp:1080" GITEA_URL="http://gitea:3000" GITEA_SSH_URL="ssh://git@gitea:22" + WOODPECKER_URL="http://woodpecker:8000" else MAILDEV_URL="http://localhost:1080" GITEA_URL="http://localhost:3000" GITEA_SSH_URL="ssh://git@localhost:22" + WOODPECKER_URL="http://localhost:8000" fi -readonly DASHBOARD_URL="http://localhost:8000" +readonly DASHBOARD_URL="http://localhost:7000" readonly DASHBOARD_OIDC_DISCOVERY_URL="$DASHBOARD_URL/o/.well-known/openid-configuration/" @@ -36,6 +38,10 @@ readonly GITEA_HOSTEA_SSO_NAME=hostea-sso readonly GITEA_OIDC_CALLBACK="$GITEA_URL/user/oauth2/$GITEA_HOSTEA_SSO_NAME/callback" readonly GITEA_HOSTEA_FLEET_DEPLOY_KEY="$(realpath tests/fleet-deploy-key.pub)" readonly GITEA_HOSTEA_FLEET_DEPLOY_KEY_PRIVATE="$(realpath tests/fleet-deploy-key)" +readonly GITEA_WOODPECKER_OAUTH_NAME="woodpecker" + +readonly WOODPECKER_REDIRECT_URL="$WOODPECKER_URL/authorize" + readonly GITEA_HOSTEA_USERNAME=hostea readonly GITEA_HOSTEA_PASSWORD=supercomplicatedpassword @@ -89,6 +95,13 @@ gitea_root(){ $GITEA_ROOT_USERNAME $GITEA_ROOT_PASSOWRD \ $GITEA_ROOT_EMAIL \ $GITEA_URL + python -m integration \ + gitea new_oauth2_app \ + $GITEA_ROOT_USERNAME $GITEA_ROOT_PASSOWRD \ + $GITEA_ROOT_EMAIL \ + $GITEA_URL \ + $GITEA_WOODPECKER_OAUTH_NAME \ + $WOODPECKER_REDIRECT_URL # python -m integration \ # gitea install_sso \ # $GITEA_ROOT_USERNAME $GITEA_ROOT_PASSOWRD \