Skip to content

Gabesz79/transport-planner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Végleges, értékelésre szánt release: v2.1-teacher-fixes

A legfrissebb stabil állapot és letölthető forrás az oldalsávon a Releases résznél található.

Transport Planner (Webuni Záróvizsga) – Teacher spec solution

Ez a projekt a Webuni záróvizsga feladat (Transport Planner) tanári specifikációja alapján készült Spring Boot alkalmazás. A megoldás lefedi az értékelt részeket: Address CRUD + dinamikus keresés/lapozás, TransportPlan delay (időeltolás + bevételcsökkentés konfigból), integrációs tesztek, valamint JWT alapú Security.

Fő funkciók (pontozási részek)

Entitások és kapcsolatok: Address, Milestone, Section, TransportPlan

Address CRUD (spec szerinti státuszkódokkal)

POST: 200 OK, ha requestben van id → 400

PUT: id mismatch (path vs body) → 400

DELETE: mindig 200 OK, akkor is, ha nem létező id

Address keresés: POST /api/addresses/search

Body alapú filter + lapozás

X-Total-Count header

Üres/blank filter body → 400

size nélkül: “összes találat”

TransportPlan delay

milestone/section alapú időeltolás

várható bevétel csökkentése konfigurációból (küszöbök alapján)

Integrációs tesztek

Delay IT + validációs/security tesztek (JWT-vel)

Security (JWT)

POST /api/login → token (10 perc)

Jogosultságok authority-k alapján (ADDRESS_MANAGER, TRANSPORT_MANAGER)

Tech stack

Java + Spring Boot

Spring Web, Spring Data JPA (Hibernate)

H2 in-memory DB (dev/test)

Spring Security + JWT (com.auth0 java-jwt)

JUnit 5 + WebTestClient (integration tests)

Indítás (lokál)

Build / tesztek:

mvn test

App indítás:

mvn spring-boot:run Alapértelmezett: http://localhost:8080

Konfiguráció (application.properties)

H2:

spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1

JWT:

transport.jwt.secret=...

transport.jwt.durationSeconds=600

Security – bejelentkezés és jogosultságok Default felhasználók (in-memory)

addressmgr / pass123 → ADDRESS_MANAGER

transportmgr / pass123 → TRANSPORT_MANAGER

admin / pass123 → mindkettő

Token kérés

POST http://localhost:8080/api/login Body: { "username": "transportmgr", "password": "pass123" }

Válasz: { "token": "..." }

Védett végpontok

Header: Authorization: Bearer

API quickstart (Postman minták) Address létrehozás (ADDRESS_MANAGER tokennel)

POST /api/addresses Body: { "country": "HU", "zip": "1041", "city": "Budapest", "street": "Fo utca", "houseNumber": "1", "latitude": 47.567, "longitude": 19.12 }

Address search

POST /api/addresses/search Body: { "country": "HU" } Headerben: X-Total-Count

Delay (TRANSPORT_MANAGER tokennel)

POST /api/transportplans/{id}/delay Body: { "milestoneId": 1, "minutes": 30 }

Postman collection

postman/transport-planner.postman_collection.json

H2 Console (DB ellenőrzés)

URL: http://localhost:8080/h2-console

JDBC URL: jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1

User: sa

Password: (üres)

Hasznos SQL-ek:

SHOW TABLES;

FK-k: SELECT CONSTRAINT_NAME, FK_TABLE_NAME, FK_COLUMN_NAME, PK_TABLE_NAME, PK_COLUMN_NAME FROM INFORMATION_SCHEMA.CROSS_REFERENCES WHERE FK_TABLE_SCHEMA='PUBLIC' ORDER BY FK_TABLE_NAME, CONSTRAINT_NAME;

Release / Tag

v2.1-teacher-fixes (release/tag)

Készítette: Pál Gábor (Gabesz79)

About

Spring Boot REST API (DTO), JPA/Hibernate, transactions, Spring Security (auth/authz, JWT), relational DB, integration testing (WebTestClient)

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages