diff --git a/.gitignore b/.gitignore index f32668e..74c6ef0 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,6 @@ build/ ### VS Code ### .vscode/ + +.env +*.env diff --git a/walkguide-backend/demo/pom.xml b/walkguide-backend/demo/pom.xml index 99284b6..624f7b5 100644 --- a/walkguide-backend/demo/pom.xml +++ b/walkguide-backend/demo/pom.xml @@ -136,53 +136,30 @@ - org.apache.maven.plugins - maven-compiler-plugin - - - - org.projectlombok - lombok - 1.18.36 - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - - default-compile - compile - compile - - - - org.projectlombok - lombok - 1.18.36 - - - - - - default-testCompile - test-compile - testCompile - - - - org.projectlombok - lombok - 1.18.36 - - - - - - + org.apache.maven.plugins + maven-compiler-plugin + + + + org.projectlombok + lombok + 1.18.36 + + + + + + default-compile + compile + compile + + + default-testCompile + test-compile + testCompile + + + diff --git a/walkguide-backend/demo/src/main/resources/.env.example b/walkguide-backend/demo/src/main/resources/.env.example new file mode 100644 index 0000000..11acc7a --- /dev/null +++ b/walkguide-backend/demo/src/main/resources/.env.example @@ -0,0 +1,35 @@ +# =================================================== +# Profile: prod (production) +# Aktifkan dengan: --spring.profiles.active=prod +# Semua nilai WAJIB diisi via environment variable +# Tidak ada default value — akan gagal start jika kosong +# =================================================== + +spring: + datasource: + url: ${DB_URL} + username: ${DB_USERNAME} + password: ${DB_PASSWORD} + + jpa: + show-sql: false + properties: + hibernate: + format_sql: false + +server: + port: ${PORT:8080} + +jwt: + secret: ${JWT_SECRET} + expiration: ${JWT_EXPIRATION:86400000} + +agora: + app-id: ${AGORA_APP_ID} + app-certificate: ${AGORA_APP_CERTIFICATE} + +logging: + level: + com.walkguide: INFO + org.springframework.messaging: WARN + org.springframework.web.socket: WARN \ No newline at end of file diff --git a/walkguide-backend/demo/src/main/resources/application-dev.yml b/walkguide-backend/demo/src/main/resources/application-dev.yml new file mode 100644 index 0000000..57096ce --- /dev/null +++ b/walkguide-backend/demo/src/main/resources/application-dev.yml @@ -0,0 +1,31 @@ +# =================================================== +# Profile: dev (development lokal) +# Aktifkan dengan: --spring.profiles.active=dev +# atau set env: SPRING_PROFILES_ACTIVE=dev +# =================================================== + +spring: + datasource: + url: ${DB_URL:jdbc:postgresql://202.46.28.160:2002/uas_5803024001} + username: ${DB_USERNAME:5803024001} + password: ${DB_PASSWORD:pw5803024001} + + jpa: + show-sql: true + properties: + hibernate: + format_sql: true + +jwt: + secret: ${JWT_SECRET:404E635266556A586E3272357538782F413F4428472B4B6250645367566B5970} + expiration: 86400000 + +agora: + app-id: ${AGORA_APP_ID:} + app-certificate: ${AGORA_APP_CERTIFICATE:} + +logging: + level: + com.walkguide: DEBUG + org.springframework.messaging: DEBUG + org.springframework.web.socket: DEBUG \ No newline at end of file diff --git a/walkguide-backend/demo/src/main/resources/application-prod.yml b/walkguide-backend/demo/src/main/resources/application-prod.yml new file mode 100644 index 0000000..11acc7a --- /dev/null +++ b/walkguide-backend/demo/src/main/resources/application-prod.yml @@ -0,0 +1,35 @@ +# =================================================== +# Profile: prod (production) +# Aktifkan dengan: --spring.profiles.active=prod +# Semua nilai WAJIB diisi via environment variable +# Tidak ada default value — akan gagal start jika kosong +# =================================================== + +spring: + datasource: + url: ${DB_URL} + username: ${DB_USERNAME} + password: ${DB_PASSWORD} + + jpa: + show-sql: false + properties: + hibernate: + format_sql: false + +server: + port: ${PORT:8080} + +jwt: + secret: ${JWT_SECRET} + expiration: ${JWT_EXPIRATION:86400000} + +agora: + app-id: ${AGORA_APP_ID} + app-certificate: ${AGORA_APP_CERTIFICATE} + +logging: + level: + com.walkguide: INFO + org.springframework.messaging: WARN + org.springframework.web.socket: WARN \ No newline at end of file diff --git a/walkguide-backend/demo/src/main/resources/application.properties b/walkguide-backend/demo/src/main/resources/application.properties index b7c649f..99ee4f7 100644 --- a/walkguide-backend/demo/src/main/resources/application.properties +++ b/walkguide-backend/demo/src/main/resources/application.properties @@ -1,10 +1,10 @@ # ===== SERVER ===== -server.port=8080 +server.port=${SERVER_PORT:8080} # ===== POSTGRESQL CONNECTION ===== -spring.datasource.url=jdbc:postgresql://202.46.28.160:2002/uas_5803024001 -spring.datasource.username=5803024001 -spring.datasource.password=pw5803024001 +spring.datasource.url=${DB_URL} +spring.datasource.username=${DB_USERNAME} +spring.datasource.password=${DB_PASSWORD} spring.datasource.driver-class-name=org.postgresql.Driver # ===== JPA / HIBERNATE ===== @@ -19,24 +19,21 @@ spring.flyway.locations=classpath:db/migration spring.flyway.baseline-on-migrate=true # ===== JWT ===== -jwt.secret=404E635266556A586E3272357538782F413F4428472B4B6250645367566B5970 -jwt.expiration=86400000 +jwt.secret=${JWT_SECRET} +jwt.expiration=${JWT_EXPIRATION:86400000} # ===== SWAGGER ===== springdoc.swagger-ui.path=/swagger-ui.html springdoc.api-docs.path=/v3/api-docs # ===== AGORA RTC ===== -# Isi dengan nilai dari dashboard.agora.io setelah buat project -# Jika kosong: AgoraTokenService akan generate token kosong (mode demo/testing) -agora.app-id= -agora.app-certificate= +agora.app-id=${AGORA_APP_ID:} +agora.app-certificate=${AGORA_APP_CERTIFICATE:} # ===== WEBSOCKET ===== # WebSocket auto-dikonfigurasi oleh WebSocketConfig.java -# Tidak perlu config tambahan — Spring Boot auto-detect starter-websocket # ===== LOGGING ===== logging.level.com.walkguide=DEBUG logging.level.org.springframework.messaging=INFO -logging.level.org.springframework.web.socket=INFO +logging.level.org.springframework.web.socket=INFO \ No newline at end of file diff --git a/walkguide-backend/demo/src/test/java/com/walkguide/service/AuthServiceTest.java b/walkguide-backend/demo/src/test/java/com/walkguide/service/AuthServiceTest.java index bd55d4c..1c45b62 100644 --- a/walkguide-backend/demo/src/test/java/com/walkguide/service/AuthServiceTest.java +++ b/walkguide-backend/demo/src/test/java/com/walkguide/service/AuthServiceTest.java @@ -7,9 +7,11 @@ import com.walkguide.entity.RefreshToken; import com.walkguide.entity.User; import com.walkguide.entity.UserSettings; import com.walkguide.enums.ActivityLogType; +import com.walkguide.repository.HardwareShortcutRepository; import com.walkguide.repository.RefreshTokenRepository; import com.walkguide.repository.UserRepository; import com.walkguide.repository.UserSettingsRepository; +import com.walkguide.repository.VoiceCommandConfigRepository; import com.walkguide.security.JwtUtil; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -35,6 +37,8 @@ class AuthServiceTest { @Mock UserRepository userRepository; @Mock RefreshTokenRepository refreshTokenRepository; @Mock UserSettingsRepository userSettingsRepository; + @Mock HardwareShortcutRepository hardwareShortcutRepository; + @Mock VoiceCommandConfigRepository voiceCommandConfigRepository; @Mock ActivityLogService activityLogService; @Mock JwtUtil jwtUtil; @Mock PasswordEncoder passwordEncoder;