From 47e692c305e943f7600ee340f03cb8d0d59c0e83 Mon Sep 17 00:00:00 2001 From: Aaron Ritter Date: Fri, 8 Nov 2024 22:05:30 +0100 Subject: [PATCH 01/23] fix: replace exists? with exist? --- Formula/fusionauth-app.rb | 6 +++--- Formula/fusionauth-search.rb | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Formula/fusionauth-app.rb b/Formula/fusionauth-app.rb index 8944f93..0887fba 100644 --- a/Formula/fusionauth-app.rb +++ b/Formula/fusionauth-app.rb @@ -6,11 +6,11 @@ class FusionauthApp < Formula def install prefix.install "fusionauth-app" - etc.install "config" => "fusionauth" unless File.exists? etc / "fusionauth" + etc.install "config" => "fusionauth" unless File.exist? etc / "fusionauth" prefix.install_symlink etc / "fusionauth" => "config" - (var / "fusionauth/java").mkpath unless File.exists? var / "fusionauth/java" + (var / "fusionauth/java").mkpath unless File.exist? var / "fusionauth/java" prefix.install_symlink var / "fusionauth/java" - (var / "log/fusionauth").mkpath unless File.exists? var / "log/fusionauth" + (var / "log/fusionauth").mkpath unless File.exist? var / "log/fusionauth" prefix.install_symlink var / "log/fusionauth" => "logs" end diff --git a/Formula/fusionauth-search.rb b/Formula/fusionauth-search.rb index 377454f..59326fb 100644 --- a/Formula/fusionauth-search.rb +++ b/Formula/fusionauth-search.rb @@ -6,13 +6,13 @@ class FusionauthSearch < Formula def install prefix.install "fusionauth-search" - etc.install "config" => "fusionauth" unless File.exists? etc/"fusionauth" + etc.install "config" => "fusionauth" unless File.exist? etc/"fusionauth" prefix.install_symlink etc/"fusionauth" => "config" - (var/"log/fusionauth").mkpath unless File.exists? var/"log/fusionauth" + (var/"log/fusionauth").mkpath unless File.exist? var/"log/fusionauth" prefix.install_symlink var/"log/fusionauth" => "logs" - (var/"fusionauth/java").mkpath unless File.exists? var/"fusionauth/java" + (var/"fusionauth/java").mkpath unless File.exist? var/"fusionauth/java" prefix.install_symlink var/"fusionauth/java" - (var/"fusionauth/data").mkpath unless File.exists? var/"fusionauth/data" + (var/"fusionauth/data").mkpath unless File.exist? var/"fusionauth/data" prefix.install_symlink var/"fusionauth/data" # Hide all the dylibs from brew From e6b429969f9e2334a4fcb739f60b032e978cacae Mon Sep 17 00:00:00 2001 From: Aaron Ritter Date: Fri, 8 Nov 2024 22:05:49 +0100 Subject: [PATCH 02/23] fix: replace plist with service --- Formula/fusionauth-app.rb | 33 ++++++--------------------------- Formula/fusionauth-search.rb | 32 ++++++-------------------------- 2 files changed, 12 insertions(+), 53 deletions(-) diff --git a/Formula/fusionauth-app.rb b/Formula/fusionauth-app.rb index 0887fba..4f70fdb 100644 --- a/Formula/fusionauth-app.rb +++ b/Formula/fusionauth-app.rb @@ -25,32 +25,11 @@ def caveats EOS end - # http://www.manpagez.com/man/5/launchd.plist/ - def plist - <<~EOS - - - - - KeepAlive - - Label - #{plist_name} - ProgramArguments - - sh - start.sh - - RunAtLoad - - WorkingDirectory - #{prefix}/fusionauth-app/bin - StandardOutPath - #{var}/log/fusionauth/fusionauth-app.log - StandardErrorPath - #{var}/log/fusionauth/fusionauth-app.log - - - EOS + service do + run ["sh", "start.sh"] + keep_alive true + working_dir opt_prefix/"fusionauth-app/bin" + log_path var/"log/fusionauth/fusionauth-app.log" + error_log_path var/"log/fusionauth/fusionauth-app.log" end end diff --git a/Formula/fusionauth-search.rb b/Formula/fusionauth-search.rb index 59326fb..bfed180 100644 --- a/Formula/fusionauth-search.rb +++ b/Formula/fusionauth-search.rb @@ -32,31 +32,11 @@ def caveats; <<~EOS EOS end - # http://www.manpagez.com/man/5/launchd.plist/ - def plist; <<~EOS - - - - - KeepAlive - - Label - #{plist_name} - ProgramArguments - - sh - ./elasticsearch - - RunAtLoad - - WorkingDirectory - #{prefix}/fusionauth-search/elasticsearch/bin - StandardOutPath - #{var}/log/fusionauth/fusionauth-search.log - StandardErrorPath - #{var}/log/fusionauth/fusionauth-search.log - - - EOS + service do + run ["sh", "./elasticsearch"] + keep_alive true + working_dir opt_prefix/"fusionauth-search/elasticsearch/bin" + log_path var/"log/fusionauth/fusionauth-search.log" + error_log_path var/"log/fusionauth/fusionauth-search.log" end end From 5bc506e438e17ded313d43c07bdce389a20dfa45 Mon Sep 17 00:00:00 2001 From: Aaron Ritter Date: Fri, 8 Nov 2024 22:26:54 +0100 Subject: [PATCH 03/23] ci(e2e-test): add simple fusionauth test --- .github/workflows/e2e-test.yml | 57 ++ kickstart/css/styles.css | 1101 ++++++++++++++++++++++++++++++++ kickstart/kickstart.json | 212 ++++++ 3 files changed, 1370 insertions(+) create mode 100644 .github/workflows/e2e-test.yml create mode 100644 kickstart/css/styles.css create mode 100644 kickstart/kickstart.json diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml new file mode 100644 index 0000000..dc0b0e0 --- /dev/null +++ b/.github/workflows/e2e-test.yml @@ -0,0 +1,57 @@ +# This workflow performs a full End 2 End test of the App +# It runs the test on the last 5 iOS releases. + +name: E2E Test with latest FusionAuth + +on: + # Triggers the workflow on pull request events but only for default and protected branches + pull_request: + branches: [ "main" ] + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "e2e-test" + e2e-test: + name: End 2 End Test + + permissions: + # required for all workflows + security-events: write + # only required for workflows in private repositories + actions: read + contents: read + + # The type of runner that the job will run on + # https://xcodereleases.com/ + # https://developer.apple.com/support/xcode/ + # https://developer.apple.com/documentation/xcode-release-notes + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ "macos-14", "macos-13" ] + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checkout the repository. + - name: Checkout repository + uses: actions/checkout@v4.2.2 + + # Install FusionAuth with brew. + - name: Install FusionAuth + env: + FUSIONAUTH_APP_KICKSTART_FILE: "kickstart/kickstart.json" + DATABASE_URL: "jdbc:postgresql://db:5432/fusionauth" + DATABASE_ROOT_USERNAME: "${{ github.actor }}" + DATABASE_ROOT_PASSWORD: "" + DATABASE_USERNAME: "fusionauth" + DATABASE_PASSWORD: "fusionauth" + run: | + brew install postgresql + brew install --formula ./Formula/fusionauth-search.rb -v + brew install --formula ./Formula/fusionauth-app.rb -v + brew services start fusionauth-search + brew services start fusionauth-app + brew services diff --git a/kickstart/css/styles.css b/kickstart/css/styles.css new file mode 100644 index 0000000..4b0c851 --- /dev/null +++ b/kickstart/css/styles.css @@ -0,0 +1,1101 @@ +:root { + --main-text-color: #424242; + --main-accent-color: #096324; + --input-background: #fbfbfb; + --body-background: #f7f7f7; + --tooltip-background: #e2e2e2; + --error-color: #ff0000; + --error-background: #ffe8e8; + --border-color: #dddddd; + --logo-url: url(https://fusionauth.io/cdn/samplethemes/changebank/changebank.svg); + --font-stack: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; +} +body { + font-family: var(--font-stack); + font-size: 16px; + color: var(--main-text-color); + background: var(--body-background); + line-height: normal; +} +.page-body:before { + content: ''; + display: block; + width: 80%; + max-width: 20rem; + height: 3.5rem; + margin: 0 auto 3rem auto; + background-image: var(--logo-url); + background-size: contain; + background-position: center; + background-repeat: no-repeat; +} + +/* Changes for Powered by FusionAuth div */ +body > main main.page-body { + min-height: calc(100vh - 3rem); /* to make the Powered by FusionAuth div position at the bottom of the page if the page is shorter than the viewport */ + padding-top: 3rem; +} +body > main { + padding-bottom: 2.5rem; /* giving Powered by FusionAuth more space */ +} +#powered-by-fa { + position: absolute !important; +} +/* End Powered by FusionAuth */ + + +/* Hiding help bar at top */ +body > main { + padding-top: 0; +} +/* end help bar */ + + +/* Typical typography */ +h1, h2, h3, h4, h5, h6 { + line-height: normal; +} +p { + margin: 1.5em 0; + line-height: 1.375; +} +/* End typography */ + + +/* Typical Buttons and Links */ +a { + color: var(--main-accent-color); + text-decoration: underline; +} +a:hover { + color: var(--main-accent-color); + opacity: .8; +} +a:visited { + color: var(--main-accent-color); +} +.blue-text { + color: var(--main-accent-color) !important; +} +.form-row:last-of-type { + margin-bottom: 0; +} +.button { + font-size: 1.125rem !important; + border-radius: .5rem; + padding: 1rem !important; + line-height: normal !important; + letter-spacing: normal !important; +} +.button.blue { + background: var(--main-accent-color) !important; + width: 100%; + margin-top: 2.5rem; +} +.button.blue:hover { + opacity: .8 !important; + background: var(--main-accent-color) !important; +} +.button.blue:focus { + background: var(--main-accent-color) !important; + box-shadow: inset 0 1px 2px rgba(0,0,0,0.4),0 0 0 2px rgba(57,152,219,0.4); + outline: 1px solid #ffffff !important; +} +.button.blue > .fa { + display: none; +} +.secondary-btn, +main.page-body .row:last-of-type a { + text-decoration: none; + padding: .5em .75em; + border: 1px solid var(--main-accent-color); + border-radius: .25em; + font-size: .75rem; + margin-top: .7rem; + display: inline-block; + line-height: normal; +} +.button + a { + text-align: center; + display: block; + margin: 1em auto; +} +/* End buttons and links */ + + +/* Typical Form panel and inputs */ +.panel { + box-shadow: 0 0 1.5625rem 1.25rem rgba(234, 234, 234, 0.8); + border-radius: .625rem; + border: none; + padding: 2.25rem 2.75rem; +} +.panel h2, +fieldset legend, +legend { + text-align: center; + color: var(--main-accent-color); + font-size: 1.5625rem; + font-weight: 600; + margin: 0 0 2rem 0; + padding: 0; + border: none; +} +legend { + border: none; + width: auto; +} +form .form-row { + margin-bottom: 1.25rem; +} +label { + color: var(--main-text-color); + font-size: 1rem; + font-weight: 500; +} +label.radio, +label.checkbox { + margin: 1rem 0; + font-weight: 400; +} +.input-addon-group, +.input-addon-group > :last-child:not(.flat), +.input-addon-group > .input:last-child:not(.flat), +.input-addon-group > input:last-child:not(.flat) { + color: var(--main-text-color); /* overriding typical text color for inputs */ +} +.input-addon-group span { + display: none; /* Hiding icons on inputs */ +} +input::placeholder { + color: var(--main-text-color); +} +.input, +input[type="email"], +input[type="file"], +input[type="number"], +input[type="search"], +input[type="text"], +input[type="tel"], +input[type="url"], +input[type="password"], +textarea, +label.select select +{ + background: var(--input-background); + border: 1px solid var(--border-color) !important; + border-radius: .25rem !important; + box-shadow: none; + font-size: 1rem; + padding: 1em .625em; +} +input:focus, +input:active, +textarea:focus, +textarea:active { + border: 1px solid #707070 !important; + box-shadow: none !important; +} +.radio input { + width: 1.3125rem; + height: 1.3125rem; +} +.radio span.box, +.checkbox span.box { + width: 1.3125rem; + height: 1.3125rem; + margin: 0; + border: solid 1px var(--border-color); + background-color: var(--input-background); +} +.radio span.box { + border-radius: 50%; +} +.radio input:checked + span.box { + border: 2px solid var(--main-accent-color); +} +.radio span.box::after { + box-shadow: none; + border-radius: 50%; + background: var(--main-accent-color); + width: .8125rem; + height: .8125rem; + top: .125rem; + left: .125rem; +} +.radio span.box:hover::after { + opacity: 0; +} +.radio span.label, +.checkbox span.label { + margin-left: .5rem; +} +.radio-items .form-row label span:last-of-type { + border-color: var(--border-color); +} +input[type="radio"] { + width: 1.3125rem; + height: 1.3125rem; + margin: 0; + border: solid 1px var(--border-color); + border-radius: 50%; + background-color: var(--input-background); + appearance: none; + -webkit-appearance: none; + vertical-align: text-bottom; +} +input[type="radio"]:focus, +input[type="radio"]:active, +input[type="radio"]:checked { + border: 2px solid var(--main-accent-color) !important; +} +input[type="radio"]:checked:after { + content: ''; + box-shadow: none; + border-radius: 50%; + background: var(--main-accent-color); + width: .8125rem; + height: .8125rem; + top: .125rem; + left: .125rem; + position: absolute; +} +.checkbox span.box { + border-radius: .25rem; +} +.checkbox input:checked + span.box { + background: var(--main-accent-color); + border-color: var(--main-accent-color); +} +.checkbox span.box::after { + height: .25rem; + left: .25rem; + top: .3125rem; + transform: rotate(-46deg); + width: .625rem; + box-shadow: none; +} +.checkbox-list { + background: transparent; + border: none; + box-shadow: none; + padding-left: 0; +} +input[type="checkbox"] { + width: 1.3125rem; + height: 1.3125rem; + margin: 0; + border: solid 1px var(--border-color); + border-radius: .25rem; + background-color: var(--input-background); + appearance: none; + -webkit-appearance: none; + vertical-align: text-bottom; +} +input[type="checkbox"]:checked { + background-color: var(--main-accent-color); +} +input[type="checkbox"]:checked:after { + content: ''; + background: transparent; + border: 2px solid #fff; + border-right: none; + border-top: none; + height: .25rem; + left: .25rem; + top: .3125rem; + transform: rotate(-46deg); + width: .625rem; + display: block; + position: absolute; +} +label.select select { + color: var(--main-text-color); +} +label.select select option { + background: var(--input-background); + color: var(--main-text-color); +} +/* End Panel and Form Inputs */ + + +/* Errors */ +body .alert { + color: var(--main-text-color); +} +body .alert a { + height: auto; + width: auto; +} +body .alert.error a i.fa { + color: var(--error-color); +} +body .alert.error { + border: 1px solid var(--error-color); + margin: 0 0 2rem 0; + background: var(--error-background); + box-shadow: none; + border-radius: .25rem; +} +body .alert .dismiss-button i { + margin: 0; +} +.error { + font-size: .75rem; + margin: .5em 0; +} +label.error { + color: var(--error-color); + font-size: inherit; +} +form .form-row span.error { + color: var(--error-color); +} +input.error { + background: var(--error-background); + border-color: var(--error-color) !important; +} +/* End Errors */ + + +/* Tooltip */ +.tooltip { + background: var(--tooltip-background); + font-size: .75rem; + color: var(--main-text-color); + text-align: left; +} +.tooltip:after { + border-top-color: var(--tooltip-background); +} +.tooltip.inverted:before { + border-bottom-color: var(--tooltip-background); +} +.fa-info-circle { + color: var(--main-accent-color) !important; +} +/* End Tooltip */ + + +table thead tr th { + color: var(--main-text-color); +} +table thead tr { + border-color: var(--border-color); +} +#locale-select { + width: 50%; + min-width: 10rem; +} +.grecaptcha-msg { + margin: 1rem 0; + text-align: left; +} +.progress-bar { + border-radius: .5rem; + border: 1px solid var(--border-color); + height: 1rem; +} +.progress-bar div { + border-radius: .5rem; + background: var(--main-accent-color); + height: 1rem; +} +hr, +.hr-container hr { + border: none; + height: 1px; + background-color: #979797; +} +.hr-container div { + color: #959595; + font-size: .75rem; +} +.page-body > .row.center:last-of-type { + width: calc(100% - 30px); + margin: auto; + justify-content: space-between; +} +.page-body > .row.center:last-of-type > div { + width: 50%; + margin: 0; +} +@media only screen and (max-width: 450px) { + .page-body > .row.center:last-of-type { + flex-direction: column-reverse; + align-items: center; + } + .secondary-btn, main.page-body .row:last-of-type a { + margin-bottom: 1rem; + } + .page-body > .row.center:last-of-type > div { + text-align: center !important; + } +} +@media only screen and (min-width: 768px) { + .page-body > .row.center:last-of-type { + width: 33rem; + } +} + +/* Overriding existing grid per page */ +#oauth-register .page-body > .row > .col-xs, +#oauth-register .page-body > .row > .col-sm-8, +#oauth-register .page-body > .row > .col-md-6, +#oauth-register .page-body > .row > .col-lg-5, +#oauth-register .page-body > .row > .col-xl-4, +#oauth-authorize .page-body > .row > .col-xs, +#oauth-authorize .page-body > .row > .col-sm-8, +#oauth-authorize .page-body > .row > .col-md-6, +#oauth-authorize .page-body > .row > .col-lg-5, +#oauth-authorize .page-body > .row > .col-xl-4, +#oauth-passwordless .page-body > .row > .col-xs, +#oauth-passwordless .page-body > .row > .col-sm-8, +#oauth-passwordless .page-body > .row > .col-md-6, +#oauth-passwordless .page-body > .row > .col-lg-5, +#oauth-passwordless .page-body > .row > .col-xl-4, +#oauth-two-factor .page-body > .row > .col-xs, +#oauth-two-factor .page-body > .row > .col-sm-8, +#oauth-two-factor .page-body > .row > .col-md-6, +#oauth-two-factor .page-body > .row > .col-lg-5, +#oauth-two-factor .page-body > .row > .col-xl-4, +#oauth-two-factor-methods .page-body > .row > .col-xs, +#oauth-two-factor-methods .page-body > .row > .col-sm-8, +#oauth-two-factor-methods .page-body > .row > .col-md-6, +#oauth-two-factor-methods .page-body > .row > .col-lg-5, +#oauth-two-factor-methods .page-body > .row > .col-xl-4, +#oauth-logout .page-body > .row > .col-xs, +#oauth-logout .page-body > .row > .col-sm-8, +#oauth-logout .page-body > .row > .col-md-6, +#oauth-logout .page-body > .row > .col-lg-5, +#oauth-logout .page-body > .row > .col-xl-4, +#oauth-device .page-body > .row > .col-xs, +#oauth-device .page-body > .row > .col-sm-8, +#oauth-device .page-body > .row > .col-md-6, +#oauth-device .page-body > .row > .col-lg-5, +#oauth-device .page-body > .row > .col-xl-4, +#oauth-device-complete .page-body > .row > .col-xs, +#oauth-device-complete .page-body > .row > .col-sm-8, +#oauth-device-complete .page-body > .row > .col-md-6, +#oauth-device-complete .page-body > .row > .col-lg-5, +#oauth-device-complete .page-body > .row > .col-xl-4, +#oauth-complete-reg .page-body > .row > .col-xs, +#oauth-complete-reg .page-body > .row > .col-sm-8, +#oauth-complete-reg .page-body > .row > .col-md-6, +#oauth-complete-reg .page-body > .row > .col-lg-5, +#oauth-complete-reg .page-body > .row > .col-xl-4, +#oauth-child-reg .page-body > .row > .col-xs, +#oauth-child-reg .page-body > .row > .col-sm-8, +#oauth-child-reg .page-body > .row > .col-md-6, +#oauth-child-reg .page-body > .row > .col-lg-5, +#oauth-child-reg .page-body > .row > .col-xl-4, +#oauth-child-reg-complete .page-body > .row > .col-xs, +#oauth-child-reg-complete .page-body > .row > .col-sm-8, +#oauth-child-reg-complete .page-body > .row > .col-md-6, +#oauth-child-reg-complete .page-body > .row > .col-lg-5, +#oauth-child-reg-complete .page-body > .row > .col-xl-4, +#oauth-not-registered .page-body > .row > .col-xs, +#oauth-not-registered .page-body > .row > .col-sm-8, +#oauth-not-registered .page-body > .row > .col-md-6, +#oauth-not-registered .page-body > .row > .col-lg-5, +#oauth-not-registered .page-body > .row > .col-xl-4, +#oauth-error .page-body > .row > .col-xs, +#oauth-error .page-body > .row > .col-sm-8, +#oauth-error .page-body > .row > .col-md-6, +#oauth-error .page-body > .row > .col-lg-5, +#oauth-error .page-body > .row > .col-xl-4, +#oauthstart-idp-link .page-body > .row > .col-xs, +#oauthstart-idp-link .page-body > .row > .col-sm-8, +#oauthstart-idp-link .page-body > .row > .col-md-6, +#oauthstart-idp-link .page-body > .row > .col-lg-5, +#oauthstart-idp-link .page-body > .row > .col-xl-4, +#oauth-wait .page-body > .row > .col-xs, +#oauth-wait .page-body > .row > .col-sm-8, +#oauth-wait .page-body > .row > .col-md-6, +#oauth-wait .page-body > .row > .col-lg-5, +#oauth-wait .page-body > .row > .col-xl-4, +#email-verification .page-body > .row > .col-xs, +#email-verification .page-body > .row > .col-sm-8, +#email-verification .page-body > .row > .col-md-6, +#email-verification .page-body > .row > .col-lg-5, +#email-verification .page-body > .row > .col-xl-4, +#email-ver-required .page-body > .row > .col-xs, +#email-ver-required .page-body > .row > .col-sm-8, +#email-ver-required .page-body > .row > .col-md-6, +#email-ver-required .page-body > .row > .col-lg-5, +#email-ver-required .page-body > .row > .col-xl-4, +#email-ver-complete .page-body > .row > .col-xs, +#email-ver-complete .page-body > .row > .col-sm-8, +#email-ver-complete .page-body > .row > .col-md-6, +#email-ver-complete .page-body > .row > .col-lg-5, +#email-ver-complete .page-body > .row > .col-xl-4, +#email-ver-resent .page-body > .row > .col-xs, +#email-ver-resent .page-body > .row > .col-sm-8, +#email-ver-resent .page-body > .row > .col-md-6, +#email-ver-resent .page-body > .row > .col-lg-5, +#email-ver-resent .page-body > .row > .col-xl-4, +#forgot-pwd .page-body > .row > .col-xs, +#forgot-pwd .page-body > .row > .col-sm-8, +#forgot-pwd .page-body > .row > .col-md-6, +#forgot-pwd .page-body > .row > .col-lg-5, +#forgot-pwd .page-body > .row > .col-xl-4, +#forgot-pwd-sent .page-body > .row > .col-xs, +#forgot-pwd-sent .page-body > .row > .col-sm-8, +#forgot-pwd-sent .page-body > .row > .col-md-6, +#forgot-pwd-sent .page-body > .row > .col-lg-5, +#forgot-pwd-sent .page-body > .row > .col-xl-4, +#verify-reg .page-body > .row > .col-xs, +#verify-reg .page-body > .row > .col-sm-8, +#verify-reg .page-body > .row > .col-md-6, +#verify-reg .page-body > .row > .col-lg-5, +#verify-reg .page-body > .row > .col-xl-4, +#verify-reg-complete .page-body > .row > .col-xs, +#verify-reg-complete .page-body > .row > .col-sm-8, +#verify-reg-complete .page-body > .row > .col-md-6, +#verify-reg-complete .page-body > .row > .col-lg-5, +#verify-reg-complete .page-body > .row > .col-xl-4, +#verify-reg-resent .page-body > .row > .col-xs, +#verify-reg-resent .page-body > .row > .col-sm-8, +#verify-reg-resent .page-body > .row > .col-md-6, +#verify-reg-resent .page-body > .row > .col-lg-5, +#verify-reg-resent .page-body > .row > .col-xl-4, +#verify-reg-required .page-body > .row > .col-xs, +#verify-reg-required .page-body > .row > .col-sm-8, +#verify-reg-required .page-body > .row > .col-md-6, +#verify-reg-required .page-body > .row > .col-lg-5, +#verify-reg-required .page-body > .row > .col-xl-4, +#acct-2fa-enable .page-body > .row > .col-xs-12, +#acct-2fa-enable .page-body > .row > .col-sm-12, +#acct-2fa-enable .page-body > .row > .col-md-10, +#acct-2fa-enable .page-body > .row > .col-lg-8, +#acct-2fa-disable .page-body > .row > .col-xs-12, +#acct-2fa-disable .page-body > .row > .col-sm-12, +#acct-2fa-disable .page-body > .row > .col-md-10, +#acct-2fa-disable .page-body > .row > .col-lg-8, +#unauthorized-page .page-body > .row > .col-sm-10, +#unauthorized-page .page-body > .row > .col-md-8, +#unauthorized-page .page-body > .row > .col-lg-7, +#unauthorized-page .page-body > .row > .col-xl-5, +#change-pwd .page-body > .row > .col-xs, +#change-pwd .page-body > .row > .col-sm-8, +#change-pwd .page-body > .row > .col-md-6, +#change-pwd .page-body > .row > .col-lg-5, +#change-pwd .page-body > .row > .col-xl-4, +#change-pwd-complete .page-body > .row > .col-xs, +#change-pwd-complete .page-body > .row > .col-sm-8, +#change-pwd-complete .page-body > .row > .col-md-6, +#change-pwd-complete .page-body > .row > .col-lg-5, +#change-pwd-complete .page-body > .row > .col-xl-4 { + flex-basis: 33rem; + width: calc(100% - 30px); + max-width: 33rem; +} +@media only screen and (max-width: 575px) { + #oauth-register .page-body > .row > .col-xs, + #oauth-register .page-body > .row > .col-sm-8, + #oauth-register .page-body > .row > .col-md-6, + #oauth-register .page-body > .row > .col-lg-5, + #oauth-register .page-body > .row > .col-xl-4, + #oauth-authorize .page-body > .row > .col-xs, + #oauth-authorize .page-body > .row > .col-sm-8, + #oauth-authorize .page-body > .row > .col-md-6, + #oauth-authorize .page-body > .row > .col-lg-5, + #oauth-authorize .page-body > .row > .col-xl-4, + #oauth-passwordless .page-body > .row > .col-xs, + #oauth-passwordless .page-body > .row > .col-sm-8, + #oauth-passwordless .page-body > .row > .col-md-6, + #oauth-passwordless .page-body > .row > .col-lg-5, + #oauth-passwordless .page-body > .row > .col-xl-4, + #oauth-two-factor .page-body > .row > .col-xs, + #oauth-two-factor .page-body > .row > .col-sm-8, + #oauth-two-factor .page-body > .row > .col-md-6, + #oauth-two-factor .page-body > .row > .col-lg-5, + #oauth-two-factor .page-body > .row > .col-xl-4, + #oauth-two-factor-methods .page-body > .row > .col-xs, + #oauth-two-factor-methods .page-body > .row > .col-sm-8, + #oauth-two-factor-methods .page-body > .row > .col-md-6, + #oauth-two-factor-methods .page-body > .row > .col-lg-5, + #oauth-two-factor-methods .page-body > .row > .col-xl-4, + #oauth-logout .page-body > .row > .col-xs, + #oauth-logout .page-body > .row > .col-sm-8, + #oauth-logout .page-body > .row > .col-md-6, + #oauth-logout .page-body > .row > .col-lg-5, + #oauth-logout .page-body > .row > .col-xl-4, + #oauth-device .page-body > .row > .col-xs, + #oauth-device .page-body > .row > .col-sm-8, + #oauth-device .page-body > .row > .col-md-6, + #oauth-device .page-body > .row > .col-lg-5, + #oauth-device .page-body > .row > .col-xl-4, + #oauth-device-complete .page-body > .row > .col-xs, + #oauth-device-complete .page-body > .row > .col-sm-8, + #oauth-device-complete .page-body > .row > .col-md-6, + #oauth-device-complete .page-body > .row > .col-lg-5, + #oauth-device-complete .page-body > .row > .col-xl-4, + #oauth-complete-reg .page-body > .row > .col-xs, + #oauth-complete-reg .page-body > .row > .col-sm-8, + #oauth-complete-reg .page-body > .row > .col-md-6, + #oauth-complete-reg .page-body > .row > .col-lg-5, + #oauth-complete-reg .page-body > .row > .col-xl-4, + #oauth-child-reg .page-body > .row > .col-xs, + #oauth-child-reg .page-body > .row > .col-sm-8, + #oauth-child-reg .page-body > .row > .col-md-6, + #oauth-child-reg .page-body > .row > .col-lg-5, + #oauth-child-reg .page-body > .row > .col-xl-4, + #oauth-child-reg-complete .page-body > .row > .col-xs, + #oauth-child-reg-complete .page-body > .row > .col-sm-8, + #oauth-child-reg-complete .page-body > .row > .col-md-6, + #oauth-child-reg-complete .page-body > .row > .col-lg-5, + #oauth-child-reg-complete .page-body > .row > .col-xl-4, + #oauth-not-registered .page-body > .row > .col-xs, + #oauth-not-registered .page-body > .row > .col-sm-8, + #oauth-not-registered .page-body > .row > .col-md-6, + #oauth-not-registered .page-body > .row > .col-lg-5, + #oauth-not-registered .page-body > .row > .col-xl-4, + #oauth-error .page-body > .row > .col-xs, + #oauth-error .page-body > .row > .col-sm-8, + #oauth-error .page-body > .row > .col-md-6, + #oauth-error .page-body > .row > .col-lg-5, + #oauth-error .page-body > .row > .col-xl-4, + #oauthstart-idp-link .page-body > .row > .col-xs, + #oauthstart-idp-link .page-body > .row > .col-sm-8, + #oauthstart-idp-link .page-body > .row > .col-md-6, + #oauthstart-idp-link .page-body > .row > .col-lg-5, + #oauthstart-idp-link .page-body > .row > .col-xl-4, + #oauth-wait .page-body > .row > .col-xs, + #oauth-wait .page-body > .row > .col-sm-8, + #oauth-wait .page-body > .row > .col-md-6, + #oauth-wait .page-body > .row > .col-lg-5, + #oauth-wait .page-body > .row > .col-xl-4, + #email-verification .page-body > .row > .col-xs, + #email-verification .page-body > .row > .col-sm-8, + #email-verification .page-body > .row > .col-md-6, + #email-verification .page-body > .row > .col-lg-5, + #email-verification .page-body > .row > .col-xl-4, + #email-ver-required .page-body > .row > .col-xs, + #email-ver-required .page-body > .row > .col-sm-8, + #email-ver-required .page-body > .row > .col-md-6, + #email-ver-required .page-body > .row > .col-lg-5, + #email-ver-required .page-body > .row > .col-xl-4, + #email-ver-complete .page-body > .row > .col-xs, + #email-ver-complete .page-body > .row > .col-sm-8, + #email-ver-complete .page-body > .row > .col-md-6, + #email-ver-complete .page-body > .row > .col-lg-5, + #email-ver-complete .page-body > .row > .col-xl-4, + #email-ver-resent .page-body > .row > .col-xs, + #email-ver-resent .page-body > .row > .col-sm-8, + #email-ver-resent .page-body > .row > .col-md-6, + #email-ver-resent .page-body > .row > .col-lg-5, + #email-ver-resent .page-body > .row > .col-xl-4, + #forgot-pwd .page-body > .row > .col-xs, + #forgot-pwd .page-body > .row > .col-sm-8, + #forgot-pwd .page-body > .row > .col-md-6, + #forgot-pwd .page-body > .row > .col-lg-5, + #forgot-pwd .page-body > .row > .col-xl-4, + #forgot-pwd-sent .page-body > .row > .col-xs, + #forgot-pwd-sent .page-body > .row > .col-sm-8, + #forgot-pwd-sent .page-body > .row > .col-md-6, + #forgot-pwd-sent .page-body > .row > .col-lg-5, + #forgot-pwd-sent .page-body > .row > .col-xl-4, + #verify-reg .page-body > .row > .col-xs, + #verify-reg .page-body > .row > .col-sm-8, + #verify-reg .page-body > .row > .col-md-6, + #verify-reg .page-body > .row > .col-lg-5, + #verify-reg .page-body > .row > .col-xl-4, + #verify-reg-complete .page-body > .row > .col-xs, + #verify-reg-complete .page-body > .row > .col-sm-8, + #verify-reg-complete .page-body > .row > .col-md-6, + #verify-reg-complete .page-body > .row > .col-lg-5, + #verify-reg-complete .page-body > .row > .col-xl-4, + #verify-reg-resent .page-body > .row > .col-xs, + #verify-reg-resent .page-body > .row > .col-sm-8, + #verify-reg-resent .page-body > .row > .col-md-6, + #verify-reg-resent .page-body > .row > .col-lg-5, + #verify-reg-resent .page-body > .row > .col-xl-4, + #verify-reg-required .page-body > .row > .col-xs, + #verify-reg-required .page-body > .row > .col-sm-8, + #verify-reg-required .page-body > .row > .col-md-6, + #verify-reg-required .page-body > .row > .col-lg-5, + #verify-reg-required .page-body > .row > .col-xl-4, + #acct-2fa-enable .page-body > .row > .col-xs-12, + #acct-2fa-enable .page-body > .row > .col-sm-12, + #acct-2fa-enable .page-body > .row > .col-md-10, + #acct-2fa-enable .page-body > .row > .col-lg-8, + #acct-2fa-disable .page-body > .row > .col-xs-12, + #acct-2fa-disable .page-body > .row > .col-sm-12, + #acct-2fa-disable .page-body > .row > .col-md-10, + #acct-2fa-disable .page-body > .row > .col-lg-8, + #unauthorized-page .page-body > .row > .col-sm-10, + #unauthorized-page .page-body > .row > .col-md-8, + #unauthorized-page .page-body > .row > .col-lg-7, + #unauthorized-page .page-body > .row > .col-xl-5, + #change-pwd .page-body > .row > .col-xs, + #change-pwd .page-body > .row > .col-sm-8, + #change-pwd .page-body > .row > .col-md-6, + #change-pwd .page-body > .row > .col-lg-5, + #change-pwd .page-body > .row > .col-xl-4, + #change-pwd-complete .page-body > .row > .col-xs, + #change-pwd-complete .page-body > .row > .col-sm-8, + #change-pwd-complete .page-body > .row > .col-md-6, + #change-pwd-complete .page-body > .row > .col-lg-5, + #change-pwd-complete .page-body > .row > .col-xl-4 { + flex-basis: calc(100% - 30px); + width: calc(100% - 30px); + max-width: 33rem; + } + .panel { + padding-left: .5rem; + padding-right: .5rem; + } +} +@media only screen and (min-width: 768px) { + #acct-2fa-index .page-body > .row.center:last-of-type { + width: calc(83.33333333% - 30px); + } +} +@media only screen and (min-width: 992px) { + #acct-2fa-index .page-body > .row > .col-xs12, + #acct-2fa-index .page-body > .row > .col-sm-12, + #acct-2fa-index .page-body > .row > .col-md-10, + #acct-2fa-index .page-body > .row > .col-lg-8 { + flex-basis: 54.125rem; + max-width: 54.125rem; + } + #acct-2fa-index .page-body > .row.center:last-of-type { + width: 54.125rem; + } +} +/* End grid override */ + + +/* Cleaning up spacing */ +#verify-reg-required .link.blue-text, +#verify-reg-required .grecaptcha-msg, +#verify-reg-required .panel > main > .full fieldset, +#verify-reg .grecaptcha-msg, +#verify-reg .panel > main > .full fieldset, +#email-ver-required .grecaptcha-msg, +#email-verification .grecaptcha-msg, +#email-ver-required fieldset, +#email-ver-required .panel > main > #verification-required-resend-code fieldset, +#oauth-two-factor .panel .full > fieldset, +#oauth-two-factor .panel > main > fieldset + .form-row, +#oauth-two-factor-methods .full, +#oauth-two-factor-methods .blue.button, +#oauth-authorize .panel > main > form > .form-row:first-of-type, +#oauth-passwordless .panel > main > .full > .form-row:first-of-type, +#oauth-register .panel > main > .full > .form-row:first-of-type, +#forgot-pwd .panel > main > .full fieldset, +#forgot-pwd .panel .grecaptcha-msg, +#change-pwd .panel > main .full > .form-row:first-of-type, +#acct-2fa-index .panel > main > fieldset { + margin-bottom: 0; +} +/* End spacing */ + + +/* Other page specific styles */ + +#acct-2fa-index .blue.button { + max-width: 25rem; + margin-left: auto; + margin-right: auto; + display: block; +} +#acct-2fa-index table { + margin-bottom: 3rem; +} +#acct-2fa-enable .d-flex { + display: block; +} +#acct-2fa-enable #qrcode { + padding-left: 0; +} +#acct-2fa-enable #qrcode img { + margin-left: auto; + margin-right: auto; +} +#acct-2fa-disable main > fieldset { + margin: 0; +} +#oauth-two-factor .panel form > .form-row:last-of-type a .fa { + display: none; /* hiding icon in button */ +} +#oauth-two-factor .panel > main > fieldset .form-row.mt-4 { + margin-top: 0; +} +#oauth-two-factor-methods input[type="radio"] { + vertical-align: text-top; +} +#oauth-two-factor-methods .full fieldset { + margin-top: 2rem; + margin-bottom: 0; +} +#oauth-two-factor-methods .full fieldset .form-row:last-child label { + padding-bottom: 0; +} +#oauth-two-factor-methods .radio-items .form-row label span:last-of-type { + margin-left: 1.875rem; +} +#oauth-device .push-top { + margin-top: 0; +} +#oauth-device #device-form > p { + text-align: center; +} +#oauth-device #user_code_container input[type="text"] { + color: var(--main-text-color); +} +#index-page ul li a { + font-family: var(--font-stack); +} +#oauth-passwordless .panel form .form-row:last-of-type p, +#oauth-register .panel form .form-row:last-of-type p, +#oauth-two-factor .panel form > .form-row:last-of-type, +#forgot-pwd .panel form > .form-row:last-of-type p, +#forgot-pwd-sent .panel main p:last-of-type, +#oauth-wait .panel main p:last-of-type { + margin-bottom: 0; + text-align: center; +} + +/* Account Index page */ +#acct-index .panel > main { + padding: 0; +} +#acct-index .user-details.mb-5 { + margin-bottom: 0; +} +#acct-index #edit-profile span { + font-size: inherit !important; +} +#acct-index #edit-profile span:after { + content: 'Edit'; + margin-left: .25em; +} +#acct-index .user-details > div { + margin: 0; + width: 100%; + max-width: 100%; + flex-basis: 100%; +} +#acct-index .user-details dl { + display: flex; + align-items: flex-start; + justify-content: space-between; + margin: 1.25rem 0; +} +#acct-index .user-details dt { + float: none; + font-weight: 500; + width: 40%; + margin: 0; +} +#acct-index .user-details dd { + width: 60%; + margin: 0; +} +#acct-index .panel { + padding-left: 1.5rem; + padding-right: 1.5rem; +} +#acct-index .panel:before { + content: ''; + display: block; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 4rem; + background-color: var(--main-accent-color); + border-radius: .625rem .625rem 0 0; +} +#acct-index .user-details .avatar > div:last-of-type { + color: var(--main-accent-color); + font-weight: 500; + font-size: 1.5rem; +} +#acct-index .user-details .avatar { + top: -2.25rem; + position: relative; + z-index: 2; + padding: 0; +} +#acct-index .user-details .avatar > div:first-of-type { + max-width: 7.5rem; + padding: 0; +} +#acct-index .user-details .avatar > div:first-of-type img { + border: .625rem solid #ffffff; +} +#acct-index .user-details > div:nth-of-type(2) > div { + padding: 0; +} +#acct-index .user-details > div:nth-of-type(2) > div > div { + margin: 0; + flex-basis: 100%; + width: 100%; + max-width: 100%; +} +#acct-index .user-details .panel-actions { + top: 3.5rem; + right: .25rem; +} +@media only screen and (max-width: 450px) { + #acct-index .user-details dl { + flex-direction: column; + } + #acct-index .user-details dt, + #acct-index .user-details dd { + width: 100%; + margin-bottom: .5em; + } +} +@media only screen and (min-width: 768px) { + #acct-index .panel:before { + width: 4rem; + height: 100%; + border-radius: .625rem 0 0 .625rem; + } + #acct-index .user-details { + display: block; + margin-left: 8rem; + } + #acct-index .user-details > div { + margin: 0; + width: 80%; + max-width: 80%; + } + #acct-index .user-details .avatar { + position: static; + } + #acct-index .user-details .avatar > div:first-of-type { + position: absolute; + left: .75rem; + top: calc(50% - 3.25rem); + width: 6.5rem; + } + #acct-index .user-details .avatar > div:first-of-type img { + border-width: .5rem; + } + #acct-index .user-details .avatar > div:last-of-type { + text-align: left; + } + #acct-index .user-details .panel-actions { + top: -0.25rem; + right: .5rem; + } + #acct-index .page-body > .row.center:last-of-type { + width: calc(83.33333333% - 30px); + } +} +@media only screen and (min-width: 992px) { + #acct-index .page-body > .row:first-of-type > .col-xs-12, + #acct-index .page-body > .row:first-of-type > .col-sm-12, + #acct-index .page-body > .row:first-of-type > .col-md-10, + #acct-index .page-body > .row:first-of-type > .col-lg-8 { + flex-basis: 54.125rem; + max-width: 54.125rem; + } + #acct-index .page-body > .row.center:last-of-type { + width: 54.125rem; + } + #acct-index .panel:before { + width: 6.25rem; + } + #acct-index .user-details { + margin-left: 13rem; + } + #acct-index .user-details .panel-actions { + padding: 0; + top: 2.25rem; + right: 2.25rem; + } + #acct-index .user-details .panel-actions .status, + #acct-index .user-details .panel-actions #edit-profile { + margin: 0; + } + #acct-index .user-details > div:first-of-type { + border: none; + width: auto; + flex-basis: auto; + } + #acct-index .user-details .avatar { + left: -.25rem; + } + #acct-index .user-details .avatar > div:first-of-type { + width: 8.75rem; + max-width: 8.75rem; + top: calc(50% - 4.5rem); + left: 1.875rem; + } + #acct-index .user-details .avatar > div:first-of-type img { + border-width: .75rem; + } +} +/*End Account Index page */ + + +/* specific page button/link overrides */ +#acct-2fa-enable .gray.button { + color: var(--main-accent-color) !important; + padding: .5em .75em !important; + border: 1px solid var(--main-accent-color) !important; + border-radius: .25em; + font-size: .75rem !important; + margin: 1rem auto; + display: block; + line-height: normal !important; + background: transparent !important; +} +#email-ver-required .link.blue-text { + display: block; + margin: 1rem auto; + text-decoration: underline; +} +#oauth-two-factor .panel form > .form-row:last-of-type a, +#verify-reg-required .panel .link.blue-text { + display: block; + margin: 1rem auto 0 auto; + text-decoration: underline; +} +#email-ver-required .link.blue-text .fa, +#verify-reg-required .panel .link.blue-text .fa { + display: none; /* hiding icon in link */ +} +#oauth-passwordless .panel form .form-row:last-of-type a, +#oauth-register .panel form .form-row:last-of-type a, +#forgot-pwd .panel form > .form-row:last-of-type a, +#forgot-pwd-sent .panel main p:last-of-type a, +#oauth-wait .panel main p:last-of-type a { + color: var(--main-accent-color) !important; + padding: .5em .75em; + border: 1px solid var(--main-accent-color) !important; + border-radius: .25em; + font-size: .75rem; + margin: 1rem auto 0 auto; + display: inline-block; + line-height: normal; + text-decoration: none; +} +#forgot-pwd-sent .panel main p:last-of-type a { + color: var(--main-accent-color) !important; + padding: .5em .75em; + border: 1px solid var(--main-accent-color) !important; + border-radius: .25em; + font-size: .75rem; + margin: 0 auto; + display: inline-block; + line-height: normal; + text-decoration: none; +} +#oauthstart-idp-link .blue.button { + height: auto !important; + margin-top: 0; +} +#oauthstart-idp-link .panel main div:last-of-type a { + display: block; + border: none; + margin-top: 0; + padding: 0; +} +/* End page specific buttons and links */ diff --git a/kickstart/kickstart.json b/kickstart/kickstart.json new file mode 100644 index 0000000..8614485 --- /dev/null +++ b/kickstart/kickstart.json @@ -0,0 +1,212 @@ +{ + "variables": { + "applicationId": "e9fdb985-9173-4e01-9d73-ac2d60d1dc8e", + "application2Id": "cb945244-5646-457c-80ff-35ef55cfd570", + "apiKey": "this_really_should_be_a_long_random_alphanumeric_value_but_this_still_works", + "asymmetricKeyId": "#{UUID()}", + "clientSecret": "super-secret-secret-that-should-be-regenerated-for-production", + "newThemeId": "#{UUID()}", + "defaultTenantId": "d7d09513-a3f5-401c-9685-34ab6c552453", + "adminEmail": "admin@example.com", + "adminPassword": "password", + "adminUserId": "00000000-0000-0000-0000-000000000001", + "userEmail": "richard@example.com", + "userPassword": "password", + "userUserId": "00000000-0000-0000-0000-000111111111", + "user2Email": "monica@example.com", + "user2Password": "password", + "user2UserId": "00000000-0000-0000-0000-001111111111", + "user3Email": "erlich@example.com", + "user3Password": "password", + "user3UserId": "00000000-0000-0000-0000-011111111111", + "user4Email": "gilfoyle@example.com", + "user4Password": "password", + "user4UserId": "00000000-0000-0000-0000-111111111111" + }, + "apiKeys": [ + { + "key": "#{apiKey}", + "description": "Unrestricted API key" + } + ], + "requests": [ + { + "method": "POST", + "url": "/api/key/generate/#{asymmetricKeyId}", + "tenantId": "#{defaultTenantId}", + "body": { + "key": { + "algorithm": "RS256", + "name": "For Example Android App", + "length": 2048 + } + } + }, + { + "method": "POST", + "url": "/api/user/registration/#{adminUserId}", + "body": { + "user": { + "email": "#{adminEmail}", + "password": "#{adminPassword}" + }, + "registration": { + "applicationId": "#{FUSIONAUTH_APPLICATION_ID}", + "roles": [ + "admin" + ] + }, + "skipRegistrationVerification": true + } + }, + { + "method": "POST", + "url": "/api/application/#{applicationId}", + "tenantId": "#{defaultTenantId}", + "body": { + "application": { + "name": "Example Android App", + "oauthConfiguration": { + "authorizedRedirectURLs": [ + "io.fusionauth.app:/oauth2redirect" + ], + "generateRefreshTokens": true, + "clientAuthenticationPolicy": "NotRequired", + "proofKeyForCodeExchangePolicy": "NotRequired", + "clientSecret": "#{clientSecret}", + "enabledGrants": [ + "authorization_code", + "refresh_token" + ], + "requireRegistration" : "true" + }, + "jwtConfiguration": { + "enabled": true, + "accessTokenKeyId": "#{asymmetricKeyId}", + "idTokenKeyId": "#{asymmetricKeyId}" + } + } + } + }, + { + "method": "POST", + "url": "/api/application/#{application2Id}", + "tenantId": "#{defaultTenantId}", + "body": { + "application": { + "name": "Secondary Application", + "oauthConfiguration": { + "authorizedRedirectURLs": [ + "io.fusionauth.app:/oauth2redirect" + ], + "generateRefreshTokens": true, + "clientAuthenticationPolicy": "NotRequired", + "proofKeyForCodeExchangePolicy": "NotRequired", + "clientSecret": "#{clientSecret}", + "enabledGrants": [ + "authorization_code", + "refresh_token" + ], + "requireRegistration" : "true" + }, + "jwtConfiguration": { + "enabled": true, + "accessTokenKeyId": "#{asymmetricKeyId}", + "idTokenKeyId": "#{asymmetricKeyId}" + } + } + } + }, + { + "method": "POST", + "url": "/api/user/registration/#{userUserId}", + "body": { + "user": { + "birthDate": "1985-11-23", + "email": "#{userEmail}", + "firstName": "Richard", + "lastName": "Hendricks", + "password": "#{userPassword}" + }, + "registration": { + "applicationId": "#{applicationId}" + } + } + }, + { + "method": "POST", + "url": "/api/user/registration/#{user2UserId}", + "body": { + "user": { + "birthDate": "1985-12-23", + "email": "#{user2Email}", + "firstName": "Monica", + "lastName": "Hall", + "password": "#{user2Password}" + }, + "registration": { + "applicationId": "#{applicationId}" + } + } + }, + { + "method": "POST", + "url": "/api/user/registration/#{user3UserId}", + "body": { + "user": { + "birthDate": "1985-12-23", + "email": "#{user3Email}", + "firstName": "Erlich", + "lastName": "Bachman", + "password": "#{user3Password}" + }, + "registration": { + "applicationId": "#{application2Id}" + } + } + }, + { + "method": "POST", + "url": "/api/user/registration/#{user4UserId}", + "body": { + "user": { + "birthDate": "1985-12-23", + "email": "#{user4Email}", + "password": "#{user4Password}" + }, + "registration": { + "applicationId": "#{applicationId}" + } + } + }, + { + "method": "POST", + "url": "/api/theme/#{newThemeId}", + "body": { + "sourceThemeId": "75a068fd-e94b-451a-9aeb-3ddb9a3b5987", + "theme": { + "name": "ChangeBank theme" + } + } + }, + { + "method": "PATCH", + "url": "/api/theme/#{newThemeId}", + "body": { + "theme": { + "stylesheet": "@{css/styles.css}" + } + } + }, + { + "method": "PATCH", + "url": "/api/tenant/#{defaultTenantId}", + "body": { + "tenant": { + "themeId": "#{newThemeId}", + "issuer": "http://10.0.2.2:9011" + } + } + } + ] +} From 93a69668be81a406faa8eb1d5e5d2371407863b0 Mon Sep 17 00:00:00 2001 From: Aaron Ritter Date: Fri, 8 Nov 2024 22:32:44 +0100 Subject: [PATCH 04/23] ci(e2e-test): add simple fusionauth test --- .github/workflows/e2e-test.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index dc0b0e0..454839a 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -52,6 +52,13 @@ jobs: brew install postgresql brew install --formula ./Formula/fusionauth-search.rb -v brew install --formula ./Formula/fusionauth-app.rb -v + brew services + sleep 20 + brew services stop fusionauth-search + brew services stop fusionauth-app + brew services + sleep 20 brew services start fusionauth-search brew services start fusionauth-app + sleep 20 brew services From ecf2c133e2c5cbad4ec9e49106495d9f2c434683 Mon Sep 17 00:00:00 2001 From: Aaron Ritter Date: Fri, 8 Nov 2024 22:36:53 +0100 Subject: [PATCH 05/23] ci(e2e-test): add simple fusionauth test --- .github/workflows/e2e-test.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index 454839a..be822ec 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -53,12 +53,12 @@ jobs: brew install --formula ./Formula/fusionauth-search.rb -v brew install --formula ./Formula/fusionauth-app.rb -v brew services - sleep 20 + brew services start postgresql + sleep 10 brew services stop fusionauth-search + sleep 10 brew services stop fusionauth-app + sleep 10 brew services - sleep 20 - brew services start fusionauth-search - brew services start fusionauth-app - sleep 20 + sleep 10 brew services From 5211b71e6a5e90d00ddc744069bb52bb59f7d37e Mon Sep 17 00:00:00 2001 From: Aaron Ritter Date: Fri, 8 Nov 2024 22:38:56 +0100 Subject: [PATCH 06/23] ci(e2e-test): add simple fusionauth test --- .github/workflows/e2e-test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index be822ec..3459657 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -55,9 +55,9 @@ jobs: brew services brew services start postgresql sleep 10 - brew services stop fusionauth-search + brew services start fusionauth-search sleep 10 - brew services stop fusionauth-app + brew services start fusionauth-app sleep 10 brew services sleep 10 From fca8ae19c5d359a391dfed9331f5158a718bd9e7 Mon Sep 17 00:00:00 2001 From: Aaron Ritter Date: Fri, 8 Nov 2024 22:45:18 +0100 Subject: [PATCH 07/23] ci(e2e-test): add simple fusionauth test --- .github/workflows/e2e-test.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index 3459657..5c1c7cd 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -62,3 +62,15 @@ jobs: brew services sleep 10 brew services + curl http://localhost:9011/api/status + sleep 10 + brew services stop fusionauth-app + sleep 10 + brew services stop fusionauth-search + sleep 10 + brew services stop postgresql + sleep 10 + brew services + sleep 10 + brew uninstall --formula ./Formula/fusionauth-app.rb -v + brew uninstall --formula ./Formula/fusionauth-search.rb -v From db4ba3dff6e814dfd9a5dba13a329e5f57552ff1 Mon Sep 17 00:00:00 2001 From: Aaron Ritter Date: Fri, 8 Nov 2024 22:52:17 +0100 Subject: [PATCH 08/23] ci(e2e-test): add simple fusionauth test --- .github/workflows/e2e-test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index 5c1c7cd..30683bb 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -64,6 +64,7 @@ jobs: brew services curl http://localhost:9011/api/status sleep 10 + cat /opt/homebrew/var/log/fusionauth/fusionauth-app.log brew services stop fusionauth-app sleep 10 brew services stop fusionauth-search From c72572f1ca2f0d5e507dc463aff27f633ae0dd65 Mon Sep 17 00:00:00 2001 From: Aaron Ritter Date: Fri, 15 Nov 2024 15:29:28 +0100 Subject: [PATCH 09/23] ci(e2e-test): extend test to silent install and use of kickstart --- .github/workflows/e2e-test.yml | 92 ++++++++++++++++++++++------------ 1 file changed, 61 insertions(+), 31 deletions(-) diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index 30683bb..8fe030d 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -32,6 +32,7 @@ jobs: fail-fast: false matrix: os: [ "macos-14", "macos-13" ] + postgresql-version: [ "14", "15", "16" ] # Steps represent a sequence of tasks that will be executed as part of the job steps: @@ -40,38 +41,67 @@ jobs: uses: actions/checkout@v4.2.2 # Install FusionAuth with brew. - - name: Install FusionAuth - env: - FUSIONAUTH_APP_KICKSTART_FILE: "kickstart/kickstart.json" - DATABASE_URL: "jdbc:postgresql://db:5432/fusionauth" - DATABASE_ROOT_USERNAME: "${{ github.actor }}" - DATABASE_ROOT_PASSWORD: "" - DATABASE_USERNAME: "fusionauth" - DATABASE_PASSWORD: "fusionauth" + - name: Install PostgreSQL + run: brew install postgresql@${{ matrix.postgresql-version }} -v + + # Start PostgreSQL with brew. + - name: Start PostgreSQL + run: brew services start postgresql@${{ matrix.postgresql-version }} -v + + # Add PostgreSQL to the PATH. + - name: Add PostgreSQL to the PATH + run: echo 'export PATH="/opt/homebrew/opt/postgresql@${{ matrix.postgresql-version }}/bin:$PATH"' >> $GITHUB_ENV + + # Add PostgreSQL fusionauth user with default password. + - name: Add PostgreSQL fusionauth user + run: psql --command="CREATE USER fusionauth PASSWORD 'fusionauth'" --command="\du" postgres + + # Add PostgreSQL fusionauth database. + - name: Add PostgreSQL fusionauth database + run: createdb --owner=fusionauth fusionauth + + # Install FusionAuth Search with brew. + - name: Install FusionAuth Search + run: brew install --formula ./Formula/fusionauth-search.rb -v + + # Install FusionAuth App with brew. + - name: Install FusionAuth App + run: brew install --formula ./Formula/fusionauth-app.rb -v + + # Configure FusionAuth App with silent mode. + - name: Configure FusionAuth App run: | - brew install postgresql - brew install --formula ./Formula/fusionauth-search.rb -v - brew install --formula ./Formula/fusionauth-app.rb -v - brew services - brew services start postgresql - sleep 10 - brew services start fusionauth-search - sleep 10 - brew services start fusionauth-app - sleep 10 - brew services - sleep 10 - brew services + echo "" >> /opt/homebrew/etc/fusionauth/fusionauth.properties + echo "fusionauth-app.kickstart.file=kickstart/kickstart.json" >> /opt/homebrew/etc/fusionauth/fusionauth.properties + echo "fusionauth-app.silent-mode=true" >> /opt/homebrew/etc/fusionauth/fusionauth.properties + + # Start FusionAuth Search. + - name: Start FusionAuth Search + run: brew services start fusionauth-search -v + + # Start FusionAuth App. + - name: Start FusionAuth App + run: brew services start fusionauth-app -v + + # Wait for FusionAuth App to start and run Quickstart. + - name: Wait for FusionAuth App to start and configure + run: | + sleep 20 curl http://localhost:9011/api/status sleep 10 cat /opt/homebrew/var/log/fusionauth/fusionauth-app.log - brew services stop fusionauth-app - sleep 10 - brew services stop fusionauth-search - sleep 10 - brew services stop postgresql - sleep 10 - brew services - sleep 10 - brew uninstall --formula ./Formula/fusionauth-app.rb -v - brew uninstall --formula ./Formula/fusionauth-search.rb -v + + # Perform E2E test. + # tbd + + # Stop FusionAuth App. + - name: Stop FusionAuth App + run: brew services stop fusionauth-app -v + + # Stop FusionAuth Search. + - name: Stop FusionAuth Search + run: brew services stop fusionauth-search -v + + # Stop PostgreSQL. + - name: Stop PostgreSQL + run: brew services stop postgresql@${{ matrix.postgresql-version }} -v \ No newline at end of file From 285f1fecef5f4997062696cd547510e454fe9eae Mon Sep 17 00:00:00 2001 From: Aaron Ritter Date: Fri, 15 Nov 2024 15:55:31 +0100 Subject: [PATCH 10/23] ci(e2e-test): add dynamic brew prefixes --- .github/workflows/e2e-test.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index 8fe030d..0ddc96c 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -50,7 +50,7 @@ jobs: # Add PostgreSQL to the PATH. - name: Add PostgreSQL to the PATH - run: echo 'export PATH="/opt/homebrew/opt/postgresql@${{ matrix.postgresql-version }}/bin:$PATH"' >> $GITHUB_ENV + run: echo "$(brew --prefix postgresql@${{matrix.postgresql-version }})/bin" >> $GITHUB_PATH # Add PostgreSQL fusionauth user with default password. - name: Add PostgreSQL fusionauth user @@ -71,9 +71,9 @@ jobs: # Configure FusionAuth App with silent mode. - name: Configure FusionAuth App run: | - echo "" >> /opt/homebrew/etc/fusionauth/fusionauth.properties - echo "fusionauth-app.kickstart.file=kickstart/kickstart.json" >> /opt/homebrew/etc/fusionauth/fusionauth.properties - echo "fusionauth-app.silent-mode=true" >> /opt/homebrew/etc/fusionauth/fusionauth.properties + echo "" >> $(brew --prefix)/etc/fusionauth/fusionauth.properties + echo "fusionauth-app.kickstart.file=kickstart/kickstart.json" >> $(brew --prefix)/etc/fusionauth/fusionauth.properties + echo "fusionauth-app.silent-mode=true" >> $(brew --prefix)/etc/fusionauth/fusionauth.properties # Start FusionAuth Search. - name: Start FusionAuth Search From efe728a970f00bbb778f1322b5f8c10452d26350 Mon Sep 17 00:00:00 2001 From: Aaron Ritter Date: Fri, 15 Nov 2024 16:02:11 +0100 Subject: [PATCH 11/23] ci(e2e-test): split tests, add more relative prefixes --- .github/workflows/e2e-test.yml | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index 0ddc96c..b0c3624 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -74,6 +74,7 @@ jobs: echo "" >> $(brew --prefix)/etc/fusionauth/fusionauth.properties echo "fusionauth-app.kickstart.file=kickstart/kickstart.json" >> $(brew --prefix)/etc/fusionauth/fusionauth.properties echo "fusionauth-app.silent-mode=true" >> $(brew --prefix)/etc/fusionauth/fusionauth.properties + cat $(brew --prefix)/etc/fusionauth/fusionauth.properties # Start FusionAuth Search. - name: Start FusionAuth Search @@ -85,11 +86,15 @@ jobs: # Wait for FusionAuth App to start and run Quickstart. - name: Wait for FusionAuth App to start and configure - run: | - sleep 20 - curl http://localhost:9011/api/status - sleep 10 - cat /opt/homebrew/var/log/fusionauth/fusionauth-app.log + run: sleep 30 + + # Read FusionAuth App logs. + - name: Read FusionAuth App logs + run: cat $(brew --prefix)/var/log/fusionauth/fusionauth-app.log + + # Connect to FusionAuth App. + - name: Connect to FusionAuth App + run: curl http://localhost:9011/api/status # Perform E2E test. # tbd From 63df60a0379d404c928097b021e64200b7a5e5c6 Mon Sep 17 00:00:00 2001 From: Aaron Ritter Date: Fri, 15 Nov 2024 16:31:47 +0100 Subject: [PATCH 12/23] ci(e2e-test): add longer wait time for elasticsearch startup --- .github/workflows/e2e-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index b0c3624..1fb12bd 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -86,7 +86,7 @@ jobs: # Wait for FusionAuth App to start and run Quickstart. - name: Wait for FusionAuth App to start and configure - run: sleep 30 + run: sleep 120 # Read FusionAuth App logs. - name: Read FusionAuth App logs From 22f798010c512e0a36a0d04a7d9302eb758b534c Mon Sep 17 00:00:00 2001 From: Aaron Ritter Date: Fri, 15 Nov 2024 17:52:30 +0100 Subject: [PATCH 13/23] ci(e2e-test): check OK status instead of random sleep --- .github/workflows/e2e-test.yml | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index 1fb12bd..3ace16b 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -84,9 +84,20 @@ jobs: - name: Start FusionAuth App run: brew services start fusionauth-app -v - # Wait for FusionAuth App to start and run Quickstart. - - name: Wait for FusionAuth App to start and configure - run: sleep 120 + # Check 10 times with increasing wait times + # Continue if FusionAuth status is OK or fail at the end. + - name: Check FusionAuth status + run: | + for i in {1..10}; do + if curl -s http://localhost:9011/api/status | grep -q "OK"; then + echo "FusionAuth is up and running." + exit 0 + break + else + echo "FusionAuth is not up and running. Waiting for $(expr 10 \* $i) seconds." + sleep $(expr 10 \* $i) + fi + done # Read FusionAuth App logs. - name: Read FusionAuth App logs From 22111cfb7770a14ec54642a31d4e790434c7e606 Mon Sep 17 00:00:00 2001 From: Aaron Ritter Date: Fri, 15 Nov 2024 18:01:42 +0100 Subject: [PATCH 14/23] ci(e2e-test): check OK status case insensitive --- .github/workflows/e2e-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index 3ace16b..1cf3fbe 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -89,7 +89,7 @@ jobs: - name: Check FusionAuth status run: | for i in {1..10}; do - if curl -s http://localhost:9011/api/status | grep -q "OK"; then + if curl -s http://localhost:9011/api/status | grep -qi "ok"; then echo "FusionAuth is up and running." exit 0 break From a211972a468f0fa15833382721e1dc83412c30e7 Mon Sep 17 00:00:00 2001 From: Aaron Ritter Date: Fri, 15 Nov 2024 18:14:33 +0100 Subject: [PATCH 15/23] ci(e2e-test): use full path for kickstart --- .github/workflows/e2e-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index 1cf3fbe..aea406b 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -72,7 +72,7 @@ jobs: - name: Configure FusionAuth App run: | echo "" >> $(brew --prefix)/etc/fusionauth/fusionauth.properties - echo "fusionauth-app.kickstart.file=kickstart/kickstart.json" >> $(brew --prefix)/etc/fusionauth/fusionauth.properties + echo "fusionauth-app.kickstart.file=$(echo $GITHUB_WORKSPACE)/kickstart/kickstart.json" >> $(brew --prefix)/etc/fusionauth/fusionauth.properties echo "fusionauth-app.silent-mode=true" >> $(brew --prefix)/etc/fusionauth/fusionauth.properties cat $(brew --prefix)/etc/fusionauth/fusionauth.properties From 8f05d9b812df963780e1e0d600824775d133ce8b Mon Sep 17 00:00:00 2001 From: Aaron Ritter Date: Fri, 15 Nov 2024 18:30:58 +0100 Subject: [PATCH 16/23] ci(e2e-test): check for kickstart completion --- .github/workflows/e2e-test.yml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index aea406b..0aeec87 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -84,7 +84,7 @@ jobs: - name: Start FusionAuth App run: brew services start fusionauth-app -v - # Check 10 times with increasing wait times + # Check FusionAuth status 10 times with increasing wait times # Continue if FusionAuth status is OK or fail at the end. - name: Check FusionAuth status run: | @@ -99,6 +99,22 @@ jobs: fi done + # Check KickstartRunner execution 10 times with increasing wait times + # Continue if KickstartRunner execution is OK or fail at the end. + # TODO - use webhook instead https://fusionauth.io/docs/extend/events-and-webhooks/events/kickstart-success + - name: Check KickstartRunner execution + run: | + for i in {1..10}; do + if cat $(brew --prefix)/var/log/fusionauth/fusionauth-app.log | grep -q "KickstartRunner" | grep -q "Summary"; then + echo "KickstartRunner execution is OK." + exit 0 + break + else + echo "KickstartRunner execution is not OK. Waiting for $(expr 10 \* $i) seconds." + sleep $(expr 10 \* $i) + fi + done + # Read FusionAuth App logs. - name: Read FusionAuth App logs run: cat $(brew --prefix)/var/log/fusionauth/fusionauth-app.log From b9264730e6aa06dd70234de2a0e51f1bfc3ee05c Mon Sep 17 00:00:00 2001 From: Aaron Ritter Date: Fri, 15 Nov 2024 18:35:22 +0100 Subject: [PATCH 17/23] ci(e2e-test): check for kickstart completion first grep without quiet --- .github/workflows/e2e-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index 0aeec87..702fa61 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -105,7 +105,7 @@ jobs: - name: Check KickstartRunner execution run: | for i in {1..10}; do - if cat $(brew --prefix)/var/log/fusionauth/fusionauth-app.log | grep -q "KickstartRunner" | grep -q "Summary"; then + if cat $(brew --prefix)/var/log/fusionauth/fusionauth-app.log | grep "KickstartRunner" | grep -q "Summary"; then echo "KickstartRunner execution is OK." exit 0 break From 91594043624aaa17b222a04639d032289aadc1f6 Mon Sep 17 00:00:00 2001 From: Aaron Ritter Date: Fri, 15 Nov 2024 18:50:47 +0100 Subject: [PATCH 18/23] ci(e2e-test): brew services list and exit 1 for failing status checks --- .github/workflows/e2e-test.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index 702fa61..f60ac42 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -84,6 +84,10 @@ jobs: - name: Start FusionAuth App run: brew services start fusionauth-app -v + # Check Brew services status. + - name: Check Brew services status + run: brew services list + # Check FusionAuth status 10 times with increasing wait times # Continue if FusionAuth status is OK or fail at the end. - name: Check FusionAuth status @@ -92,12 +96,12 @@ jobs: if curl -s http://localhost:9011/api/status | grep -qi "ok"; then echo "FusionAuth is up and running." exit 0 - break else echo "FusionAuth is not up and running. Waiting for $(expr 10 \* $i) seconds." sleep $(expr 10 \* $i) fi done + exit 1 # Check KickstartRunner execution 10 times with increasing wait times # Continue if KickstartRunner execution is OK or fail at the end. @@ -108,12 +112,12 @@ jobs: if cat $(brew --prefix)/var/log/fusionauth/fusionauth-app.log | grep "KickstartRunner" | grep -q "Summary"; then echo "KickstartRunner execution is OK." exit 0 - break else echo "KickstartRunner execution is not OK. Waiting for $(expr 10 \* $i) seconds." sleep $(expr 10 \* $i) fi done + exit 1 # Read FusionAuth App logs. - name: Read FusionAuth App logs From 06caf44b479bfd76e964f91573d087bb3231f3a9 Mon Sep 17 00:00:00 2001 From: Aaron Ritter Date: Sat, 16 Nov 2024 15:23:04 +0100 Subject: [PATCH 19/23] ci(e2e-test): print log if start is failing --- .github/workflows/e2e-test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index f60ac42..9f54300 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -101,6 +101,7 @@ jobs: sleep $(expr 10 \* $i) fi done + cat $(brew --prefix)/var/log/fusionauth/fusionauth-app.log exit 1 # Check KickstartRunner execution 10 times with increasing wait times @@ -117,6 +118,7 @@ jobs: sleep $(expr 10 \* $i) fi done + cat $(brew --prefix)/var/log/fusionauth/fusionauth-app.log exit 1 # Read FusionAuth App logs. From ee509031896e019cec1e650511e01a18bc3c688f Mon Sep 17 00:00:00 2001 From: Aaron Ritter Date: Sun, 17 Nov 2024 20:34:13 +0100 Subject: [PATCH 20/23] feat(fusionauth-app): add debug due to inconsistent ci behaviors --- Formula/fusionauth-app.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Formula/fusionauth-app.rb b/Formula/fusionauth-app.rb index 4f70fdb..75964b3 100644 --- a/Formula/fusionauth-app.rb +++ b/Formula/fusionauth-app.rb @@ -26,7 +26,7 @@ def caveats end service do - run ["sh", "start.sh"] + run ["sh", "start.sh --debug"] keep_alive true working_dir opt_prefix/"fusionauth-app/bin" log_path var/"log/fusionauth/fusionauth-app.log" From dfb26d4b13b60cf03253545edb57c51e7fc70866 Mon Sep 17 00:00:00 2001 From: Aaron Ritter Date: Sun, 17 Nov 2024 20:50:24 +0100 Subject: [PATCH 21/23] refactor(fusionauth-app): fix format --- Formula/fusionauth-app.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Formula/fusionauth-app.rb b/Formula/fusionauth-app.rb index 75964b3..8e31e2f 100644 --- a/Formula/fusionauth-app.rb +++ b/Formula/fusionauth-app.rb @@ -26,7 +26,7 @@ def caveats end service do - run ["sh", "start.sh --debug"] + run ["sh", "start.sh", "--debug"] keep_alive true working_dir opt_prefix/"fusionauth-app/bin" log_path var/"log/fusionauth/fusionauth-app.log" From 5b227c0875b4e97c4553f7d2b4a0e8cac6157e71 Mon Sep 17 00:00:00 2001 From: Aaron Ritter Date: Wed, 20 Nov 2024 00:34:50 +0100 Subject: [PATCH 22/23] refactor(fusionauth-app): add shell debug to start --- Formula/fusionauth-app.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Formula/fusionauth-app.rb b/Formula/fusionauth-app.rb index 8e31e2f..1c4c8ff 100644 --- a/Formula/fusionauth-app.rb +++ b/Formula/fusionauth-app.rb @@ -26,7 +26,7 @@ def caveats end service do - run ["sh", "start.sh", "--debug"] + run ["sh", "-x", "start.sh", "--debug"] keep_alive true working_dir opt_prefix/"fusionauth-app/bin" log_path var/"log/fusionauth/fusionauth-app.log" From 56ea820186d705fc5635b22e3c7e02a603e1f03c Mon Sep 17 00:00:00 2001 From: Aaron Ritter Date: Wed, 11 Dec 2024 21:16:53 +0100 Subject: [PATCH 23/23] ci(e2e-test): remove fusionauth-search --- .github/workflows/e2e-test.yml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index 9f54300..952a417 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -60,10 +60,6 @@ jobs: - name: Add PostgreSQL fusionauth database run: createdb --owner=fusionauth fusionauth - # Install FusionAuth Search with brew. - - name: Install FusionAuth Search - run: brew install --formula ./Formula/fusionauth-search.rb -v - # Install FusionAuth App with brew. - name: Install FusionAuth App run: brew install --formula ./Formula/fusionauth-app.rb -v @@ -76,10 +72,6 @@ jobs: echo "fusionauth-app.silent-mode=true" >> $(brew --prefix)/etc/fusionauth/fusionauth.properties cat $(brew --prefix)/etc/fusionauth/fusionauth.properties - # Start FusionAuth Search. - - name: Start FusionAuth Search - run: brew services start fusionauth-search -v - # Start FusionAuth App. - name: Start FusionAuth App run: brew services start fusionauth-app -v @@ -136,10 +128,6 @@ jobs: - name: Stop FusionAuth App run: brew services stop fusionauth-app -v - # Stop FusionAuth Search. - - name: Stop FusionAuth Search - run: brew services stop fusionauth-search -v - # Stop PostgreSQL. - name: Stop PostgreSQL run: brew services stop postgresql@${{ matrix.postgresql-version }} -v \ No newline at end of file