From e30ad5f527eebcfd6f0e1ebbfafeccb365a63f43 Mon Sep 17 00:00:00 2001 From: JT Date: Mon, 16 Mar 2026 09:01:56 -0500 Subject: [PATCH 01/25] Created README.md Based on current project status., subject to change. --- README.md | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..75c0b5c --- /dev/null +++ b/README.md @@ -0,0 +1,118 @@ +# HyperLink (Spring Unit Project) + +HyperLink is a Spring Boot + Thymeleaf web app for creating a personal "link in bio" profile page. +Users can register, sign in, edit their profile, and publish shareable social links. + +## What it does + +- User registration and login with Spring Security +- Password hashing with BCrypt +- Profile dashboard for editing: + - display name + - age/pronouns/bio + - profile picture URL + - theme selection + - social links +- Public profile page by user ID (`/profile/{id}`) +- Seeded starter users loaded on first run + +## Tech stack + +- Java 25 (from `pom.xml`) +- Spring Boot 4.0.3 +- Spring MVC + Thymeleaf +- Spring Data JPA +- Spring Security +- PostgreSQL (runtime) +- Maven Wrapper (`./mvnw`) + +## Project structure + +```text +src/main/java/com/basecamp/HyprLink + config/ + DataLoader.java + controller/ + AuthController.java + DashboardController.java + ProfileController.java + entity/ + User.java + SocialLink.java + repository/ + UserRepository.java + security/ + SecurityConfig.java + CustomUserDetailService.java + +src/main/resources + templates/ + index.html + dashboard.html + profile.html + auth/login.html + auth/register.html + static/css/ + landing.css + auth.css + default.css +``` + +## Prerequisites + +- JDK 25 installed +- PostgreSQL running locally +- A database named `quest-log` +- (Optional) IntelliJ IDEA + +## Configuration + +Current DB settings are in `src/main/resources/application.properties`: + +```properties +spring.datasource.url=jdbc:postgresql://localhost:5432/quest-log +spring.datasource.username=postgres +spring.datasource.password= +spring.jpa.hibernate.ddl-auto=create +``` + +Update `username`/`password` as needed for your local PostgreSQL setup. + +## Run locally + +```bash +./mvnw spring-boot:run +``` + +Then open your browser and start with: + +- `http://localhost:8080/login` +- `http://localhost:8080/register` + +## Test + +```bash +./mvnw test +``` + +## Seeded demo users + +`DataLoader` creates these users on first startup (when DB is empty): + +- `johndoe` / `password123` +- `janesmith` / `password123` + +## Main routes + +- `GET /login` - login page +- `GET /register` - registration form +- `POST /register` - create account +- `GET /dashboard` - authenticated profile editor +- `POST /dashboard/save` - save profile changes +- `GET /profile/{id}` - public profile page + +## Notes + +- `spring.jpa.hibernate.ddl-auto=create` recreates schema on startup; switch to a safer value for persistent data. +- `profile.html` loads CSS by theme name (`/css/{theme}.css`). The repository currently includes `default.css`. + From 4053e02b7a51220272c56e783b3bb3da375f27cb Mon Sep 17 00:00:00 2001 From: JT Date: Mon, 16 Mar 2026 15:17:34 -0500 Subject: [PATCH 02/25] Use env vars for DB config and update ddl-auto Setting up for DB deployment. Using environment variables for database credentials. --- src/main/resources/application.properties | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index d02e779..e3a6d82 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,7 +1,7 @@ spring.application.name=spring-unit-project -spring.datasource.url=jdbc:postgresql://localhost:5432/quest-log -spring.datasource.username=postgres -spring.datasource.password= +spring.datasource.url=${DB_URL} +spring.datasource.username=${DB_USERNAME} +spring.datasource.password=${DB_PASSWORD} -spring.jpa.hibernate.ddl-auto=create \ No newline at end of file +spring.jpa.hibernate.ddl-auto=update \ No newline at end of file From 467c33f62a994fe1670e9e48fb88398f97ff1ccb Mon Sep 17 00:00:00 2001 From: JT Date: Mon, 16 Mar 2026 15:20:10 -0500 Subject: [PATCH 03/25] Create Dockerfile Created dockerfile for deployment. Creates the correct envioment for the project to run in on after deployment. --- Dockerfile | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..50ce2f6 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM eclipse-temurin:25-jdk AS build +WORKDIR /app +COPY mvnw . +COPY .mvn .mvn +COPY pom.xml . +COPY src src +RUN chmod +x ./mvnw +RUN ./mvnw clean package -DskipTests + +FROM eclipse-temurin:25-jre +WORKDIR /app +COPY --from=build /app/target/HyprLink-0.0.1-SNAPSHOT.jar app.jar +EXPOSE 8080 +ENTRYPOINT ["java", "-jar", "app.jar"] \ No newline at end of file From 7dfe75d4b114c81c3ef8ca7063d52a0faff9eb3c Mon Sep 17 00:00:00 2001 From: Aleah Date: Mon, 16 Mar 2026 19:43:41 -0500 Subject: [PATCH 04/25] styling for login & register page, added logo for landing --- .DS_Store | Bin 0 -> 8196 bytes src/.DS_Store | Bin 0 -> 8196 bytes src/main/.DS_Store | Bin 0 -> 8196 bytes src/main/resources/.DS_Store | Bin 0 -> 8196 bytes src/main/resources/static/.DS_Store | Bin 0 -> 8196 bytes src/main/resources/static/css/landing.css | 126 ++----------- src/main/resources/static/css/login.css | 127 +++++++++++++ src/main/resources/static/css/register.css | 135 ++++++++++++++ src/main/resources/templates/auth/login.html | 62 ++++--- .../resources/templates/auth/register.html | 119 +++++++----- src/main/resources/templates/index.html | 172 ++++++++++++++++++ src/main/resources/templates/landing.html | 169 ----------------- 12 files changed, 558 insertions(+), 352 deletions(-) create mode 100644 .DS_Store create mode 100644 src/.DS_Store create mode 100644 src/main/.DS_Store create mode 100644 src/main/resources/.DS_Store create mode 100644 src/main/resources/static/.DS_Store create mode 100644 src/main/resources/static/css/login.css create mode 100644 src/main/resources/static/css/register.css diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..98451897b49f708ccea4b02d02dd534820059a91 GIT binary patch literal 8196 zcmeHMU2GIp6u#fIzzh>$s4XqXvMVc4p@gLr1X0*_+sIGL-?sFJpJjJvq!XqyWoLGm z+SJr171YERjf(na)Cbfk`1536LH{KE$me*_@P zj{tt5zQ#L5V*yPDbX-sxp#ot_RG1<-VnCRaJQnCB13E6KFlPu39|)d|;DiGI=`?@L zS7%5H8n$5s!U#-{08gJP=CT6I=gQZg-!0Si5{XNYs;XzqoF&haRryeQ&?%?AtXFi~ zvV{Yj>vkL~SLtVS`%R;q(P~qU?PX2dDEJ1ZZjj2sUenf{a+_1Mb=S8|ivd}Ym5f$D zI@;2_wkfu;d8{cmx~VzQ6l+*8xR@5>yshHU2<@%{+b05<0ae@;$1W4Wc2 zxQwVu=Z1wdmn+UFvsHCYq_?ks;K0F*rWIXdpJ8P^vt+bqJ;Tjt^IY<6d)~446pRx2 z)SGv#;*d=v^Yd9NUnFIt)w0s&<3c-Ma4c(&o7*!_K;al+$ce4;5seFLsj@KXL{ zeJ0H>v}*V>b`Nu7cfV0^i7LvOx%JWe8&@|!_;9jgd)MBJ^R)Rjs#>?8w`96z&NBM5 zZr-qU(>~f$Hg#`sfWm2e=3}N&P?Y&->bA2(#>JY3g^TW89Ek{>Nt?C1IXCIhP0uO#(b%;#66xntwd%T|lhcbD z7S=@4ksevQKsK6bmrTMqeFFh?IbK0oJh@VI^%FHU1C?*FYH(L8~dGIV}GL>vr&u1ScVm7!~kM!703eSMVxM<8{1=ckv$H$EWxlU*J5x#3lTQ zEBFal@h7g~FG-PVq{UK1S|Y8G8l{!eDrt+fRoW))l?J4YG$?$KDv5Sz!Y98YjSvY| z4NA1&)=xTf^F)h2x^4T8ot?LBqWv(Jr`A2Sbqnfa%T}&w+4xB71ONqID-gXN`aasH ziD%qDfSs#Q}i3U-USMAeugn6_wpRO6W?|5q6Q znq6Su6UMI+#{WSTWYi;uj5xA6`>z*(Hb$N0oY{5SXxm+|ur819;iVf-5S! literal 0 HcmV?d00001 diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..afbc4b6a03068e37fd811a6596f8121cbb379932 GIT binary patch literal 8196 zcmeHMU2GIp6u#fIzzh>$s4XqXvMVc4p@gLr1X0*_+sIGL-?sFJpJjJvq!XqyWoLGm z+SJr1GvB$l_m(k+wxYh8u?EJNOqEkjrRElekMnv{kpf9IQII{$mEGZ-<>ZL}=qBw@ z5Jn)3Kp25A0$~Kg2;2z~pfj5n`8Mai7!BJn0$~L1$q4ZMAx4$cWI)FS^|uac{3`%a zeg*Ig^)=oh8VhJLpyPtl2o(rZqQVrx6$8SYibiG945~Ql?Y13!OGh|ghkREi(X)o&) z-L`CDALqIq$I4au+1y^!C}*_Vlw*5Y(>4mefvFp$vcK1~b*J3s6m8x0ZPQ{vR%9ik z)sK$0G_P)ot#2M{ij8h)PBg_@)~p*FQ{=k%s*QUxN30>+IW9avunVwRH+XbnvOAVr zN{Q!)s&vJj%N2K&nW{P~(%aWRuy21x(~7RK$FQ=VSu)zQp5bP+IWBp(HSgHF3Py>% z>diY=amc2Tx%sS>FOss+YFTOXNuixDIF_}`aZS&3?EXH_IOg#&KGBq+z5&-McqxCf zK9lAbS~Yx)ox|MN-D?zFqKa~6c7620#+A(vKbq{=+O_-Q9Bpoms@BcxEt#&FvyA?% zn>TFTv=8@`P2C$Dpn%$*`Gjc{6lE@&y6x*QpYqw^VceP%Ff0WJMDhWV>B*Iry20)rz9I z-ACxF3sZINI$6>59xIzOtU&b0MiOoBEeVeUVclj~>B~DqL*$GrWRX<6ENfpK{|R z^J^mMNRO;tAREoJOD3V5zJUO{9IxOko?I@v@y`a6e$S6_Jed&UT0tgSey&AWg0-=2 z>>wLvBkUx5k-fn_WM|nqcAkC9F0m`@7xpXrjs4E9vAJ1~GebQm}c3q_Pr#t5FmGk6xqaS|`!6}*bmcpY!zUA%|)@hLvX7dVeEaS1=- z3Vy;>{E2J$OH!m7X`vL67D>ybMrpaULfRy4mbOT{r2#1;4GJHmN~#^0@X7B;BSa>4 z4obD)r{(AzGdsS?VWdQs{JsVC)a(ob@S?DOO~%{S^rq;1Ox?QDSv+4DB42_VH~@jh9WI1$*9fXi7Q{^+7GDls5XsKMzBlO#;7)((nYW< zqAR1CL|H1>M6_Aeswf8)-*#&Mnw*a1;fMVvJBe zj;C<~r|=w}$4hvbuznh^5z^nn+js{b;4IGJV|?Oc{u_LU%lP>Q6n9NUG5(m0;!?U` zTaJC0WEIp;RlmEqD&bB8zyEjK{{8>%ays-Tj6fKHDG@+*d%C@iM7P`Y_+2|j^$=BF xxZb#+z6mu`9s-D;_=h3&W2DM$k^vnTlq6LC_lJOtcFRAt!}C8p|L>*q|6kcUXAS@W literal 0 HcmV?d00001 diff --git a/src/main/.DS_Store b/src/main/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..93a279b518fb05584352d3ae76842780429979d7 GIT binary patch literal 8196 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/static/css/landing.css b/src/main/resources/static/css/landing.css index 5f5e289..25c7e88 100644 --- a/src/main/resources/static/css/landing.css +++ b/src/main/resources/static/css/landing.css @@ -42,6 +42,19 @@ body { align-items: center; } + +.nav-left a { + display: inline-flex; + align-items: center; + gap: 0.5rem; +} + +.nav-left svg { + width: 30px; + height: 30px; + display: block; +} + .nav-center { justify-content: center; justify-self: center; @@ -751,119 +764,6 @@ footer { - -/* SIGN UP / LOGIN PAGES */ -.signup-section, -.login-section { - display: flex; - padding: 2rem 1rem 8rem 1rem; - flex-direction: column; - align-items: center; - text-align: center; - margin-top: 4rem; -} - - -.signup-form, -.login-form { - padding: 4rem; - display: flex; - flex-direction: column; - gap: 1rem; - justify-content: center; - width: min(90vw, 390px); - min-height: 29rem; - border: 2px solid #dbeafe; - border-radius: 1rem; - background: linear-gradient(135deg, #f8fbff 0%, #eef7ff 100%); - box-shadow: 0 16px 36px rgba(59, 130, 246, 0.12); - text-align: center; - margin: 0; -} - -.login-form { - padding-top: 0; -} - -.signup-form h1, -.login-form h1 { - margin: 0; - font-size: 1.5rem; - color: #1a1a2e; -} - -.signup-form h2 a, -.login-form h2 a { - margin: 0; - font-size: 1.75rem; - color: #0f172a; - text-decoration: none; -} - -.signup-form h2 a:hover, -.login-form h2 a:hover { - color: #3b82f6; -} - -.signup-form p, -.login-form p { - color: #475569; - margin: 0; -} - -.signup-form input, -.login-form input { - padding: 0.75rem; - width: 100%; - box-sizing: border-box; - font-size: 1rem; - border: 1px solid #cbd5e1; - border-radius: .5rem; - background-color: #ffffff; - transition: border-color 0.2s ease, box-shadow 0.2s ease; -} - -.signup-form input:focus, -.login-form input:focus { - outline: none; - border-color: #3b82f6; - box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15); -} - -.signup-form #signup-btn, -.login-form #login-btn { - background: linear-gradient(135deg, #3b82f6 0%, #0ea5e9 100%); - color: white; - border: none; - border-radius: .5rem; - padding: 0.75rem 1.5rem; - font-size: 1rem; - cursor: pointer; - transition: transform 0.2s ease, box-shadow 0.2s ease; -} - -.signup-form #signup-btn:hover, -.login-form #login-btn:hover { - transform: translateY(-1px); - box-shadow: 0 8px 20px rgba(59, 130, 246, 0.25); -} - -.signup-form > a, -.login-form > a { - color: #1e293b; - font-size: 0.875rem; - text-decoration: none; -} - -.signup-form > a:hover, -.login-form > a:hover { - color: #3b82f6; - text-decoration: underline; -} - - - - /* MOBILE FRIENDLY STYLING */ @media (max-width: 900px) { .nav-left { diff --git a/src/main/resources/static/css/login.css b/src/main/resources/static/css/login.css new file mode 100644 index 0000000..0ebf720 --- /dev/null +++ b/src/main/resources/static/css/login.css @@ -0,0 +1,127 @@ +/* LOGIN PAGE */ +body { + font-family: Arial, sans-serif; + margin: 0; + padding: 0; + display: flex; + flex-direction: column; + min-height: 100vh; + background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%); +} + +.login-section { + display: flex; + padding: 2rem 1rem 8rem 1rem; + flex-direction: column; + align-items: center; + text-align: center; + margin-top: 4rem; +} + + +.login-form { + padding: 4rem; + padding-top: 4rem; + display: flex; + flex-direction: column; + gap: 1rem; + justify-content: center; + width: min(90vw, 390px); + min-height: 29rem; + border: 2px solid #dbeafe; + border-radius: 1rem; + background: linear-gradient(135deg, #f8fbff 0%, #eef7ff 100%); + box-shadow: 0 16px 36px rgba(59, 130, 246, 0.12); + text-align: center; + margin: 0; +} + +.login-form p { + padding-bottom: 2rem; +} + +.login-form h1 { + margin: 0; + font-size: 1.5rem; + color: #1a1a2e; +} + +.login-form h2 a { + margin: 0; + font-size: 1.75rem; + color: #0f172a; + text-decoration: none; +} + +.login-form h2 a:hover { + color: #3b82f6; +} + +.login-form p { + color: #475569; + margin: 0; +} + +.login-form input { + padding: 0.75rem; + width: 100%; + box-sizing: border-box; + font-size: 1rem; + border: 1px solid #cbd5e1; + border-radius: .5rem; + background-color: #ffffff; + transition: border-color 0.2s ease, box-shadow 0.2s ease; +} + +.login-form input:focus { + outline: none; + border-color: #3b82f6; + box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15); +} + +.login-form #login-btn { + background: linear-gradient(135deg, #3b82f6 0%, #0ea5e9 100%); + color: white; + border: none; + border-radius: .5rem; + padding: 0.75rem 1.5rem; + font-size: 1rem; + cursor: pointer; + transition: transform 0.2s ease, box-shadow 0.2s ease; +} + +.login-form #login-btn:hover { + transform: translateY(-1px); + box-shadow: 0 8px 20px rgba(59, 130, 246, 0.25); +} + +.login-form > a { + color: #1e293b; + font-size: 0.875rem; + text-decoration: none; +} + +.login-form > a:hover { + color: #3b82f6; + text-decoration: underline; +} + + + + +/* FOOTER SECTION */ +footer { + background-color: #f0f3f6; + text-align: center; + padding: 1rem; + font-size: 0.875rem; + color: #555; + margin-top: auto; + clear: both; + border-top: 1px solid #ccc; +} + + + + +/* MOBILE FRIENDLY STYLING */ diff --git a/src/main/resources/static/css/register.css b/src/main/resources/static/css/register.css new file mode 100644 index 0000000..ccedbbe --- /dev/null +++ b/src/main/resources/static/css/register.css @@ -0,0 +1,135 @@ +/* FOOTER SECTION */ +footer { + background-color: #f0f3f6; + text-align: center; + padding: 1rem; + font-size: 0.875rem; + color: #555; + margin-top: auto; + clear: both; + border-top: 1px solid #ccc; +} + + + + +/* SIGN UP PAGE */ +.signup-section { + display: flex; + padding: 2rem 1rem 8rem 1rem; + flex-direction: column; + align-items: center; + text-align: center; + margin-top: 4rem; +} + + +.signup-form { + padding: 4rem; + display: flex; + flex-direction: column; + gap: 1rem; + justify-content: center; + width: min(90vw, 390px); + min-height: 29rem; + border: 2px solid #dbeafe; + border-radius: 1rem; + background: linear-gradient(135deg, #f8fbff 0%, #eef7ff 100%); + box-shadow: 0 16px 36px rgba(59, 130, 246, 0.12); + text-align: center; + margin: 0; +} + +.signup-form h1 { + margin: 0; + font-size: 1.5rem; + color: #1a1a2e; +} + +.signup-form h2 a { + margin: 0; + font-size: 1.75rem; + color: #0f172a; + text-decoration: none; +} + +.signup-form h2 a:hover { + color: #3b82f6; +} + +.signup-form p { + color: #475569; + margin: 0; +} + +.signup-form input { + padding: 0.75rem; + width: 100%; + box-sizing: border-box; + font-size: 1rem; + border: 1px solid #cbd5e1; + border-radius: .5rem; + background-color: #ffffff; + transition: border-color 0.2s ease, box-shadow 0.2s ease; +} + +.signup-form input:focus { + outline: none; + border-color: #3b82f6; + box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15); +} + +.signup-form select { + padding: 0.75rem; + width: 100%; + box-sizing: border-box; + font-size: 1rem; + border: 1px solid #cbd5e1; + border-radius: .5rem; + background-color: #ffffff; +} + +.signup-form #signup-btn { + background: linear-gradient(135deg, #3b82f6 0%, #0ea5e9 100%); + color: white; + border: none; + border-radius: .5rem; + padding: 0.75rem 1.5rem; + font-size: 1rem; + cursor: pointer; + transition: transform 0.2s ease, box-shadow 0.2s ease; +} + +.signup-form #signup-btn:hover { + transform: translateY(-1px); + box-shadow: 0 8px 20px rgba(59, 130, 246, 0.25); +} + + +.signup-form #add-link-btn { + background: transparent; + border: solid; + border-color: #0f172a; + border-radius: .5rem; + padding: 0.75rem; + width: 50%; + align-self: center; + font-size: 1rem; + cursor: pointer; + transition: transform 0.2s ease, box-shadow 0.2s ease; +} + +.signup-form #add-link-btn:hover { + box-shadow: 0 8px 20px rgba(59, 130, 246, 0.25); +} + +.signup-form > a { + color: #1e293b; + font-size: 0.875rem; + text-decoration: none; +} + +.signup-form > a:hover { + color: #3b82f6; + text-decoration: underline; +} \ No newline at end of file diff --git a/src/main/resources/templates/auth/login.html b/src/main/resources/templates/auth/login.html index c0ae935..3d86630 100644 --- a/src/main/resources/templates/auth/login.html +++ b/src/main/resources/templates/auth/login.html @@ -2,30 +2,46 @@ - Login | Link Garden + Login | HyperLink + + -

Log In

- -
-

Invalid username or password.

-
-
-

You have been logged out.

-
-
-

Registration successful! Please log in.

-
- -
- -
- - -
- - -
-

Don't have an account? Sign up here.

+ + +
+

© 2026 HyperLink. All rights reserved.

+
+ + \ No newline at end of file diff --git a/src/main/resources/templates/auth/register.html b/src/main/resources/templates/auth/register.html index 1a99098..81c07fb 100644 --- a/src/main/resources/templates/auth/register.html +++ b/src/main/resources/templates/auth/register.html @@ -2,90 +2,115 @@ - Sign Up | Link Garden + Sign Up | HyperLink + + -

Create an Account

-
- -
+
+ +
+

© 2026 HyperLink. All rights reserved.

+
+ + \ No newline at end of file diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index e69de29..9aeda06 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -0,0 +1,172 @@ + + + + + + Landing page + + + + + +
+ +
+

Your Personal

+

Hyperlink Page

+

Bring all your links, content, and profiles together into one simple page you can share anywhere.

+ + + + +
+
+
+
+
GT
+
+
+ +
+
+
+
+ + + +
+ +
+

Find your style

+

Choose from a variety of templates to match your style

+
+
+
+
+
+
+
+
+
+
+
+
+ +
+

Classic

+

Clean and simple design

+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+

Gradient

+

Eye-catching gradients

+
+
+
+ +
+
+
+
+
+
+
+
+
+
+

Minimalist

+

Less is more

+
+
+
+ +
+ +
+ +
+

Everything you need to grow

+ +
+
+
+

Unlimited links

+

Add as many links as you need — social profiles, projects, music, shops, and more.

+
+ +
+
+

Customizable themes

+

Choose templates and personalize colors, fonts, and layouts to fit your brand.

+
+ +
+
+

One link to share

+

Share a single link in your bio and let visitors discover everything you do.

+
+ +
+ +
+ +
+

© 2026 HyperLink. All rights reserved.

+ +
+ + + + \ No newline at end of file diff --git a/src/main/resources/templates/landing.html b/src/main/resources/templates/landing.html index 2169027..e69de29 100644 --- a/src/main/resources/templates/landing.html +++ b/src/main/resources/templates/landing.html @@ -1,169 +0,0 @@ - - - - - - Landing page - - - - - -
- -
-

Your Personal

-

Hyperlink Page

-

Bring all your links, content, and profiles together into one simple page you can share anywhere.

- - - - -
-
-
-
-
GT
-
-
- -
-
-
-
- - - -
- -
-

Find your style

-

Choose from a variety of templates to match your style

-
-
-
-
-
-
-
-
-
-
-
-
- -
-

Classic

-

Clean and simple design

-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-

Gradient

-

Eye-catching gradients

-
-
-
- -
-
-
-
-
-
-
-
-
-
-

Minimalist

-

Less is more

-
-
-
- -
- -
- -
-

Everything you need to grow

- -
-
-
-

Unlimited links

-

Add as many links as you need — social profiles, projects, music, shops, and more.

-
- -
-
-

Customizable themes

-

Choose templates and personalize colors, fonts, and layouts to fit your brand.

-
- -
-
-

One link to share

-

Share a single link in your bio and let visitors discover everything you do.

-
- -
- -
- -
-

© 2026 LinkGarden. All rights reserved.

- -
- - - - \ No newline at end of file From 69b47d3df6165c7ddc5cc65db50f0b8c908ef4f6 Mon Sep 17 00:00:00 2001 From: JT Date: Mon, 16 Mar 2026 20:55:17 -0500 Subject: [PATCH 05/25] Update README.md updated readme file with info about deployment. --- README.md | 61 +++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 48 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 75c0b5c..e906c80 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,12 @@ HyperLink is a Spring Boot + Thymeleaf web app for creating a personal "link in bio" profile page. Users can register, sign in, edit their profile, and publish shareable social links. +## Live deployment + +- Web app: deployed on Render +- Database: hosted on Neon (PostgreSQL) +- URL: add your Render service URL here (for example, `https://your-service-name.onrender.com`) + ## What it does - User registration and login with Spring Security @@ -23,7 +29,8 @@ Users can register, sign in, edit their profile, and publish shareable social li - Spring MVC + Thymeleaf - Spring Data JPA - Spring Security -- PostgreSQL (runtime) +- PostgreSQL (Neon in production) +- Docker (for deployment image) - Maven Wrapper (`./mvnw`) ## Project structure @@ -61,22 +68,30 @@ src/main/resources ## Prerequisites - JDK 25 installed -- PostgreSQL running locally -- A database named `quest-log` -- (Optional) IntelliJ IDEA +- Maven (or use the included Maven Wrapper) +- A PostgreSQL database for local development (Neon or local Postgres) +- (Optional) Docker ## Configuration -Current DB settings are in `src/main/resources/application.properties`: +Database config is environment-variable based in `src/main/resources/application.properties`: ```properties -spring.datasource.url=jdbc:postgresql://localhost:5432/quest-log -spring.datasource.username=postgres -spring.datasource.password= -spring.jpa.hibernate.ddl-auto=create +spring.datasource.url=${DB_URL} +spring.datasource.username=${DB_USERNAME} +spring.datasource.password=${DB_PASSWORD} +spring.jpa.hibernate.ddl-auto=update ``` -Update `username`/`password` as needed for your local PostgreSQL setup. +Set these variables before running the app locally: + +```bash +export DB_URL="jdbc:postgresql://localhost:5432/quest-log" +export DB_USERNAME="postgres" +export DB_PASSWORD="your-password" +``` + +For Neon, use the connection values from your Neon project and set them in Render as service environment variables. ## Run locally @@ -84,11 +99,32 @@ Update `username`/`password` as needed for your local PostgreSQL setup. ./mvnw spring-boot:run ``` -Then open your browser and start with: +Then open: - `http://localhost:8080/login` - `http://localhost:8080/register` +## Run with Docker + +```bash +docker build -t hyperlink-app . +docker run -p 8080:8080 \ + -e DB_URL="jdbc:postgresql://:5432/" \ + -e DB_USERNAME="" \ + -e DB_PASSWORD="" \ + hyperlink-app +``` + +## Deployment notes (Render + Neon) + +- Render runs the containerized Spring Boot app from `Dockerfile`. +- Neon provides the managed PostgreSQL database. +- Required env vars on Render: + - `DB_URL` + - `DB_USERNAME` + - `DB_PASSWORD` +- App listens on container port `8080` (from `Dockerfile`). + ## Test ```bash @@ -113,6 +149,5 @@ Then open your browser and start with: ## Notes -- `spring.jpa.hibernate.ddl-auto=create` recreates schema on startup; switch to a safer value for persistent data. +- Current JPA mode is `update` (`spring.jpa.hibernate.ddl-auto=update`). - `profile.html` loads CSS by theme name (`/css/{theme}.css`). The repository currently includes `default.css`. - From 2dfb5feb566f57550276dd43854b742f6677875b Mon Sep 17 00:00:00 2001 From: JT Date: Mon, 16 Mar 2026 20:57:21 -0500 Subject: [PATCH 06/25] Update deployment URL in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e906c80..a9b0254 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Users can register, sign in, edit their profile, and publish shareable social li - Web app: deployed on Render - Database: hosted on Neon (PostgreSQL) -- URL: add your Render service URL here (for example, `https://your-service-name.onrender.com`) +- URL: add your Render service URL here (for example, `hyperlink-tvdj.onrender.com/`) ## What it does From e3628ac92a7285202b89690aadeca4432322bbe3 Mon Sep 17 00:00:00 2001 From: JT Date: Tue, 17 Mar 2026 08:38:02 -0500 Subject: [PATCH 07/25] Update live deployment URL in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a9b0254..fe74b6d 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Users can register, sign in, edit their profile, and publish shareable social li - Web app: deployed on Render - Database: hosted on Neon (PostgreSQL) -- URL: add your Render service URL here (for example, `hyperlink-tvdj.onrender.com/`) +- URL: `hyperlink-tvdj.onrender.com/` ## What it does From 3bc1a67c90b01fcb748b6a583ad1195223ba90e6 Mon Sep 17 00:00:00 2001 From: JT Date: Tue, 17 Mar 2026 09:42:43 -0500 Subject: [PATCH 08/25] Refactored logic into service layer Took logic out of the controllers and put it into service layer files for easier testing and better project architecture. --- .../HyprLink/controller/AuthController.java | 28 +++------ .../controller/DashboardController.java | 43 +++---------- .../controller/ProfileController.java | 19 ++---- .../HyprLink/service/AuthService.java | 41 ++++++++++++ .../HyprLink/service/DashboardService.java | 62 +++++++++++++++++++ .../HyprLink/service/ProfileService.java | 20 ++++++ 6 files changed, 143 insertions(+), 70 deletions(-) create mode 100644 src/main/java/com/basecamp/HyprLink/service/AuthService.java create mode 100644 src/main/java/com/basecamp/HyprLink/service/DashboardService.java create mode 100644 src/main/java/com/basecamp/HyprLink/service/ProfileService.java diff --git a/src/main/java/com/basecamp/HyprLink/controller/AuthController.java b/src/main/java/com/basecamp/HyprLink/controller/AuthController.java index 89d7587..a468f81 100644 --- a/src/main/java/com/basecamp/HyprLink/controller/AuthController.java +++ b/src/main/java/com/basecamp/HyprLink/controller/AuthController.java @@ -1,27 +1,20 @@ package com.basecamp.HyprLink.controller; -import com.basecamp.HyprLink.entity.SocialLink; import com.basecamp.HyprLink.entity.User; -import com.basecamp.HyprLink.repository.UserRepository; -import org.springframework.security.crypto.password.PasswordEncoder; +import com.basecamp.HyprLink.service.AuthService; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; -import java.util.ArrayList; -import java.util.List; - @Controller public class AuthController { - private final UserRepository userRepository; - private final PasswordEncoder passwordEncoder; + private final AuthService authService; - public AuthController(UserRepository userRepository, PasswordEncoder passwordEncoder) { - this.userRepository = userRepository; - this.passwordEncoder = passwordEncoder; + public AuthController(AuthService authService) { + this.authService = authService; } @GetMapping("/login") @@ -31,19 +24,14 @@ public String showLoginForm() { @GetMapping("/register") public String showRegistrationForm(Model model) { - User user = new User(); - List initialLinks = new ArrayList<>(); - initialLinks.add(new SocialLink()); - user.setSocialLinks(initialLinks); - model.addAttribute("user", new User()); - model.addAttribute("themes", List.of("default", "dark")); + model.addAttribute("user", authService.prepareRegistrationFormData()); + model.addAttribute("themes", authService.getAvailableThemes()); return "auth/register"; } @PostMapping("/register") public String registerUser(@ModelAttribute User user) { - user.setPassword(passwordEncoder.encode(user.getPassword())); - userRepository.save(user); - return "redirect:/login?success"; // Redirect to login page after signing up + authService.registerUser(user); + return "redirect:/login?success"; } } \ No newline at end of file diff --git a/src/main/java/com/basecamp/HyprLink/controller/DashboardController.java b/src/main/java/com/basecamp/HyprLink/controller/DashboardController.java index 5f50cd7..36411ba 100644 --- a/src/main/java/com/basecamp/HyprLink/controller/DashboardController.java +++ b/src/main/java/com/basecamp/HyprLink/controller/DashboardController.java @@ -1,8 +1,7 @@ package com.basecamp.HyprLink.controller; -import com.basecamp.HyprLink.entity.SocialLink; import com.basecamp.HyprLink.entity.User; -import com.basecamp.HyprLink.repository.UserRepository; +import com.basecamp.HyprLink.service.DashboardService; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; @@ -10,57 +9,29 @@ import org.springframework.web.bind.annotation.PostMapping; import java.security.Principal; -import java.util.List; @Controller public class DashboardController { - private final UserRepository userRepository; + private final DashboardService dashboardService; - public DashboardController(UserRepository userRepository) { - this.userRepository = userRepository; + public DashboardController(DashboardService dashboardService) { + this.dashboardService = dashboardService; } @GetMapping("/dashboard") public String showDashboard(Principal principal, Model model) { String username = principal.getName(); - User user = userRepository.findByUsername(username).orElse(null); - - // Add a blank link slot at the end so the user always has room to add a new one - if (user != null) { - user.getSocialLinks().add(new SocialLink()); - } + User user = dashboardService.getUserForDashboard(username); model.addAttribute("user", user); - model.addAttribute("themes", List.of("default", "dark")); + model.addAttribute("themes", dashboardService.getAvailableThemes()); return "dashboard"; } @PostMapping("/dashboard/save") public String saveProfile(@ModelAttribute User updatedData, Principal principal) { - User existingUser = userRepository.findByUsername(principal.getName()).orElseThrow(); - - // Update basic fields - existingUser.setName(updatedData.getName()); - existingUser.setAge(updatedData.getAge()); - existingUser.setPronouns(updatedData.getPronouns()); - existingUser.setBio(updatedData.getBio()); - existingUser.setProfilePicture(updatedData.getProfilePicture()); - existingUser.setTheme(updatedData.getTheme()); - - // Update Social Links: Filter out any completely blank ones - if (updatedData.getSocialLinks() != null) { - List validLinks = updatedData.getSocialLinks().stream() - .filter(link -> link.getTitle() != null && !link.getTitle().isBlank() - && link.getUrl() != null && !link.getUrl().isBlank()) - .toList(); - - // Clear the old links and add the newly edited/filtered ones - existingUser.getSocialLinks().clear(); - existingUser.getSocialLinks().addAll(validLinks); - } - - userRepository.save(existingUser); + dashboardService.updateUserProfile(updatedData, principal.getName()); return "redirect:/dashboard?success"; } } \ No newline at end of file diff --git a/src/main/java/com/basecamp/HyprLink/controller/ProfileController.java b/src/main/java/com/basecamp/HyprLink/controller/ProfileController.java index de930d8..87eb283 100644 --- a/src/main/java/com/basecamp/HyprLink/controller/ProfileController.java +++ b/src/main/java/com/basecamp/HyprLink/controller/ProfileController.java @@ -1,7 +1,7 @@ package com.basecamp.HyprLink.controller; import com.basecamp.HyprLink.entity.User; -import com.basecamp.HyprLink.repository.UserRepository; +import com.basecamp.HyprLink.service.ProfileService; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; @@ -10,30 +10,21 @@ @Controller public class ProfileController { - private final UserRepository userRepository; + private final ProfileService profileService; - // Injecting the repository via the constructor - public ProfileController(UserRepository userRepository) { - this.userRepository = userRepository; + public ProfileController(ProfileService profileService) { + this.profileService = profileService; } - // The {id} is the dynamic part of the URL @GetMapping("/profile/{id}") public String getProfile(@PathVariable Long id, Model model) { + User user = profileService.getUserProfileById(id); - // 1. Ask the database for the user matching the ID in the URL - User user = userRepository.findById(id).orElse(null); - - // 2. If the user doesn't exist, you could route them to a 404 page if (user == null) { return "error/404"; } - // 3. Attach the found user object to the Thymeleaf model - // The string "user" must perfectly match the ${user.something} variables in your HTML model.addAttribute("user", user); - - // 4. Return the exact name of your Thymeleaf HTML file (without the .html extension) return "profile"; } } \ No newline at end of file diff --git a/src/main/java/com/basecamp/HyprLink/service/AuthService.java b/src/main/java/com/basecamp/HyprLink/service/AuthService.java new file mode 100644 index 0000000..4b46668 --- /dev/null +++ b/src/main/java/com/basecamp/HyprLink/service/AuthService.java @@ -0,0 +1,41 @@ +package com.basecamp.HyprLink.service; + +import com.basecamp.HyprLink.entity.SocialLink; +import com.basecamp.HyprLink.entity.User; +import com.basecamp.HyprLink.repository.UserRepository; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class AuthService { + + private final UserRepository userRepository; + private final PasswordEncoder passwordEncoder; + + public AuthService(UserRepository userRepository, PasswordEncoder passwordEncoder) { + this.userRepository = userRepository; + this.passwordEncoder = passwordEncoder; + } + + public User registerUser(User user) { + user.setPassword(passwordEncoder.encode(user.getPassword())); + return userRepository.save(user); + } + + public User prepareRegistrationFormData() { + User user = new User(); + List initialLinks = new ArrayList<>(); + initialLinks.add(new SocialLink()); + user.setSocialLinks(initialLinks); + return user; + } + + //This method can be expanded to fetch themes from the database in the future + public List getAvailableThemes() { + return List.of("default"); + } +} + diff --git a/src/main/java/com/basecamp/HyprLink/service/DashboardService.java b/src/main/java/com/basecamp/HyprLink/service/DashboardService.java new file mode 100644 index 0000000..3aa366f --- /dev/null +++ b/src/main/java/com/basecamp/HyprLink/service/DashboardService.java @@ -0,0 +1,62 @@ +package com.basecamp.HyprLink.service; + +import com.basecamp.HyprLink.entity.SocialLink; +import com.basecamp.HyprLink.entity.User; +import com.basecamp.HyprLink.repository.UserRepository; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class DashboardService { + + private final UserRepository userRepository; + + public DashboardService(UserRepository userRepository) { + this.userRepository = userRepository; + } + + + public User getUserForDashboard(String username) { + User user = userRepository.findByUsername(username).orElse(null); + // Add a blank link slot at the end so the user always has room to add a new one + if (user != null) { + user.getSocialLinks().add(new SocialLink()); + } + return user; + } + + public User updateUserProfile(User updatedData, String username) { + User existingUser = userRepository.findByUsername(username).orElseThrow( + () -> new RuntimeException("User not found: " + username) + ); + + // Update basic fields + existingUser.setName(updatedData.getName()); + existingUser.setAge(updatedData.getAge()); + existingUser.setPronouns(updatedData.getPronouns()); + existingUser.setBio(updatedData.getBio()); + existingUser.setProfilePicture(updatedData.getProfilePicture()); + existingUser.setTheme(updatedData.getTheme()); + + // Update Social Links: Filter out any completely blank ones + if (updatedData.getSocialLinks() != null) { + List validLinks = updatedData.getSocialLinks().stream() + .filter(link -> link.getTitle() != null && !link.getTitle().isBlank() + && link.getUrl() != null && !link.getUrl().isBlank()) + .toList(); + + // Clear the old links and add the newly edited/filtered ones + existingUser.getSocialLinks().clear(); + existingUser.getSocialLinks().addAll(validLinks); + } + + return userRepository.save(existingUser); + } + + // Can be updated to match themes found in the database + public List getAvailableThemes() { + return List.of("default"); + } +} + diff --git a/src/main/java/com/basecamp/HyprLink/service/ProfileService.java b/src/main/java/com/basecamp/HyprLink/service/ProfileService.java new file mode 100644 index 0000000..be7c012 --- /dev/null +++ b/src/main/java/com/basecamp/HyprLink/service/ProfileService.java @@ -0,0 +1,20 @@ +package com.basecamp.HyprLink.service; + +import com.basecamp.HyprLink.entity.User; +import com.basecamp.HyprLink.repository.UserRepository; +import org.springframework.stereotype.Service; + +@Service +public class ProfileService { + + private final UserRepository userRepository; + + public ProfileService(UserRepository userRepository) { + this.userRepository = userRepository; + } + + public User getUserProfileById(Long id) { + return userRepository.findById(id).orElse(null); + } +} + From 8f8309aa79370a2c8bc04c1da78a35ec12b6fd4d Mon Sep 17 00:00:00 2001 From: JT Date: Tue, 17 Mar 2026 10:30:10 -0500 Subject: [PATCH 09/25] Created Repository Layer Test 17 Test cases for UserRepository.java. Test documentation file also added in the same test package. --- .../HyprLink/repository/TEST_DOCUMENTATION.md | 219 ++++++++++ .../repository/UserRepositoryTest.java | 386 ++++++++++++++++++ 2 files changed, 605 insertions(+) create mode 100644 src/test/java/com/basecamp/HyprLink/repository/TEST_DOCUMENTATION.md create mode 100644 src/test/java/com/basecamp/HyprLink/repository/UserRepositoryTest.java diff --git a/src/test/java/com/basecamp/HyprLink/repository/TEST_DOCUMENTATION.md b/src/test/java/com/basecamp/HyprLink/repository/TEST_DOCUMENTATION.md new file mode 100644 index 0000000..e6b2c76 --- /dev/null +++ b/src/test/java/com/basecamp/HyprLink/repository/TEST_DOCUMENTATION.md @@ -0,0 +1,219 @@ +# UserRepository Test Suite Documentation + +## Overview +The `UserRepositoryTest` class provides comprehensive test coverage for the `UserRepository` interface, testing both custom query methods and inherited JPA methods. The test suite includes 17 test cases covering CRUD operations, custom queries, edge cases, and data validation. + +## Test Configuration +- **Framework:** JUnit 5 (Jupiter) +- **Testing Library:** AssertJ (Fluent Assertions) +- **Spring Boot Testing:** @SpringBootTest +- **Database:** H2 (in-memory for testing) +- **Transaction Management:** @Transactional (auto-rollback between tests) +- **Test Profile:** @ActiveProfiles("test") + +## Test Organization + +### Custom Query Tests (4 tests) + +#### 1. testFindByUsername_Success +- **Purpose:** Verify that a user can be found by exact username match +- **Scenario:** Save a user, then retrieve it by username +- **Assertions:** + - User is present in Optional + - Username matches + - Associated data (name, age) is correctly retrieved + +#### 2. testFindByUsername_NotFound +- **Purpose:** Verify that non-existent usernames return empty Optional +- **Scenario:** Query for a username that doesn't exist +- **Assertions:** + - Optional is empty + - No exception is thrown + +#### 3. testFindByUsername_CaseSensitive +- **Purpose:** Verify that username search is case-sensitive +- **Scenario:** Save user "johndoe1", search for "Johndoe1" (different case) +- **Assertions:** + - Optional is empty (case mismatch results in no match) + +#### 4. testFindByUsername_MultipleUsers +- **Purpose:** Verify correct user is returned when multiple users exist +- **Scenario:** Create multiple users, query for specific user +- **Assertions:** + - Correct user is returned with matching data + - Other users are not returned + +### JpaRepository Inherited Tests (10 tests) + +#### 5. testSave_NewUser +- **Purpose:** Verify that a new user can be saved to the database +- **Scenario:** Save a new User entity +- **Assertions:** + - User receives an ID after save + - All fields are persisted correctly + +#### 6. testSave_UserWithSocialLinks +- **Purpose:** Verify that cascading save works for associated SocialLinks +- **Scenario:** Save user with 2 social links +- **Assertions:** + - User and all social links are persisted + - Links can be retrieved with user data + - Link count and data match what was saved + +#### 7. testFindById_Success +- **Purpose:** Verify user retrieval by primary key +- **Scenario:** Save user, then find by ID +- **Assertions:** + - User is found + - ID matches + - All user data is correct + +#### 8. testFindById_NotFound +- **Purpose:** Verify that invalid IDs return empty Optional +- **Scenario:** Query for non-existent ID +- **Assertions:** + - Optional is empty + +#### 9. testFindAll +- **Purpose:** Verify retrieval of all users in database +- **Scenario:** Create 3 users, retrieve all +- **Assertions:** + - All 3 users are returned + - All usernames are present + +#### 10. testSave_UpdateExistingUser +- **Purpose:** Verify that existing users can be updated +- **Scenario:** Save user, modify fields, save again +- **Assertions:** + - ID remains the same + - Updated fields reflect new values + - Update is persisted + +#### 11. testDeleteById +- **Purpose:** Verify deletion by ID +- **Scenario:** Save user, delete by ID +- **Assertions:** + - User no longer exists in database + - Subsequent query returns empty Optional + +#### 12. testDelete +- **Purpose:** Verify deletion of entity +- **Scenario:** Save user, delete entity +- **Assertions:** + - User no longer exists + - ID cannot be found + +#### 13. testExistsById +- **Purpose:** Verify existence checking +- **Scenario:** Check if saved user exists, and non-existent user doesn't +- **Assertions:** + - Existing user returns true + - Non-existent ID returns false + +#### 14. testCount +- **Purpose:** Verify counting total users +- **Scenario:** Create 2 users, count all +- **Assertions:** + - Count is at least 2 + +### Edge Cases & Data Integrity Tests (3 tests) + +#### 15. testSave_NullSocialLinks +- **Purpose:** Verify that users can be saved with null social links +- **Scenario:** Save user with socialLinks = null +- **Assertions:** + - User saves successfully + - ID is generated + +#### 16. testSave_EmptySocialLinks +- **Purpose:** Verify that users can be saved with empty social links list +- **Scenario:** Save user with empty ArrayList of links +- **Assertions:** + - User persists + - Links list is empty on retrieval + +#### 17. testUpdate_SocialLinks +- **Purpose:** Verify that social links can be added to existing user +- **Scenario:** Save user, add new social link, save again +- **Assertions:** + - New link is persisted + - All 3 links exist after update + - Link titles are correct + +## Key Testing Strategies + +### 1. Data Isolation +- Each test calls `deleteAll()` in `@BeforeEach` to ensure clean state +- Unique usernames generated using test counter to prevent constraint violations + +### 2. Transaction Management +- `@Transactional` annotation auto-rolls back changes after each test +- `entityManager.flush()` forces persistence operations +- `entityManager.clear()` clears the persistence context to verify database state + +### 3. Assertion Patterns +- **AssertJ Fluent API** for readable assertions +- **Lambda-based assertions** for complex validations +- **Exact value checks** for critical fields +- **Collection assertions** for related data + +### 4. Test Data +- Consistent test user created in `@BeforeEach` +- Sample social links with realistic data +- Clear field values for easy debugging + +## Running the Tests + +### Run all UserRepository tests: +```bash +./mvnw test -Dtest=UserRepositoryTest +``` + +### Run a specific test: +```bash +./mvnw test -Dtest=UserRepositoryTest#testFindByUsername_Success +``` + +### Run all tests (including others): +```bash +./mvnw test +``` + +## Test Results + +✅ All 17 tests pass successfully +- 0 failures +- 0 skipped +- Average execution time: ~2.4 seconds +- Database: H2 in-memory + +## Code Coverage + +The test suite covers: +- ✅ Custom finder method (`findByUsername`) +- ✅ CRUD operations (Create, Read, Update, Delete) +- ✅ Query methods (findById, findAll, existsById, count) +- ✅ Cascading relationships (User → SocialLinks) +- ✅ Edge cases (null values, empty collections) +- ✅ Data integrity (persistence, retrieval) + +## Best Practices Demonstrated + +1. **Descriptive Test Names** - Test method names clearly describe what is being tested +2. **@DisplayName Annotations** - Provides human-readable test descriptions +3. **Arrange-Act-Assert Pattern** - Clear test structure with setup, execution, verification +4. **Single Responsibility** - Each test focuses on one behavior +5. **No Test Dependencies** - Tests run independently in any order +6. **Meaningful Assertions** - Clear messages when assertions fail +7. **Cleanup** - Each test starts with a clean database state + +## Future Enhancements + +Potential additions to expand test coverage: +- Test for duplicate username constraint violations +- Test for required field validation (null username/password) +- Test for password field constraints +- Performance tests for large datasets +- Transaction isolation level testing +- Custom query with multiple parameters (if added) + diff --git a/src/test/java/com/basecamp/HyprLink/repository/UserRepositoryTest.java b/src/test/java/com/basecamp/HyprLink/repository/UserRepositoryTest.java new file mode 100644 index 0000000..e4df8b9 --- /dev/null +++ b/src/test/java/com/basecamp/HyprLink/repository/UserRepositoryTest.java @@ -0,0 +1,386 @@ +package com.basecamp.HyprLink.repository; + +import com.basecamp.HyprLink.entity.SocialLink; +import com.basecamp.HyprLink.entity.User; +import jakarta.persistence.EntityManager; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import static org.assertj.core.api.Assertions.*; + +@SpringBootTest +@Transactional +@ActiveProfiles("test") +@DisplayName("UserRepository Tests") +class UserRepositoryTest { + + @Autowired + private UserRepository userRepository; + + @Autowired + private EntityManager entityManager; + + private User testUser; + private static int testCounter = 0; + + @BeforeEach + void setUp() { + // Clear data before each test to avoid unique constraint violations + testCounter++; + userRepository.deleteAll(); + entityManager.flush(); + + // Create a test user with sample data using unique username + testUser = new User(); + testUser.setUsername("johndoe" + testCounter); + testUser.setPassword("hashedpassword123"); + testUser.setName("John Doe"); + testUser.setAge("30"); + testUser.setPronouns("he/him"); + testUser.setBio("Test user bio"); + testUser.setProfilePicture("https://example.com/avatar.jpg"); + testUser.setTheme("default"); + + // Add sample social links + SocialLink link1 = new SocialLink(); + link1.setTitle("Portfolio"); + link1.setUrl("https://example.com/portfolio"); + + SocialLink link2 = new SocialLink(); + link2.setTitle("Twitter"); + link2.setUrl("https://twitter.com/johndoe"); + + testUser.setSocialLinks(new ArrayList<>(List.of(link1, link2))); + } + + // ==================== Custom Query Tests ==================== + + @Test + @DisplayName("Should find user by username when user exists") + void testFindByUsername_Success() { + // Arrange + userRepository.save(testUser); + entityManager.flush(); + + // Act + Optional foundUser = userRepository.findByUsername(testUser.getUsername()); + + // Assert + assertThat(foundUser) + .isPresent() + .hasValueSatisfying(user -> { + assertThat(user.getUsername()).isEqualTo(testUser.getUsername()); + assertThat(user.getName()).isEqualTo("John Doe"); + assertThat(user.getAge()).isEqualTo("30"); + }); + } + + @Test + @DisplayName("Should return empty Optional when user does not exist") + void testFindByUsername_NotFound() { + // Act + Optional foundUser = userRepository.findByUsername("nonexistentuser"); + + // Assert + assertThat(foundUser).isEmpty(); + } + + @Test + @DisplayName("Should be case-sensitive when finding by username") + void testFindByUsername_CaseSensitive() { + // Arrange + userRepository.save(testUser); + entityManager.flush(); + + // Act - Try with different case + String username = testUser.getUsername(); + String differentCaseUsername = username.substring(0, 1).toUpperCase() + username.substring(1); + Optional foundUser = userRepository.findByUsername(differentCaseUsername); + + // Assert + assertThat(foundUser).isEmpty(); + } + + @Test + @DisplayName("Should return correct user when multiple users exist") + void testFindByUsername_MultipleUsers() { + // Arrange + User user1 = new User(); + user1.setUsername("alice" + testCounter); + user1.setPassword("password123"); + user1.setName("Alice"); + + User user2 = new User(); + user2.setUsername("bob" + testCounter); + user2.setPassword("password456"); + user2.setName("Bob"); + + userRepository.save(user1); + userRepository.save(user2); + entityManager.flush(); + + // Act + Optional foundUser = userRepository.findByUsername(user1.getUsername()); + + // Assert + assertThat(foundUser) + .isPresent() + .hasValueSatisfying(user -> { + assertThat(user.getName()).isEqualTo("Alice"); + assertThat(user.getUsername()).isEqualTo(user1.getUsername()); + }); + } + + // ==================== JpaRepository Inherited Tests ==================== + + @Test + @DisplayName("Should save a new user to database") + void testSave_NewUser() { + // Act + User savedUser = userRepository.save(testUser); + entityManager.flush(); + + // Assert + assertThat(savedUser.getId()).isNotNull(); + assertThat(savedUser.getUsername()).isEqualTo(testUser.getUsername()); + assertThat(savedUser.getName()).isEqualTo("John Doe"); + } + + @Test + @DisplayName("Should save user with associated social links") + void testSave_UserWithSocialLinks() { + // Act + User savedUser = userRepository.save(testUser); + entityManager.flush(); + entityManager.clear(); + + // Retrieve to verify persistence + Optional retrievedUser = userRepository.findById(savedUser.getId()); + + // Assert + assertThat(retrievedUser) + .isPresent() + .hasValueSatisfying(user -> { + assertThat(user.getSocialLinks()).hasSize(2); + assertThat(user.getSocialLinks()) + .extracting(SocialLink::getTitle) + .containsExactly("Portfolio", "Twitter"); + }); + } + + @Test + @DisplayName("Should find user by ID") + void testFindById_Success() { + // Arrange + User savedUser = userRepository.save(testUser); + entityManager.flush(); + + // Act + Optional foundUser = userRepository.findById(savedUser.getId()); + + // Assert + assertThat(foundUser) + .isPresent() + .hasValueSatisfying(user -> { + assertThat(user.getId()).isEqualTo(savedUser.getId()); + assertThat(user.getUsername()).isEqualTo(testUser.getUsername()); + }); + } + + @Test + @DisplayName("Should return empty Optional when finding user by non-existent ID") + void testFindById_NotFound() { + // Act + Optional foundUser = userRepository.findById(9999L); + + // Assert + assertThat(foundUser).isEmpty(); + } + + @Test + @DisplayName("Should find all users in database") + void testFindAll() { + // Arrange + User user1 = new User(); + user1.setUsername("user1" + testCounter); + user1.setPassword("pass1"); + + User user2 = new User(); + user2.setUsername("user2" + testCounter); + user2.setPassword("pass2"); + + userRepository.save(user1); + userRepository.save(user2); + userRepository.save(testUser); + entityManager.flush(); + + // Act + List allUsers = userRepository.findAll(); + + // Assert + assertThat(allUsers).hasSize(3); + assertThat(allUsers) + .extracting(User::getUsername) + .containsExactlyInAnyOrder(user1.getUsername(), user2.getUsername(), testUser.getUsername()); + } + + @Test + @DisplayName("Should update existing user") + void testSave_UpdateExistingUser() { + // Arrange + User savedUser = userRepository.save(testUser); + entityManager.flush(); + + // Act - Update the user + savedUser.setName("Jane Doe"); + savedUser.setAge("25"); + User updatedUser = userRepository.save(savedUser); + entityManager.flush(); + + // Assert + assertThat(updatedUser.getId()).isEqualTo(savedUser.getId()); + assertThat(updatedUser.getName()).isEqualTo("Jane Doe"); + assertThat(updatedUser.getAge()).isEqualTo("25"); + } + + @Test + @DisplayName("Should delete user by ID") + void testDeleteById() { + // Arrange + User savedUser = userRepository.save(testUser); + entityManager.flush(); + Long userId = savedUser.getId(); + + // Act + userRepository.deleteById(userId); + entityManager.flush(); + + // Assert + Optional deletedUser = userRepository.findById(userId); + assertThat(deletedUser).isEmpty(); + } + + @Test + @DisplayName("Should delete user entity") + void testDelete() { + // Arrange + User savedUser = userRepository.save(testUser); + entityManager.flush(); + + // Act + userRepository.delete(savedUser); + entityManager.flush(); + + // Assert + Optional deletedUser = userRepository.findById(savedUser.getId()); + assertThat(deletedUser).isEmpty(); + } + + @Test + @DisplayName("Should check if user exists by ID") + void testExistsById() { + // Arrange + User savedUser = userRepository.save(testUser); + entityManager.flush(); + + // Act & Assert + assertThat(userRepository.existsById(savedUser.getId())).isTrue(); + assertThat(userRepository.existsById(9999L)).isFalse(); + } + + @Test + @DisplayName("Should count total users in database") + void testCount() { + // Arrange + userRepository.save(testUser); + User user2 = new User(); + user2.setUsername("anotheruser" + testCounter); + user2.setPassword("pass123"); + userRepository.save(user2); + entityManager.flush(); + + // Act + long count = userRepository.count(); + + // Assert + assertThat(count).isGreaterThanOrEqualTo(2); + } + + // ==================== Edge Cases & Validation ==================== + + @Test + @DisplayName("Should handle null social links list") + void testSave_NullSocialLinks() { + // Arrange + testUser.setSocialLinks(null); + + // Act + User savedUser = userRepository.save(testUser); + entityManager.flush(); + + // Assert + assertThat(savedUser.getId()).isNotNull(); + assertThat(savedUser.getUsername()).isEqualTo(testUser.getUsername()); + } + + @Test + @DisplayName("Should persist user with empty social links") + void testSave_EmptySocialLinks() { + // Arrange + testUser.setSocialLinks(List.of()); + + // Act + User savedUser = userRepository.save(testUser); + entityManager.flush(); + entityManager.clear(); + + // Retrieve to verify + Optional retrievedUser = userRepository.findById(savedUser.getId()); + + // Assert + assertThat(retrievedUser) + .isPresent() + .hasValueSatisfying(user -> { + assertThat(user.getSocialLinks()).isEmpty(); + }); + } + + @Test + @DisplayName("Should update user social links") + void testUpdate_SocialLinks() { + // Arrange + User savedUser = userRepository.save(testUser); + entityManager.flush(); + + // Act - Add a new link + SocialLink newLink = new SocialLink(); + newLink.setTitle("GitHub"); + newLink.setUrl("https://github.com/johndoe"); + savedUser.getSocialLinks().add(newLink); + userRepository.save(savedUser); + entityManager.flush(); + entityManager.clear(); + + // Retrieve to verify + Optional retrievedUser = userRepository.findById(savedUser.getId()); + + // Assert + assertThat(retrievedUser) + .isPresent() + .hasValueSatisfying(user -> { + assertThat(user.getSocialLinks()).hasSize(3); + assertThat(user.getSocialLinks()) + .extracting(SocialLink::getTitle) + .containsExactly("Portfolio", "Twitter", "GitHub"); + }); + } +} \ No newline at end of file From 7307e70ff546c0a4c7c6edf3edc007f7b794ae99 Mon Sep 17 00:00:00 2001 From: JT Date: Tue, 17 Mar 2026 11:05:53 -0500 Subject: [PATCH 10/25] Created Service Tests Created 3 files for AuthService, DashboardService, and ProfileService. Also added a test documentation md file. --- .../HyprLink/service/AuthServiceTest.java | 122 ++++++++++ .../service/DashboardServiceTest.java | 226 ++++++++++++++++++ .../HyprLink/service/ProfileServiceTest.java | 80 +++++++ .../HyprLink/service/TEST_DOCUMENTATION.md | 192 +++++++++++++++ 4 files changed, 620 insertions(+) create mode 100644 src/test/java/com/basecamp/HyprLink/service/AuthServiceTest.java create mode 100644 src/test/java/com/basecamp/HyprLink/service/DashboardServiceTest.java create mode 100644 src/test/java/com/basecamp/HyprLink/service/ProfileServiceTest.java create mode 100644 src/test/java/com/basecamp/HyprLink/service/TEST_DOCUMENTATION.md diff --git a/src/test/java/com/basecamp/HyprLink/service/AuthServiceTest.java b/src/test/java/com/basecamp/HyprLink/service/AuthServiceTest.java new file mode 100644 index 0000000..18fde14 --- /dev/null +++ b/src/test/java/com/basecamp/HyprLink/service/AuthServiceTest.java @@ -0,0 +1,122 @@ +package com.basecamp.HyprLink.service; + +import com.basecamp.HyprLink.entity.User; +import com.basecamp.HyprLink.repository.UserRepository; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentCaptor; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.security.crypto.password.PasswordEncoder; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +@DisplayName("AuthService Tests") +class AuthServiceTest { + + @Mock + private UserRepository userRepository; + + @Mock + private PasswordEncoder passwordEncoder; + + @InjectMocks + private AuthService authService; + + private User testUser; + + @BeforeEach + void setUp() { + testUser = new User(); + testUser.setUsername("johndoe"); + testUser.setPassword("plain-password"); + testUser.setName("John Doe"); + } + + // ==================== Registration Tests ==================== + + @Test + @DisplayName("Should encode password and save user when registering") + void testRegisterUser_EncodesPasswordAndSaves() { + // Arrange + when(passwordEncoder.encode("plain-password")).thenReturn("encoded-password"); + when(userRepository.save(testUser)).thenReturn(testUser); + + // Act + authService.registerUser(testUser); + + // Assert + ArgumentCaptor userCaptor = ArgumentCaptor.forClass(User.class); + verify(userRepository).save(userCaptor.capture()); + + User capturedUser = userCaptor.getValue(); + assertThat(capturedUser.getPassword()).isEqualTo("encoded-password"); + assertThat(capturedUser.getUsername()).isEqualTo("johndoe"); + } + + @Test + @DisplayName("Should return saved user when registration succeeds") + void testRegisterUser_ReturnsSavedUser() { + // Arrange + when(passwordEncoder.encode("plain-password")).thenReturn("encoded-password"); + when(userRepository.save(testUser)).thenReturn(testUser); + + // Act + User savedUser = authService.registerUser(testUser); + + // Assert + assertThat(savedUser).isSameAs(testUser); + verify(passwordEncoder).encode("plain-password"); + verify(userRepository).save(testUser); + } + + // ==================== Registration Form Initialization Tests ==================== + + @Test + @DisplayName("Should prepare registration data with one blank social link") + void testPrepareRegistrationFormData_InitializesBlankLink() { + // Act + User preparedUser = authService.prepareRegistrationFormData(); + + // Assert + assertThat(preparedUser).isNotNull(); + assertThat(preparedUser.getSocialLinks()).isNotNull(); + assertThat(preparedUser.getSocialLinks()).hasSize(1); + assertThat(preparedUser.getSocialLinks().get(0).getTitle()).isNull(); + assertThat(preparedUser.getSocialLinks().get(0).getUrl()).isNull(); + } + + @Test + @DisplayName("Should return a fresh user model each time registration data is prepared") + void testPrepareRegistrationFormData_ReturnsFreshInstancePerCall() { + // Act + User first = authService.prepareRegistrationFormData(); + User second = authService.prepareRegistrationFormData(); + + // Assert + assertThat(first).isNotSameAs(second); + assertThat(first.getSocialLinks()).isNotSameAs(second.getSocialLinks()); + assertThat(first.getSocialLinks()).hasSize(1); + assertThat(second.getSocialLinks()).hasSize(1); + } + + // ==================== Theme Tests ==================== + + @Test + @DisplayName("Should return available themes") + void testGetAvailableThemes_ReturnsDefaultTheme() { + // Act + var themes = authService.getAvailableThemes(); + + // Assert + assertThat(themes).containsExactly("default"); + } +} + + diff --git a/src/test/java/com/basecamp/HyprLink/service/DashboardServiceTest.java b/src/test/java/com/basecamp/HyprLink/service/DashboardServiceTest.java new file mode 100644 index 0000000..4002666 --- /dev/null +++ b/src/test/java/com/basecamp/HyprLink/service/DashboardServiceTest.java @@ -0,0 +1,226 @@ +package com.basecamp.HyprLink.service; + +import com.basecamp.HyprLink.entity.SocialLink; +import com.basecamp.HyprLink.entity.User; +import com.basecamp.HyprLink.repository.UserRepository; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentCaptor; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +@DisplayName("DashboardService Tests") +class DashboardServiceTest { + + @Mock + private UserRepository userRepository; + + @InjectMocks + private DashboardService dashboardService; + + private User existingUser; + + @BeforeEach + void setUp() { + existingUser = new User(); + existingUser.setUsername("johndoe"); + existingUser.setName("Old Name"); + existingUser.setAge("30"); + existingUser.setPronouns("he/him"); + existingUser.setBio("Old bio"); + existingUser.setProfilePicture("old-pic"); + existingUser.setTheme("default"); + + SocialLink existingLink = new SocialLink(); + existingLink.setTitle("Portfolio"); + existingLink.setUrl("https://example.com/portfolio"); + existingUser.setSocialLinks(new ArrayList<>(List.of(existingLink))); + } + + // ==================== Dashboard Retrieval Tests ==================== + + @Test + @DisplayName("Should return user and append a blank social link for dashboard") + void testGetUserForDashboard_UserExists_AppendsBlankLink() { + // Arrange + when(userRepository.findByUsername("johndoe")).thenReturn(Optional.of(existingUser)); + + // Act + User result = dashboardService.getUserForDashboard("johndoe"); + + // Assert + assertThat(result).isSameAs(existingUser); + assertThat(result.getSocialLinks()).hasSize(2); + SocialLink appendedLink = result.getSocialLinks().get(1); + assertThat(appendedLink.getTitle()).isNull(); + assertThat(appendedLink.getUrl()).isNull(); + } + + @Test + @DisplayName("Should return null when dashboard user is not found") + void testGetUserForDashboard_UserNotFound_ReturnsNull() { + // Arrange + when(userRepository.findByUsername("missing-user")).thenReturn(Optional.empty()); + + // Act + User result = dashboardService.getUserForDashboard("missing-user"); + + // Assert + assertThat(result).isNull(); + } + + // ==================== Profile Update Tests ==================== + + @Test + @DisplayName("Should update profile fields, filter blank links, and save user") + void testUpdateUserProfile_UpdatesFieldsFiltersLinksAndSaves() { + // Arrange + User updatedData = new User(); + updatedData.setName("New Name"); + updatedData.setAge("25"); + updatedData.setPronouns("they/them"); + updatedData.setBio("New bio"); + updatedData.setProfilePicture("new-pic"); + updatedData.setTheme("default"); + + SocialLink validLink = new SocialLink(); + validLink.setTitle("GitHub"); + validLink.setUrl("https://github.com/johndoe"); + + SocialLink blankTitle = new SocialLink(); + blankTitle.setTitle(" "); + blankTitle.setUrl("https://example.com"); + + SocialLink blankUrl = new SocialLink(); + blankUrl.setTitle("LinkedIn"); + blankUrl.setUrl(" "); + + SocialLink nullFields = new SocialLink(); + nullFields.setTitle(null); + nullFields.setUrl(null); + + updatedData.setSocialLinks(List.of(validLink, blankTitle, blankUrl, nullFields)); + + when(userRepository.findByUsername("johndoe")).thenReturn(Optional.of(existingUser)); + when(userRepository.save(existingUser)).thenReturn(existingUser); + + // Act + User result = dashboardService.updateUserProfile(updatedData, "johndoe"); + + // Assert + ArgumentCaptor userCaptor = ArgumentCaptor.forClass(User.class); + verify(userRepository).save(userCaptor.capture()); + + User savedUser = userCaptor.getValue(); + assertThat(result).isSameAs(existingUser); + assertThat(savedUser.getName()).isEqualTo("New Name"); + assertThat(savedUser.getAge()).isEqualTo("25"); + assertThat(savedUser.getPronouns()).isEqualTo("they/them"); + assertThat(savedUser.getBio()).isEqualTo("New bio"); + assertThat(savedUser.getProfilePicture()).isEqualTo("new-pic"); + assertThat(savedUser.getTheme()).isEqualTo("default"); + assertThat(savedUser.getSocialLinks()).hasSize(1); + assertThat(savedUser.getSocialLinks().get(0).getTitle()).isEqualTo("GitHub"); + assertThat(savedUser.getSocialLinks().get(0).getUrl()).isEqualTo("https://github.com/johndoe"); + } + + @Test + @DisplayName("Should keep existing links when updated data has null social links") + void testUpdateUserProfile_NullSocialLinks_KeepsExistingLinks() { + // Arrange + User updatedData = new User(); + updatedData.setName("New Name"); + updatedData.setAge("27"); + updatedData.setPronouns("they/them"); + updatedData.setBio("Updated bio"); + updatedData.setProfilePicture("new-avatar"); + updatedData.setTheme("default"); + updatedData.setSocialLinks(null); + + List originalLinks = new ArrayList<>(existingUser.getSocialLinks()); + + when(userRepository.findByUsername("johndoe")).thenReturn(Optional.of(existingUser)); + when(userRepository.save(existingUser)).thenReturn(existingUser); + + // Act + dashboardService.updateUserProfile(updatedData, "johndoe"); + + // Assert + assertThat(existingUser.getName()).isEqualTo("New Name"); + assertThat(existingUser.getAge()).isEqualTo("27"); + assertThat(existingUser.getPronouns()).isEqualTo("they/them"); + assertThat(existingUser.getBio()).isEqualTo("Updated bio"); + assertThat(existingUser.getProfilePicture()).isEqualTo("new-avatar"); + assertThat(existingUser.getSocialLinks()).hasSameSizeAs(originalLinks); + assertThat(existingUser.getSocialLinks().get(0).getTitle()).isEqualTo("Portfolio"); + verify(userRepository).save(existingUser); + } + + @Test + @DisplayName("Should clear existing links when updated data contains only blank links") + void testUpdateUserProfile_OnlyBlankLinks_ClearsExistingLinks() { + // Arrange + User updatedData = new User(); + + SocialLink blankOne = new SocialLink(); + blankOne.setTitle(" "); + blankOne.setUrl(" "); + + SocialLink blankTwo = new SocialLink(); + blankTwo.setTitle(""); + blankTwo.setUrl(""); + + updatedData.setSocialLinks(List.of(blankOne, blankTwo)); + + when(userRepository.findByUsername("johndoe")).thenReturn(Optional.of(existingUser)); + when(userRepository.save(existingUser)).thenReturn(existingUser); + + // Act + User result = dashboardService.updateUserProfile(updatedData, "johndoe"); + + // Assert + assertThat(result).isSameAs(existingUser); + assertThat(existingUser.getSocialLinks()).isEmpty(); + verify(userRepository).save(existingUser); + } + + @Test + @DisplayName("Should throw exception when updating profile for missing user") + void testUpdateUserProfile_UserNotFound_ThrowsException() { + // Arrange + User updatedData = new User(); + when(userRepository.findByUsername("missing-user")).thenReturn(Optional.empty()); + + // Act + Assert + assertThatThrownBy(() -> dashboardService.updateUserProfile(updatedData, "missing-user")) + .isInstanceOf(RuntimeException.class) + .hasMessage("User not found: missing-user"); + } + + // ==================== Theme Tests ==================== + + @Test + @DisplayName("Should return available themes") + void testGetAvailableThemes_ReturnsDefaultTheme() { + // Act + List themes = dashboardService.getAvailableThemes(); + + // Assert + assertThat(themes).containsExactly("default"); + } +} + + diff --git a/src/test/java/com/basecamp/HyprLink/service/ProfileServiceTest.java b/src/test/java/com/basecamp/HyprLink/service/ProfileServiceTest.java new file mode 100644 index 0000000..a50bf0d --- /dev/null +++ b/src/test/java/com/basecamp/HyprLink/service/ProfileServiceTest.java @@ -0,0 +1,80 @@ +package com.basecamp.HyprLink.service; + +import com.basecamp.HyprLink.entity.User; +import com.basecamp.HyprLink.repository.UserRepository; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +@DisplayName("ProfileService Tests") +class ProfileServiceTest { + + @Mock + private UserRepository userRepository; + + @InjectMocks + private ProfileService profileService; + + // ==================== Profile Lookup Tests ==================== + + @Test + @DisplayName("Should return user profile when user ID exists") + void testGetUserProfileById_UserExists_ReturnsUser() { + // Arrange + User user = new User(); + user.setId(1L); + user.setUsername("johndoe"); + user.setName("John Doe"); + + when(userRepository.findById(1L)).thenReturn(Optional.of(user)); + + // Act + User result = profileService.getUserProfileById(1L); + + // Assert + assertThat(result).isSameAs(user); + assertThat(result.getId()).isEqualTo(1L); + assertThat(result.getUsername()).isEqualTo("johndoe"); + verify(userRepository).findById(1L); + } + + @Test + @DisplayName("Should return null when user ID does not exist") + void testGetUserProfileById_UserMissing_ReturnsNull() { + // Arrange + when(userRepository.findById(999L)).thenReturn(Optional.empty()); + + // Act + User result = profileService.getUserProfileById(999L); + + // Assert + assertThat(result).isNull(); + verify(userRepository).findById(999L); + } + + @Test + @DisplayName("Should return null when repository has no user for null ID") + void testGetUserProfileById_NullId_ReturnsNull() { + // Arrange + when(userRepository.findById(null)).thenReturn(Optional.empty()); + + // Act + User result = profileService.getUserProfileById(null); + + // Assert + assertThat(result).isNull(); + verify(userRepository).findById(null); + } +} + + diff --git a/src/test/java/com/basecamp/HyprLink/service/TEST_DOCUMENTATION.md b/src/test/java/com/basecamp/HyprLink/service/TEST_DOCUMENTATION.md new file mode 100644 index 0000000..541dacc --- /dev/null +++ b/src/test/java/com/basecamp/HyprLink/service/TEST_DOCUMENTATION.md @@ -0,0 +1,192 @@ +# Service Layer Test Suite Documentation + +## Overview +The service-layer test suite verifies business logic in `AuthService`, `DashboardService`, and `ProfileService` with isolated unit tests using Mockito. + +This suite includes **15 test cases** that cover: +- successful service behavior +- repository interaction expectations +- filtering and transformation logic +- edge cases and error paths + +## Test Configuration +- **Framework:** JUnit 5 (Jupiter) +- **Testing Library:** AssertJ (Fluent Assertions) +- **Mocking:** Mockito (`@ExtendWith(MockitoExtension.class)`) +- **Style:** Arrange-Act-Assert (AAA) + +## Test Organization + +### AuthService Tests (5 tests) + +#### 1. testRegisterUser_EncodesPasswordAndSaves +- **Purpose:** Verify that registration hashes the password before persistence +- **Scenario:** Register a user with plain text password +- **Assertions:** + - Saved user has encoded password + - Username remains unchanged + +#### 2. testRegisterUser_ReturnsSavedUser +- **Purpose:** Verify service returns repository save result +- **Scenario:** Register valid user +- **Assertions:** + - Returned instance matches repository response + - Encoder and repository are called correctly + +#### 3. testPrepareRegistrationFormData_InitializesBlankLink +- **Purpose:** Verify register form model starts with one empty social link row +- **Scenario:** Build registration form data +- **Assertions:** + - User object exists + - Social links list exists and contains one blank link + +#### 4. testPrepareRegistrationFormData_ReturnsFreshInstancePerCall +- **Purpose:** Verify each form preparation call is independent +- **Scenario:** Call form preparation twice +- **Assertions:** + - Returned users are different instances + - Social link lists are different instances + - Both calls include one blank link row + +#### 5. testGetAvailableThemes_ReturnsDefaultTheme +- **Purpose:** Verify available themes list +- **Scenario:** Fetch themes for auth pages +- **Assertions:** + - Exactly `"default"` is returned + +### DashboardService Tests (7 tests) + +#### 6. testGetUserForDashboard_UserExists_AppendsBlankLink +- **Purpose:** Verify dashboard always includes an additional empty link slot +- **Scenario:** Existing user is loaded +- **Assertions:** + - User is returned + - Social link count increases by one + - Appended link is blank + +#### 7. testGetUserForDashboard_UserNotFound_ReturnsNull +- **Purpose:** Verify graceful missing-user behavior +- **Scenario:** Username does not exist +- **Assertions:** + - Method returns null + +#### 8. testUpdateUserProfile_UpdatesFieldsFiltersLinksAndSaves +- **Purpose:** Verify full profile update and social link filtering +- **Scenario:** Updated payload includes valid + invalid links +- **Assertions:** + - Core profile fields are updated + - Blank/null links are filtered out + - Repository save is called with filtered result + +#### 9. testUpdateUserProfile_NullSocialLinks_KeepsExistingLinks +- **Purpose:** Verify null social-links input does not erase existing links +- **Scenario:** Updated payload has `socialLinks = null` +- **Assertions:** + - Basic fields are updated + - Existing links remain intact + - Save is still called + +#### 10. testUpdateUserProfile_OnlyBlankLinks_ClearsExistingLinks +- **Purpose:** Verify all-invalid social links clear persisted links +- **Scenario:** Updated payload contains only blank link entries +- **Assertions:** + - Existing links are cleared + - Save is called with empty link list + +#### 11. testUpdateUserProfile_UserNotFound_ThrowsException +- **Purpose:** Verify explicit failure for missing update target user +- **Scenario:** Username not found in repository +- **Assertions:** + - RuntimeException is thrown + - Exception message matches expected text + +#### 12. testGetAvailableThemes_ReturnsDefaultTheme +- **Purpose:** Verify dashboard theme options +- **Scenario:** Fetch themes +- **Assertions:** + - Exactly `"default"` is returned + +### ProfileService Tests (3 tests) + +#### 13. testGetUserProfileById_UserExists_ReturnsUser +- **Purpose:** Verify profile lookup by valid ID +- **Scenario:** Repository returns a matching user +- **Assertions:** + - Returned object matches repository object + - Key fields (id/username) are correct + +#### 14. testGetUserProfileById_UserMissing_ReturnsNull +- **Purpose:** Verify profile lookup behavior when ID is missing +- **Scenario:** Repository returns empty +- **Assertions:** + - Method returns null + +#### 15. testGetUserProfileById_NullId_ReturnsNull +- **Purpose:** Verify behavior for null ID input +- **Scenario:** Repository returns empty for null ID +- **Assertions:** + - Method returns null + - Repository called with null + +## Key Testing Strategies + +### 1. Service Isolation +- Repositories and encoders are mocked +- Tests validate service logic, not database behavior + +### 2. Interaction + State Validation +- Verify both **what changed** (entity fields/lists) and **what was called** (`save`, `findById`, `findByUsername`) + +### 3. Input Matrix Coverage +- Valid input +- Missing user input +- Null collections +- Blank/invalid social links +- Null ID path + +### 4. Consistent Style +- `@DisplayName` used across all tests +- Method names follow `testMethod_Scenario_Expected` +- Sections grouped with comment banners to match repository test readability + +## Running the Tests + +### Run all service tests +```bash +./mvnw test -Dtest=AuthServiceTest,DashboardServiceTest,ProfileServiceTest +``` + +### Run one class +```bash +./mvnw test -Dtest=DashboardServiceTest +``` + +### Run one test method +```bash +./mvnw test -Dtest=DashboardServiceTest#testUpdateUserProfile_UpdatesFieldsFiltersLinksAndSaves +``` + +## Test Results + +✅ Service test suite passes successfully +- **Tests run:** 15 +- **Failures:** 0 +- **Errors:** 0 +- **Skipped:** 0 + +## Coverage Summary + +The suite covers: +- ✅ Auth registration password encoding workflow +- ✅ Registration form model initialization logic +- ✅ Dashboard model preparation logic +- ✅ Profile update mapping behavior +- ✅ Social link filtering rules +- ✅ Missing-user exception path +- ✅ Profile retrieval success and null-return paths + +## Future Enhancements +- Add negative tests for malformed profile field input (if validation rules are introduced) +- Add parameterized tests for social link filtering combinations +- Add tests for additional theme options if themes become dynamic + From 4516ab4cd99cb9762534c76f660a71685da9bb64 Mon Sep 17 00:00:00 2001 From: possibly-nai Date: Tue, 17 Mar 2026 11:55:01 -0500 Subject: [PATCH 11/25] dasboard say whaat --- pom.xml | 4 + .../controller/DashboardController.java | 168 +++++++- .../com/basecamp/HyprLink/entity/User.java | 5 + .../HyprLink/security/SecurityConfig.java | 2 +- src/main/resources/application.properties | 14 +- src/main/resources/background templates/1.png | Bin 0 -> 48418 bytes .../resources/background templates/10.png | Bin 0 -> 26104 bytes src/main/resources/background templates/2.png | Bin 0 -> 62411 bytes src/main/resources/background templates/3.png | Bin 0 -> 144074 bytes src/main/resources/background templates/4.png | Bin 0 -> 190576 bytes src/main/resources/background templates/5.png | Bin 0 -> 36852 bytes src/main/resources/background templates/6.png | Bin 0 -> 48002 bytes src/main/resources/background templates/7.png | Bin 0 -> 23347 bytes src/main/resources/background templates/8.png | Bin 0 -> 32136 bytes src/main/resources/background templates/9.png | Bin 0 -> 46961 bytes src/main/resources/static/dashboard.css | 396 ++++++++++++++++++ .../resources/static/{css => }/default.css | 52 +++ src/main/resources/templates/dashboard.html | 378 +++++++++++++---- src/main/resources/templates/profile.html | 5 +- 19 files changed, 938 insertions(+), 86 deletions(-) create mode 100644 src/main/resources/background templates/1.png create mode 100644 src/main/resources/background templates/10.png create mode 100644 src/main/resources/background templates/2.png create mode 100644 src/main/resources/background templates/3.png create mode 100644 src/main/resources/background templates/4.png create mode 100644 src/main/resources/background templates/5.png create mode 100644 src/main/resources/background templates/6.png create mode 100644 src/main/resources/background templates/7.png create mode 100644 src/main/resources/background templates/8.png create mode 100644 src/main/resources/background templates/9.png create mode 100644 src/main/resources/static/dashboard.css rename src/main/resources/static/{css => }/default.css (52%) diff --git a/pom.xml b/pom.xml index 8d9ea1b..0864365 100644 --- a/pom.xml +++ b/pom.xml @@ -92,6 +92,10 @@ h2 test + + org.springframework.boot + spring-boot-starter-validation + org.springframework.boot spring-boot-starter-security diff --git a/src/main/java/com/basecamp/HyprLink/controller/DashboardController.java b/src/main/java/com/basecamp/HyprLink/controller/DashboardController.java index 5f50cd7..641f39d 100644 --- a/src/main/java/com/basecamp/HyprLink/controller/DashboardController.java +++ b/src/main/java/com/basecamp/HyprLink/controller/DashboardController.java @@ -3,18 +3,40 @@ import com.basecamp.HyprLink.entity.SocialLink; import com.basecamp.HyprLink.entity.User; import com.basecamp.HyprLink.repository.UserRepository; +import org.springframework.core.io.Resource; +import org.springframework.core.io.UrlResource; +import org.springframework.http.MediaType; +import org.springframework.http.MediaTypeFactory; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ExceptionHandler; import java.security.Principal; import java.util.List; +import java.io.File; +import java.net.MalformedURLException; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.LinkedHashSet; +import java.util.Set; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MaxUploadSizeExceededException; +import java.io.IOException; + @Controller public class DashboardController { + private static final String STATIC_BG_DIR = "src/main/resources/static/images/background-templates"; + private static final String PROJECT_BG_DIR = "src/main/resources/background templates"; + private final UserRepository userRepository; public DashboardController(UserRepository userRepository) { @@ -31,31 +53,53 @@ public String showDashboard(Principal principal, Model model) { user.getSocialLinks().add(new SocialLink()); } - model.addAttribute("user", user); - model.addAttribute("themes", List.of("default", "dark")); + + addDashboardModelData(model, user); return "dashboard"; } + @PostMapping("/dashboard/save") - public String saveProfile(@ModelAttribute User updatedData, Principal principal) { + public String saveProfile(@ModelAttribute("user") User updatedData, Principal principal, + @RequestParam(value = "profilePictureFile", required = false) MultipartFile profilePictureFile, + @RequestParam(value = "backgroundFile", required = false) MultipartFile backgroundFile) throws IOException { + User existingUser = userRepository.findByUsername(principal.getName()).orElseThrow(); + if (profilePictureFile != null && !profilePictureFile.isEmpty()) { + String filename = saveUploadFile(profilePictureFile, principal.getName() + "_"); + existingUser.setProfilePicture("/images/uploads/" + filename); + } else if (updatedData.getProfilePicture() != null && !updatedData.getProfilePicture().isEmpty()) { + existingUser.setProfilePicture(updatedData.getProfilePicture()); + } + + if (backgroundFile != null && !backgroundFile.isEmpty()) { + String filename = saveUploadFile(backgroundFile, principal.getName() + "_bg_"); + existingUser.setBackgroundImage("/images/" + filename); + } else if (updatedData.getBackgroundImage() != null && !updatedData.getBackgroundImage().isEmpty()) { + existingUser.setBackgroundImage(updatedData.getBackgroundImage()); + } // Update basic fields existingUser.setName(updatedData.getName()); existingUser.setAge(updatedData.getAge()); existingUser.setPronouns(updatedData.getPronouns()); existingUser.setBio(updatedData.getBio()); - existingUser.setProfilePicture(updatedData.getProfilePicture()); existingUser.setTheme(updatedData.getTheme()); - - // Update Social Links: Filter out any completely blank ones + existingUser.setLinkStyle(updatedData.getLinkStyle()); + existingUser.setTextAlign(updatedData.getTextAlign()); + existingUser.setButtonColor(updatedData.getButtonColor()); + existingUser.setFontFamily(updatedData.getFontFamily()); + System.out.println("Hello World"); + // Keep only links that have both a title and a URL if (updatedData.getSocialLinks() != null) { - List validLinks = updatedData.getSocialLinks().stream() - .filter(link -> link.getTitle() != null && !link.getTitle().isBlank() - && link.getUrl() != null && !link.getUrl().isBlank()) - .toList(); + List validLinks = new ArrayList<>(); + for (SocialLink link : updatedData.getSocialLinks()) { + if (link.getTitle() != null && !link.getTitle().isBlank() + && link.getUrl() != null && !link.getUrl().isBlank()) { + validLinks.add(link); + } + } - // Clear the old links and add the newly edited/filtered ones existingUser.getSocialLinks().clear(); existingUser.getSocialLinks().addAll(validLinks); } @@ -63,4 +107,106 @@ public String saveProfile(@ModelAttribute User updatedData, Principal principal) userRepository.save(existingUser); return "redirect:/dashboard?success"; } + + @ExceptionHandler(MaxUploadSizeExceededException.class) + public String handleUploadTooLarge() { + return "redirect:/dashboard?uploadTooLarge"; + } + + @GetMapping("/images/background-templates/{filename:.+}") + public ResponseEntity backgroundTemplate(@PathVariable String filename) throws MalformedURLException { + String safeFilename = Paths.get(filename).getFileName().toString(); + Path path = resolveBackgroundPath(safeFilename); + if (path == null) { + return ResponseEntity.notFound().build(); + } + + Resource resource = new UrlResource(path.toUri()); + MediaType mediaType = MediaTypeFactory.getMediaType(resource) + .orElse(MediaType.APPLICATION_OCTET_STREAM); + + return ResponseEntity.ok() + .contentType(mediaType) + .body(resource); + } + + private List loadBackgrounds() { + Set backgrounds = new LinkedHashSet<>(); + addBackgroundsFromDirectory(backgrounds, PROJECT_BG_DIR); + addBackgroundsFromDirectory(backgrounds, STATIC_BG_DIR); + List sorted = new ArrayList<>(backgrounds); + sorted.sort((a, b) -> { + try { + int numA = Integer.parseInt(a.replaceAll("\\.[^.]+$", "")); + int numB = Integer.parseInt(b.replaceAll("\\.[^.]+$", "")); + return Integer.compare(numA, numB); + } catch (NumberFormatException e) { + return a.compareTo(b); + } + }); + return sorted; + } + + private void addBackgroundsFromDirectory(Set backgrounds, String directoryPath) { + File folder = new File(directoryPath); + if (!folder.exists() || !folder.isDirectory()) { + return; + } + + File[] files = folder.listFiles(); + if (files == null) { + return; + } + + for (File file : files) { + if (file.isFile() && hasSupportedImageExtension(file.getName())) { + backgrounds.add(file.getName()); + } + } + } + + private Path resolveBackgroundPath(String filename) { + Path projectPath = Paths.get(PROJECT_BG_DIR, filename); + if (projectPath.toFile().isFile()) { + return projectPath; + } + + Path staticPath = Paths.get(STATIC_BG_DIR, filename); + if (staticPath.toFile().isFile()) { + return staticPath; + } + + return null; + } + + private boolean hasSupportedImageExtension(String filename) { + String lower = filename.toLowerCase(); + return lower.endsWith(".jpg") || lower.endsWith(".jpeg") || lower.endsWith(".png") || lower.endsWith(".webp"); + } + + private void addDashboardModelData(Model model, User user) { + model.addAttribute("user", user); + model.addAttribute("themes", List.of("default", "dark")); + model.addAttribute("linkStyles", List.of("pill", "box", "underline")); + model.addAttribute("textAlignments", List.of("center", "left")); + model.addAttribute("buttonColors", List.of("blue", "green", "red", "purple", "orange")); + model.addAttribute("fontFamilies", List.of("System", "Georgia", "Courier", "Arial")); + model.addAttribute("backgrounds", loadBackgrounds()); + } + + private String saveUploadFile(MultipartFile file, String filenamePrefix) throws IOException { + String uploadDir = "src/main/resources/static/images/"; + + File uploadFolder = new File(uploadDir); + if (!uploadFolder.exists()) { + uploadFolder.mkdirs(); + } + + String originalName = file.getOriginalFilename() == null ? "image" : Paths.get(file.getOriginalFilename()).getFileName().toString(); + String filename = filenamePrefix + System.currentTimeMillis() + "_" + originalName; + String filepath = uploadDir + filename; + + file.transferTo(new File(filepath)); + return filename; + } } \ No newline at end of file diff --git a/src/main/java/com/basecamp/HyprLink/entity/User.java b/src/main/java/com/basecamp/HyprLink/entity/User.java index 988a02a..6610094 100644 --- a/src/main/java/com/basecamp/HyprLink/entity/User.java +++ b/src/main/java/com/basecamp/HyprLink/entity/User.java @@ -24,6 +24,11 @@ public class User { private String bio; private String profilePicture; private String theme; + private String backgroundImage; + private String linkStyle; + private String textAlign; + private String buttonColor; + private String fontFamily; @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) @JoinColumn(name = "user_id") diff --git a/src/main/java/com/basecamp/HyprLink/security/SecurityConfig.java b/src/main/java/com/basecamp/HyprLink/security/SecurityConfig.java index 19e048a..a544111 100644 --- a/src/main/java/com/basecamp/HyprLink/security/SecurityConfig.java +++ b/src/main/java/com/basecamp/HyprLink/security/SecurityConfig.java @@ -20,7 +20,7 @@ public PasswordEncoder passwordEncoder() { public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests(auth -> auth - .requestMatchers("/register", "/login", "/css/**", "/profile/**").permitAll() // Public pages + .requestMatchers("/", "/register", "/login", "/css/**", "/profile/**").permitAll() // Public pages .anyRequest().authenticated() // Everything else requires login ) .formLogin(form -> form diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index d02e779..9aa2af0 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -2,6 +2,16 @@ spring.application.name=spring-unit-project spring.datasource.url=jdbc:postgresql://localhost:5432/quest-log spring.datasource.username=postgres -spring.datasource.password= +spring.datasource.password=Nf101308! +spring.datasource.driver-class-name=org.postgresql.Driver -spring.jpa.hibernate.ddl-auto=create \ No newline at end of file +spring.jpa.hibernate.ddl-auto=create +spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect + +server.port=8080 + +spring.servlet.multipart.max-file-size=200MB +spring.servlet.multipart.max-request-size=200MB +server.tomcat.max-http-form-post-size=200MB +server.tomcat.max-swallow-size=200MB +spring.servlet.multipart.enabled=true \ No newline at end of file diff --git a/src/main/resources/background templates/1.png b/src/main/resources/background templates/1.png new file mode 100644 index 0000000000000000000000000000000000000000..411f906d6511d291b1c46c0b62b7f5e45af99afc GIT binary patch literal 48418 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 bVQI>q@1H8~#*+Vg3zg~t&Hb55Cj$Nl=H`J- literal 0 HcmV?d00001 diff --git a/src/main/resources/background templates/2.png b/src/main/resources/background templates/2.png new file mode 100644 index 0000000000000000000000000000000000000000..f11655534fd2f24e4f0fad3baa5d132f39ea6fb3 GIT binary patch literal 62411 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/background templates/3.png b/src/main/resources/background templates/3.png new file mode 100644 index 0000000000000000000000000000000000000000..ba466cdeb2b4eab9cea1f39d60a0643920da1f4c GIT binary patch literal 144074 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

dt_dp$S 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ΜLyAj@FL8c1o>7Wc3#Ukp22y<^=Grh(l%-MA(^1eQ?yc#3F?JL+UCKa13N| z9iW@FYHsb^;oo8ooeSw1grdXa*M|fNYjg~w9E-Ym?l1jf3~6X5AK}+?nu9Bp3Jwrp zex|(`o-tN(41tTr5wNX> zpv$~F4WF1lzW1|HQ~Th0xg)%+KBh6PoV8u9Vwux;S`x$2>%(LL$b-v-vme&EC*`?DnpBYo`Y5m<9tbyQsgVL__I@+pWi4&@T zy+m#@+nMGYW-dI@dj4uNpzBETc*0#Q(miQ}rd}x)b579NMt)j}N}8d)NEsL`-VwXv zwP6ZU`3>>`>fOeZ@eC_F; z-BU0{&VWDspdUp&{J!vf&nf6Vi}xj-E`w-1+SE2_`YU($edc^uBH-Xo6o4S}cP#97 zY4O-aXr`Q`WT~w%dCf8Z6Uy?~2yF#qidpi>$L;I3y?0RP96tAr*JYjGh!|bc&r;B& z=K43V)0fgck=rP_&MAv)bQ*)!ww_ufHfZPBn@_p>0<(Xl1(^L%z#2j(wjjRl<^VtS zB$((f2}@|yYkz(_@6~AHVeVT(Q5=uTW_4#Iw~QcOpH-u7IMO$)`09X_jIA3E(AzlG z-##d)`4T)$6w)j>iv;5Hxy!UC%TKpI)eT_;5!JSyYzD=JdR$g^6k0gKsZQSXKNAJK zeetnH0nT(&<%&+-9v^)y6x0;sm8AVrj&P!!J@hFjvhD$tfw!Tm$G*b#$S^Kc=a;-X z$c*Lh-+ul}3TTFGpOO));DL_+5Gp_B!R|ZvUUAxAf-^j@;=bd>TRaj#mRO3aWgGR1 zG9+oU9H?_ldoaq{PTfeZtr{6(t^cWn>a7b8hJVPt^xR)&42&l=5q@g~cY^e^KO~!9 zAh#5S(U;Kqb`+PsviXtpk72{i2lD;RmSPD@m8$}RdAS~waly<5^un}xIM)-h!?{&& ztqJi?y0<-!Y;wQxIJXT0UMJa1I=8P{N`PZXpv=XVDS7OI>fM@E5z@2o%$TWtuMU!&iUe+5nYb?Z2R z&+!Aw7QzG^I>}eK(o2rdCcGz)E@BJpz)FrqiQ^o#`0|hng!WZ)SI&xO^?t#qORwWv zosFyqJsC4U;P4I+lw*q;yU(hKKP95PtTy5M@tB>=I=OlztIGkF~7rjBe zx<}bJlc9H(4+a<;!TdY&?3k{FKgEvI`+iZNe{-uvIAQv7`Tp!1u7SSbp_wqnCsxB~ z!`<=bJ03UYVK25g1h|9y2_m@%8&9@=7EoPKT!3*T#fajQGZZ5#n|gF&+flX9_|@RH z6+g9y?sYtlOsImxFO=U?{i#i@KOHvyG)6D{4{l}L&4u7uzi(I3kt4YHaDKQIe~7*7 z=%7RUB~BDDVR+7;iZ(~R8L?PIWK4A5_h(6tg3cne;`PPU?3G)>r4zt)#%Ep06BiyM{4m)PW8m=XsFFJKg8xj6i1Lx$pZH zj95Q&=+Rdq@<*a~exzZ+8 z>pKQQW@-Wx8MtlLgC_{TYwU0}gpjx8`el3$MgL+P2`bd(ynardIfI{Ch=5u(D5#%^ zmKQEp_%)CJr8fvXzN-${!1)qbu=nAo8$h(GNJ3w!qUk?0nU~~uEJD_%6$TB3>j7!kFgyS`xeEj=;7wvE?(KiU}~`FekM& z0lH!CTJkpGN&(+7%M(lYHS(uuFZ{|l#hL8`^==>@Se1kqMqo+t4}ktvs)R?VnUykz z!ePI5<{$M43=mi@{z z1^~IRmQ0leSY)Y4!I-b?%1jy2rzREI_z1;5J=(9v++R)D)u z{Zlu`u3)IN6_&1_VGw&!!n9<>*j>I1%m;@2ubjSdZr7v+GcDH1Hu1xPAC-x{z7U{&>0FT7$5Uv@}_imuc;ZQ=qH4K$u}(^MiF#fp+J3@KRWGc zBPcu}_Q8h%DEU}jB32bW%1K}XWenuDfbjZ&2A8f3)}SWs3J0JdRVh3Q8Cy02kvO{~ zApdxM5EApNc5cFW*^$rFD3^z@2_dI|g%zx9t`7unV zygRiqs0KA-pEdyHzt-agZCOfWDM}4ecSSD~Q~so-GShe+24-3ZB>G<*Gd#k85ff`h zfrOYaSwHdyUJ0S2f1~D!aCNO8YJQE(5x6S~tTOm#w#$c2i%AY_;sc8AT?td*7irH6 zFr5c7OiE#ZC3do^;iVi2LKU|u?fXr9LGCcdw8i|yAKUOuaV);95_C`cYK^E`G4gO< zTk1UgTlUNT1P+jC&D_bSIW0l~q$s?N0*OJ1caEO%RU>fGuvp!w{HQj|D0C)wFq(<)8KjyXZGO@Sca6RVp z{>rCE&gR8z9_x!;WRNcd;Ss^J_MTt_p$u39?7r($bifqL1}VEaEP{@A@hr)o=9~oeo5Lq<3IqsRnkf#$p z68g!VxFe5Xe*}OLAqavc5FB%NRQb>CN#4giyCUwnhsk}z&Pm+QGdD1gsrzYdMqNXY~KQzo>^i9C+ltNrSWx(WJ7d>ULb4+`2!1k7q;iDve4nh%9LWfxTA zuAdFP=y$ow2yRktlGJkP#pf@xzaZ56ENj>`Rz(lHjQc1+@dCU_^MjXtY(Y`S;Wmi= z-sMbC@CTx|o?0n5uYXcfC`J`7G={0eoa0F#NVMSa^IirFCixT5;mI*+eXe_0A|jh>?8d=XQeuKpeBArkN;0>|xuF&CkP zXJt!H4eZQm%xU5pR8(OlDKF3DqKU6G5RE@E0hE5)7zs;){eEwXS8XT6Sw9H|Wr-b_ zKzjAQg2$KI5s!_>oF|k}H}}F1@zzwadYJwc@$#xRm80ct=YGt;<^QbJ=`Jsuz+||@ zYwG*=?UK>sAFl|)1D_keP{R^4U#1ra`(6%1zt^M<*{dktEHNHchM(VqL)(4ke8byY z-=QUY4p^Sy^?H_9Nj=GLIc&U}s4JOAc>-l`j8fPKBC$K^CZp$SLNU<(fY;8I_b~1Vf49irVsDH-nklA@aF~1n=J5z`?uyf^DGoA#qw~06 z_IubC7WaDR)BqFohtt0#DuIRcv)BVAjlp0z*O3vb$g3!(EHWM{(aLu}# z7m|=QsIA(7BVQJEOuS)v{Fic-4U)hkQ$IHi-%Tq@mD8{nwkg`J^_MCzbSpUmReXEo z7-P42z^2RuuJf<7SP{+FnvTYj(Ekq--ul|pG;8Vsgjg8 z`!>Pzch+i8Wt&$>mE1y4lCgK!@(g4A=0j?@hY(lfH?==EGA)j~s}}A#F4Dn(-g^(B zT0#~);HcAUV-f;#Nt;{cRCyyT6LoUspHd*_?+i{@32i7s)LSM&?PX#q)@3)KQNi-x zD}r}epb?dbx?&~*J|yQ2UPX!CR_K&jFK9&jOso(h>|tE_NMxSyoqa^dIjFf0yTx$d z!bl=TIWe-lP9QQtj1sP;1lDf&Ii4AwnRop*-63A6Dx_R*#H!ugK0(P%q%EhoBu)IL zVvB#D>!B|{@cYQua3T`KErRt%?M1UC`B2PFZJTCty35AFtk19<)(yvo?x0!$n%+#&V6@^lG;sLEzy;~M*CAN_}%rwl#)CgDqpOX4-K6-I%S z$johOY~#t~%YZ8{m-YSSHt&Es586+XGiz}6R`>UoeZZ#cN6g^@l<=aRr&?l7uF*zY zApZ({634o02M2EzagOkpgQhIOZ~G*tj}2R>q)`%-n(${xpP6wDd{nP9A2gtXKB4#xUwr$HEF*y*OqkB(AsCZg8 zy9wC@m@gD*vQ5XL<09|7tw_4IGH)9)cIX*yu&;@JEWKe`fwdr7RaI$h1CQ#&D9?^B z*`T?p0Isj+Vl>90%yUA4dK8xJY;Eu)0kcO-`-Fbk!Lt$NP;T_-C$r;nvh*amS0Y)lBbPcP zl&3#Y@#cq0fYVp^=9f_)9XW_l$7M$aBs9}sk9JJEPlZTgME4^4cTbFot{!0R=!6Z< z$I}sGCSh*bk>_qN12g0l_tT!@0RT!*#E_E`^EJQ^XJ8TuhQ-4^l~j{o{c^y++3tnu zyHG60S}9{!&4}GKT^Nd?>xahrTKcn`k}|3Y43_(QmUf;r%FNGR`N-K1CmTa7=x{el zJA)XR({y!rL=N@uw;VbieJ?hwIU3|z-e1|PcrDb@stPl+0m0yKzr$?nW1;0YpLTjQ zoVZ?X%+0ua$=5h^>B^tT>Re@~x=%iTQC$d(%M2u?WoXsadz@hGD(5&|-4Jy;fwDl$ zN3jG$1^nP6u8>9 zA|M&Q0#0VD{WYkV^t!2yKTNh;5u)b$do<+BrrzooKf*PTglSdyO}M3btSCi=N$2A5 zdOtp^4zvd)owodoys^eIQdu&;hL33BlbX`V*nXoATk1{lKYB+zpm$ueQI-nf3B!)W z%rSo`0cIqQu@Jy;+U*1=6Z>$0GO@2hPqj098wO7$82(RnfdQ1KP}R^up3};-zU%n` zm}N96=K1eI|2}*FQ=zDR4Gf^_rpm6^4}E&U|H}*T?!*>QhM0N@(<(IN;n|4=NCgz6 ziVv8sx^xhZvCU&MD!Q+ljL?uHTQ=BS!gnJjedjee-^u$YeE^R8Gk_*k7s3uyX~(*I z!jw}~HUZNB&~hH&mCc%@ze&nll5r3Vkf|v$1Sf3_o}u8EP*F&o&)<@Nk-9<;AV8{u z!NH#pM>w#Z)-ZFdp9Lz5DOEk&6${i^PFgH%rR<-sm9hEdUlHN856CDXg1*EaS_yjx zFboHu5wMZ`HOz9wurd8L##hwy;9yL&;M{LN$H!>sl}JeiQ&B8cCIu0;b-h5@?X?sH zN^3Q4TI3F(JWOcpWUS+^-4Q^pmzF^Di2{cIPh-O`X|6~9rf@`RY|@Ckg*LHJTXKuT zLB{Ix0Cb`4ne+UB!GA3tpa%xQCE*=1{Imv903V||Fq=9)xSUX~j@BSj;VJUZK8Mf; z{x>v002-hf_pJZ5*uD+%3dpsxgv%!~6CJZ8RRH-Lx}jy`J^3y$Ib!ZF0Sy$zA5bpU zCY7n4XHee(qVvFfi*+;wVsGf zaVo&p4lIE16B*To1SNY=4@th0bQI3gbxbIAU<|$(70Wy*3dl4LHf0-_>M^ip*K7YR z`#M#6vl>lo>Y*8*jo|(_Y{&^}24hA9;@5)=pS1zoNhd5-mxWFWu+;%KmALmL7EL2> zsS<1)2Ta^ZIsBz`;Ohl2S2R+?6zpLiPl%dRcrGfD4oteU-jKKxH{by_qoa4m-oLpa zF_|J%yf)S|3+MFz*@^tn8-y>J0!cDU;eox`l9}}bRq^};7hXwoC6cQ=6wCO_@6<+M zWK!`ns!;jjW9NX-!-FB>00FBDQ|~tK56)H3Zou*-i884L#0KBtaxkgrE!crcPsWp{ zbKFt|-u%yo-qps>HwztgfQ;-5{2t|d5KGPrGFCmDk2{>6@GrB@gURs5UCFX&K2A6t z_dZ@$S+hfRUp>84p&FgR&}5dmzz{%R3i~C=C|WhteE(yE^x?9)EoOS6Pe;3_=qUby z59K)T7esDu>dVQ7Zur#YD~_ofHk76&m2{{k(IO-kHb%*d-JVBAtZMJB{2j>p>W2{k zK3Mv@m-g^?rY4J;xd#O8x^$}fPA#YGC#U@eD$KGl$c4wrq57}6O$)tT>BG+JTIYls zx3BJwH(EO6L^}R+s6^j62A`AGC2-Z*Cm;uvV4Y8X;_{*D`qk`mADa?P24VJV-YipQ z{-7VU?A`CqpDWVptrBm2{#?Bisc|*F>1*GtOQ}@J}{n*uv z{ra==C*b9O)lEy^Gd1P}LpLJ(2ii(tOUNyUg!3=aT#{Z!>q>8L={`Ey1Lql-2nyb& zUF-7JTHJaW_GAuf!$a=m#CoA2`tn2q6VGh(2H^QW?miE}M0PGmS-svv!@o6nHa16b zeL@T3phc7EdsQ%Z=T)Lg6~X((aKa>Rf(;f1x1#KEcFV`LX0+(Y+2O}5;D}Pqg||@R zm_vQK7AVB5atzg&=o2Day~EU{IjOt)5+JrJ#5R&CnmE#20X55=(CRF}tBev(?rVGC zWC^T(BEKoI@$;JL;>J?VqUsUvxj1C$&uUwZqnd8oSV zIg^b1*YEU1Ub@?=ftYm-@I-5_T0)uEw{Gp6hb)nH^F3zt{hHys@(!0Vos1X{JM-~x z5Ob^PueB4$*LhS&QX9+sRY$@xMctZD{WVkfc53*dIvA(lX*b1qh2uJqoe-z{4wD}$SN+URnD!sAQ&W_2~k`qo)s&V=VwET3or%B4IR&xJk zBi?lWpfe|K+Az&Fq7Wh=zI^Sse>@y8rVK*N?D^+F=?1|eUVv$lubg>Y5sln5 z{Dc49u27}C*N{<`HF*!iwi^8fljgWd(2T*+S0QCns_y%PPqqi4ep1rsdMD$5Y)xb; zN&OOUs`n8bf@26*ugjxueNQ+0Ym7xZGdZaiZCeJ;niD8~<=$F1Ad?acex*&sH`rErPoqizK?IKzY`t;%tj-t+N^90nzGVB^e5CT+ zkhG+(JfYPH&rJPUxvYRUNj<$#75*?e&n1(oJ#9DB3hhnVPGXrEo-jN!O>BZv1sQ); z_#9ul0-wMC-^{BR=kSWV4jQ3>?!aey6;AG?P%}7sZ41Wn}A-ifZMfLmcs2;RLiZ}2Hk$Gj5 z@}1W6%r%OM68cn>0bsX~SLr`!#(lh6bY#?YH7TP0$R=g;_gs4XR;4M|XNOhRAK{T# z{CW);v2>cj0&Y&H6nv-*+bJD|54R&OT`!EmE%1}e$6no!k1Rdl96r!XZk=^-=<(PW zRoqv%ab3{bDyM+tw@JBVhfBQ7X`6&>kGaQ&zvu9ExcxB|Ow)*E2^mJs2@rs5jrnpf zNYZEIW$@`_L*eDVrOWDU%5|%EW@uk~h`Kc^(+1EFd$${`Yus%3#QG|yWyChC_?uTA zB)9h9QnK$U1o1TPEt%O>6`vf2);DTnbTNu|jJy*Z$2=h^b-NuJ@mZg)=^A9dU(C_g zPy15De#GAc2a7(xe&jRgTl3KR%Ax7{^hs(8%|_uHuaan144D&+yJOw4lG4T*_+hOC zyrY&fF6U!BLHGsfff80MFqA+RZCK|_z+sVGCP&rL5Wf=6P9`JpmvoSQ4WU%mrU!)) za%ORM$E216@VIdf9NZc+Wp01ovw2C+{t_F}b-6L=SUx7SZq81{0gve8mehc=v#P}i z_Sj`>JYCnA_a*zz9qsjolr_+nRqW@lJ z{Xq1|Tg&fevvf&ro%FM4ocV9MrssVboo1xJ#GZaDuj-RLJF%@YUJK!G7VgYIBNjpN zFVx3-pI%+lQWpSCq?V1SGY0mM<0jUTxu&rGtc2dCImzYp;~^*Dp5z~mQfI#vgPD3?8*+dvGnt??%x^p97ObSl z7FsZR&1MCI~*mA935+D#X%9@W=Yt?qr0;f#P_c$5ZV0E|83=hyA zNKA?y?XZU1O1%>I*@dF^>3jbHw%*B>-~(Wb5@K$H71zLrtZrsC3jNg{vn;dqLg_Q! zi!w6jy~eT6R(hSkG>dJ*kopZ?~`YB68Qx$1c1!Mv%Em z#!uA#bWLubJu%yq`uqEB;VV&1iBL(mVjVqK_&S#jlX!x@m;SWeb-|-`|&xEt>7eZS<+C^B(hP+h#j~uf$sc=QNtUi znbDsMM>Fp|kw6OvDSO~wL}Qz@2U!zh*3@2&j*c71cGn(gErP+Va&{UClI@T2U=z&i zzQDkrOI>Dh4MrJq>&G35*9Hh|BW))*nu?bqJZxhLH)MtPF@~_IGMS-kLbjTc{ZMqs_|Iu+ z$E#UO>@auh9O>D|=pwFOx z+MmmpCV^)juhQ{h>H_^ib`M31x@rHD!ykxVg7VuSr;Bd-$D+y8)wRimI2V+GCRf?A zM1pPt?mN5(hk@X4zuv1|-J`hM%=A~dWL~$%8y(X7qz>(5=eC~eXLFQ33G0>P&h?%M zlT1km+)5e4KY}?} zGL}f66k-51VF+LR4a`D^W{b6X6?22=3=>Wq;64Tfko6&bFS^i~7$O9+ z*THS0n_*fYq}U|>l&y3WV*B(H31-?&%PZddF7B*#(ji!Bm@O3Ff<|Y~e!+bLZZEhn zYeFlIpfai$*(43b%4=@->)+?p#@MI{t)CfsrAO;2$o@zqnv?p38e|r298M~h%%dn; zhj4F?1em+ZDXL1Cz}yB!*k2}#;8zqJ9Srszh(lqM=QY6xS%W}vpQU$o2EnMkS&$uV zq5v+zZr*YknNZjMKWSgcN8~!KR9>&Ev(95lG`2Tu@fg&`^2B+zG*)?^74pZpR7bXL zayO+RZjD)vwR2Wo)^P)hD|4kDxd7jHGuLIovNBUZ*5XpW7tf1+|8?`XuSY&o8;83= z`7FejBMnHAt8c|Pdtmzyh^7cVLNUBiLW5Aq(v95FHF@9z%b6qB7PxHQT3J`i2s-#^ ztH1|*Wg2=vPpFDI@k5_rX~@*#W?B&9wvB5tr81aMt}>zpG{*AV!+T*(x*QHE9F>QW z`0_q2JL)45!8Q-{LoRts@2d{}z|w?6dfwZrgj&7td?Oj(?0I_2J6k!i!OlwT(x+1P z$A-j_XgCQSJ zuRK`WNBM$&?*!p>j9=epBPuf>>yw~RY`tL zRyzL-jnUyQsUxOzN=R(79kv&4ri#Ct_t;6d6-5ikH|vnBaJAHf^ZAEi&GO>=eXyq} zqJXH$Ol9Q(0D3LcUbLCTx;LyQPM2QevI!UI&Pd^Rn!=S_ZFfB7C87v3EdNN8g)P6V zu+EdmLfj&H(VP^@u31H(Visk`WVxsI1?%3vRkg=hQ!-Jq;pTds5=n1aW0g$&V?)*l zl6%$8QyY>t)M|yBx>eQA1QRLDMH{YyjZx^i-y-7&WTCj-6ys*KFLS8E&8lAZma7pY z1O^XA`Id#hR;$u;dEUOhgcglnFBRF_>#}{o8Y>?twBH75{lr{@PZ$PDt#A2xk2(Zt z`wY@sthnwI#~s%F#B`10lrde6j8W{3?!vrob>Wm%qnUqxY1f3-u5Zy=bkxbW84f-C zV6#{s;o3ieyQO=^i|3R*QO%~^R4&klse`)uAG;2F%)6Fg}C_oebz9p)9Uf>dM zi?sH++iz&XwD02+Gxy>MX&7`n$VNcT4lr(q1?e#z2>foN{>4$Y50{#(ljay&g?*w3 zfO(KOadl65wE>vbA#p8k&4d#lG?tz;eM1}DP8uyti~Yf3vWS@H8)%p<4Eoy0*j9}Y zkOCC(>xJu)d^^xlk0+0M3_q%7zComm9>c5JZ6t<^?FF?Pr5ThH_favcv5}hPAtwa7 z=BJgYO{Ap#e!miFHU3@XE1~gltD-uGiRlrx0m83hMQpaN?&Tu$)SFR`w)Zg&>FDa> zdPC?;>sHeGLsPHtA6>D%I$-UZawm1inr8g8IE@b19D@0)B0qdv*6Ju%9>JbHFR1FX znbyGao5Z$jP9kx8q~Q2u1c&4Qfd`=8#ItQB=uyd39Yp8RaQ`{~3x0!*Od(YzPg z8=n00w(JDoEwdewgpf9kpDx>hyOHvKLXYKNy##bc+Y5O64&ug7SwuxwZ z@4I;g$^8#TL&opzL}rz%lzXbYUsA*)p?`y$I+nGL@hxsFG?a=@wBQ$jjT4;wtU#dU z_?M_7ldD{~#`1FqU0lKJu`EFU!`-wlA6L+-A-<1)g|p9fktf>JsabpEME}cViWE;j z4~;NjUMy1n0xW=i`mAmRSGQOiJLn@Z2PE#X%i(Ok@&ce_k-YLwwT`(bUrdH%Mu z0;eM=c@2_IEV1g@<3~+0W$drXt!BvaUE+?wLE0e*K*0H7L0_aR!1aD>J>^0yIV9Ok zOiqdbaz=ZSKeWd+m!_gDxnz(lbTo>IGV)VG3+effZYS5!mj<~WVL!4FYY_>Xk0mKh za%G$&7+=gVV>!FZ@GXckM+Ba_t-R%*%FD#8yh!n+biPJ!(1?jb9&zT$bsWD2B6&Gd z57WhyrZ0fE)b)Y5U%PKr&&hjLaduO7y5!zX2JeP-&^pc+fZ<*rQwhxn*`LVu$=b-NfD*(S92VrS z0Vft4Vgws_wYN0GL>nyeEv+QyxEfL+B|AO<2?bH#yLqSMN=%;BCc)x=4_q~rrF5)W zYMKDt{vRGRY`|(^h6QmCo5w>7DQ7yooZl7zc>DvZMp>g^4|7CVkL*FV{@HstRFN z=mH$FiqZm6S44MD`w65JNC><6iyHH+q@zd@67~(!!%DP}0N*vZiS4?#Kz-o@!vu=W z=>7)8{Xq|)0uZ?09gpvbm*b?c0pl|gF6XDX-=(aYRKsr-L$gt#<}Lqzi#^$M7wTqI zVKV-o$OaH58vy#s4yo;G;+ot{QqekfE>GFmAH54;D;)vaFAzZyzbYzh4?Y0IxcL!#kI`&y}`$P5=LlV7@|sHg3@1ieH~m(<%vN zqT1U(5(98&8O56^$Wc1YDKZk!3toz9A@YvXBL+W1Q4MP}U-joa= zs#r%E#Ij?RKoxj4m%q`=e*V3W}$Ng0<^hC^$jAr~}5s!jzpnnjSs^#%N`FTEqEfbn%9x>odB#U?8{f zNqY|!VBY--3yUfnU_wzyNQ_~F4F10WN)om02?>$z4c7|Gsb$0!bX15F++U+(Sf@+K zs+7MhHV|I`!?c9dAb)}Ryyma*YbPy$jta3)|0(7g-5G~z*{zt6Rj}HRcro1@_~jE4 z5ChBoh!=fc*G9vScnOf$p`$`9<2ciO#$|d!%VXejAS4K~n_z`yVLc%g(E@t=efbu# zJ{o?(%Yj4<9Tj4e!6w+~8IztKl}vvpWEtJ-cx~Nbbr~TQD86dS09;!&6v!rE#3FQ5 zh&3FHid*e6{f3tbA>QJw8F3X@s!PZMh9C7c1Fon0pV#A~;U~OINTh`9sEDEtUXSvp z8h(?nntWxuS4Q1iquzs2|C#%cb<5BOP z<`;D@kGj`1&!_iLecF6eJ59lVXFHL5vU3Too=50h;ROz3_<5ASQNXZ*yQaLYE_DTE}*+}@0ZwX>scomvGe3`z$i>N&mKh)4k&sE)>d3z{- zuCPIlNzdxfgNvv=hpn5`4=e#O7_sAu^2YAJtNB5! z@n_(_d_}@>RED4Q*(5nuUxmZ~;_IYsiY>srlvU~7!3!#SwBAzRxF z-g=ZkGW#SPXJ;YnXh7kRwhS2fmQF@jM8)e-f_qA=Ek=P`KRaQqArJWDken zs0?0fe|=M0Bxdx0&A+Yfln=FiRp^`#`X$s~%D)<6ZDR2p{_I_4rKT<9TLss|ipZgY ziz`ZopBq^`he%Fph!?)7C@H>-(ha;ORv|s3O_Sjgi<15mlS8gL7qoF4d{N8r+fgZh znY=@%k^fl+YfbLd?*Jk_N9op#gEbpF#f$>86h9ihcR@%_F=lU)@{cC3 z+t?|wQ$w(RLP8vMxB{+9_XcwUO(Hranq_0Bvb$PU0bk&JJa$yHT+C`t!aC=w8bH2w z>f)P=pgSfxuJb72VvK;E`CY;9^wq80anuzJDoqxtb$hEiWm)=343 zl9Q0Eu@^!k@|Pyl27q*Laf)kwBZ`Y^Xa@Xvn{~W*G zS@`Fui23Wd1x@FI=g(f=QGD0z_9l%D{3JcCipucMO1N+5-+O>xby$ePiqPV4QKreR z1ym2}3)u~)d&B`&t5W{nivR|jq%ij+?A0$Z*Lo#}UtOPsu8#w(Jabg!5JN%;=^6Se zmB?S&sv7bKZHRG~22dpi?=X9mv2R-i%3q`W*$T}o14S07@def#R-khQu}AC7)~m$u zgZ3tcE0k4|HErKIc#oI1{|rB4a&)`b@oPVbPmW6Y2ie(HzIJd4_=)Vx@ZDa6Aivv~ z8YelaEju|QavpMxRv%|%9G2J5qxh*wBN&quijK^Bt{u|hTi_=^BRDx-#drLc zj7iqD#{yg+jwyd?JfnLRnaL9zVj7BpC}v^{ZJ_>By!^+AzXX?tduZ;|AU&rqPAv>E zlz;Kj*$IPpc!9W<|8IT!?cR#8KHeg0?agA)$sBO`@8QiWs2`4sSLL3aD|mspLEPou zeddaoI5X$fa1`?qzNZe*q%WTuzV+Mj3aaMLYb`UNxzmvS5X0-XgcvMMb*w4;lWl3M zIQ*(ju2LUfo&#q;#L$jRPHiaV)AP6=(~vxHRPq=2%{av14PGpk7#G^=!y+F~EFeat zn3B1ipLmU zQ(F%f+WL%+dU&b^1pJ)Tz+1aV=s(BHrw0Gbol|%jl0)o=7~Y0D4%l0}CpnH6PCeuf zWY>Og*$**%#h;TJl)vx-oCi8x6Y8i8KjAlE0ReUOW}$6x=rqYY`fwM}Q-Iu7aJkJx zJaf2wsSce5dv+{6sAv ze}$LT0{ri;S!|7RcI^)z4KX|kAjIH#|JA`;pm3m$isyDu=K}uh&VYrs@sez)AuHxA z{+JzM_!%#s#mLtPE~TT0|Ji@8W|>z#orw`NlhfA_gC{fN762E~OtfqNJ%5wZNp19* z<<4Fvr+--t;QT#d3EVOME$(ly;^5+`WgP*-I{YQAQEXJ$4 zvi%`NGWpFt{iPiu8;Zjaa%j@S<1>uBQmjQR&^m%Y7;RXUMZV{Oo&n9C1eHoDS;* zp2i@$aAFNapQ|B>WBQMfN73^Fl`+`)4CQYQ79;zlr@^l)K^#Tg6DZD6>4ebnCc6!j zPw|B{eB=P)Dxg}$mw)ifuL3Zcr2iPdeBu?rIi$S@_~kF9a}FjS^-|c=f=rPdN5;8= zs9?lpcKioxUE+C*gE7F)By3$uj)F3Me4d~(P5uHSAF+Fa_|g!^pk6_<5E2%4)-l4_ z4WZ(WxCa)P-o~%J3aEB9<)8nw=o9j{gD5jiK_MTXNBauigRV;P8}f@=JgZ~mv9g)le8243#V5AG?9aKw9rubub_ zq@XPnMNQ>!F8xuqlZH8;~uI-6w`j9D-Q~K0~I*>t( z^vPetV0^3uY5V>7-cerwkHN9BJKv#Tng3o3p$zp8D8#70e)$A zIq;E8(K(CsQg%a_OfL+-B1IHR7@If%)qrmD?SM;QDc#FR5fwinqn%YFIAyhWbf-MuO+v3}S~vCW8!GQd3)ObDW}6Se2SvkWn` zgYFfbaRg~bJd?pYyi68@n$@uf&QTG>uz*W{(Z+1xkM9h&H3*d5(ga_)h=^I#+_~qM zxii84PINv5Xpd6-&=&BWD;!-PA>GTG!|cQR$x-}&0!4KiSd4}k?gilHkyR0ssdq=y zWFRg6m*D-($LuChK2S%c_ZTnz1)y3SRA=~AGod>d@UkLJ5G&SOb7z{4-#HS+7rclT zQ2tdHRLnbg%0BHe6h!Hl53wKMxs@vJ##* zdX*awCmg7wB9<9k`U}7o=B`BfTgw>4&)Tfa^Wb-D>5ij2L76)f%Aa@v&ZGYbFP}Oh{iDumcE@X*vbCtW<87`;1$y`J zGMp{gW1i-HErlTlpXprEs`R1XPwVq2Js!pdoG`No+EI~j0DKQ-;!mAlZOUKjqjzs; zgK)S!+f3-@&NSUyczMoXEmXT_n&O)}v7L)(VYVK9Jb4__i~2mgtt-p!;)T;xwtw_W zXNUn#azb-S^351N0lf!!dCmmg)CcXT?0VUp#M3hR1`I!{4tUf%q~C{Wm@dT5h8cz!=ZeH_?o88vj+gm_ z^fX=|ZeUMNV`t`^mfa3NL}!AwB+kG4f`tCE6o9c@1SEuNAU9BL+(tt zH1_brQQ6&V{|Da{!OvNHjyEE^>z7aO6{5PDE7HEt?IE(;_`OI@w$V$RMl(5I=@;GG zb}`@+a$KM5+iC7hQ*LEZeUCq1h+ z@$e&lQ~UuQ3hZ9S3&9`Qlk*>IqwX~=oh{oPO*jPn71XDwy-$vc05prct;`{*!v3g- z+pUY*Ca2W$8@4{WGmioqrp;gCCEzFe%<{60qaI|*vhbEao-CmM2(~p^ni6k+k%q`8 zM*Qlw)!!#4_CBv4@bdSQ@;7q8sAqG@Jabfp4#HRIUd1mw2nMfJR`5H{F6-)*F&tZk z;v44sn!muW-G9no+8{gnZW-xWT_#^Us{rXKBqxyGV-@71qdgU)t`tpb%33)L#}nb7<$KCG>D7=F7Rf9GWo&`U=} z=s$I|EAofniwzg~=EdQz$XyWe@EqI7W$NagEjh_dy!sSd@whA59cHxGXYk%p(q{Jt z<39Dt-)QU%u4~On&oH`FAJHH;v3t1_e0}Ni)lu2qivp&nZ0^cQ_HHtOhJT&}?5^k? zN*Bchwj;IO%S`VvfVwLlbZn~)T@)i|R*B_mT`xnk;gN3!oV}Tz)+RJ?8AgD3dRB7+ hJLfey0=~>S{C}L2X50f>!F&J!002ovPDHLkV1n7Po(%v1 literal 0 HcmV?d00001 diff --git a/src/main/resources/background templates/4.png b/src/main/resources/background templates/4.png new file mode 100644 index 0000000000000000000000000000000000000000..7c6b0a84f5c78670f47c714f89445a9befcbeb76 GIT binary patch literal 190576 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