Mam w swojej aplikacji trzy role i chciałbym przetestować czy zostanie zwrócony odpowiedni błąd jeśli użytkownik nie ma roli admina i próbuje strzelić na endpoint dla admina. W testach mam porobione metody np. sendRequestAsUser, która wyciąga użytkownika z rolą USER z bazy, generuje JWT i zwraca token jako String. Pierwsze co przyszło mi do głowy to napisanie testu sparametryzowanego żeby nie powtarzać kodu, ale tutaj pojawia się problem, bo do adnotacji MethodSource
Wszystko
Wszystkie
Archiwum
3
Nowa Dacia Spring 2 ma już swój polski cennik. Ile kosztuje?
Dacia Spring 2 ma już swój polski cennik.
z- 2
- #
- #
- #
- #
Chcę stworzyć metodę w springowym kontrolerze, z endpointem pod który wyślę dużo danych (dostałem jsona z 20 polami, ale może być ich więcej w przyszłości). i te dane prześlę dalej robiąc calla do zewnętrznego api żeby wyciągnąć jakieś tam dane biznesowe.
No i tu pytanie. Mówią, że GET służy do pobierania danych a POST tylko do zmiany stanu. Ale raczej nie jest to bezpieczne wysyłać te dane w urlu, co wtedy? Można
No i tu pytanie. Mówią, że GET służy do pobierania danych a POST tylko do zmiany stanu. Ale raczej nie jest to bezpieczne wysyłać te dane w urlu, co wtedy? Można
@mirek_dev: GET może mieć body
Niestety nie jest to dobrym pomysłem bo dużo bibliotek / serwerów / proxy HTTP nadinterpretuje specyfikację (lub zostało zakodowana na bazie nieaktualnej, sprzed 2014) i potrafi robić różne dziwne rzeczy jak np. ignorować body w GET albo nie pozwala go dodać po stronie klienta itp. - jeśli tak jest to jest to radosna twórczość tychże bibliotek, bo obecnie obowiązująca specyfikacja HTTP nie zabrania.
Niestety nie jest to dobrym pomysłem bo dużo bibliotek / serwerów / proxy HTTP nadinterpretuje specyfikację (lub zostało zakodowana na bazie nieaktualnej, sprzed 2014) i potrafi robić różne dziwne rzeczy jak np. ignorować body w GET albo nie pozwala go dodać po stronie klienta itp. - jeśli tak jest to jest to radosna twórczość tychże bibliotek, bo obecnie obowiązująca specyfikacja HTTP nie zabrania.
A payload within
Mirasy chciałem napisać integracyjny test uderzając pod dany endpoint w controllerze gdzie używam spring webfluxa i w którymś z kolei serwisie uderzam do dwóch zewnętrznych apek. I właśnie te dwa calle chciałem zmockować, ale otrzymuję timeout. Korzystam z WebTestClient i MockWebServer.
Tutaj więcej szczegółów i kod. Pomoże ktoś? Bo siedzę już którąś godzinę nad tym ( ͡° ʖ̯ ͡°)
https://stackoverflow.com/questions/77957328/mocking-webclient-response-in-integration-test-using-mockwebserver-or-alternativ
#spring #springboot #programista15k #programowanie #java
Tutaj więcej szczegółów i kod. Pomoże ktoś? Bo siedzę już którąś godzinę nad tym ( ͡° ʖ̯ ͡°)
https://stackoverflow.com/questions/77957328/mocking-webclient-response-in-integration-test-using-mockwebserver-or-alternativ
#spring #springboot #programista15k #programowanie #java
@mirek_dev: W Javie nie robię, ale może https://java.testcontainers.org/? Dla testów integracyjnych pod te zewnętrzne serwisy ustawiasz adresy do lokalnych obrazów Dockerowych i setupujesz pod własne potrzeby.
- 0
Czy nazwy endpointów z rolami, które mogę ich używać są ok czy raczej nie powinno się tak robić? Np. /public/products albo /admin/orders. Ułatwia to dość konfiguracje Spring Security, bo po prostu piszesz, że pod /public/* mogą wejść wszyscy a pod"/admin/* tylko admini i nie trzeba do każdego zasobu pisać oddzielnego konfiga.
#java #spring #naukaprogramowania #programowanie #programista15k
#java #spring #naukaprogramowania #programowanie #programista15k
@Nofenak: domyślną daj publiczna, bez nazywania czyli na przykład /products albo /orders.
Jak chcesz żeby użytkownicy z innymi rolami dostawali inne zasoby, to wtedy dorzuć endpointy pod ten typ użytkownika: /admin/products albo /admin/orders
Jak chcesz żeby użytkownicy z innymi rolami dostawali inne zasoby, to wtedy dorzuć endpointy pod ten typ użytkownika: /admin/products albo /admin/orders
@Nofenak: Imho największy sens ma dzielenie według konsumenta API. Np. jeśli masz publiczne API, API pod frontend użytkownika i pod frontend admina, to powinny mieć one własne ścieżki. Wtedy masz największą elastyczność przy zmianie poszczególnych endpointów i wiesz na których konsumentów wpłyną te zmiany. Dodatkowo można pod każdego konsumenta ustawić stosowne nagłówki, caching, itp.
0
Nowa Dacia Spring 2 będzie nawiązywać do wyglądu Dustera III generacji
Nowa Dacia Spring 2, która zadebiutuje na targach w Genewie, będzie zupełnie inaczej wyglądać, zapowiada producent. Auto jest już gotowe do premiery.
z- Dodaj Komentarz
- #
- #
- #
- #
Cześć,
stworzyłem sobie klasę pomocniczą do rejestracji w której trzymam jsony:
I teraz pytanie na takim przykładzie. Mam taki
stworzyłem sobie klasę pomocniczą do rejestracji w której trzymam jsony:
public class RegistrationControllerHelper {
public static final String validCredentials =
"{\"username\": \"New\", \"email\": \"new@mail.com\", \"password\": \"Password#3\"}";
public static final String invalidCredentials =
"{\"username\": \"invalid\", \"email\": \"invalid\", \"password\": \"invalid\"}";
public static final String malformedRequest =
"{\"username\": \"New\", \"email\": \"new@mail.com\", \"password\": \"Password#3\"";
public static final String emptyCredentials =
"{\"username\": \"\", \"email\": \"\", \"password\": \"\"}";
}
I teraz pytanie na takim przykładzie. Mam taki
@Kamishimi:
1. Nie tworzyłbym żadnych Helperów - co taka klasa oznacza? Sam widzisz, że nie do końca wiesz co ona robi i tak ją nazwałeś ( ͡° ͜ʖ ͡°)
2. Jeżeli jest to używane tylko przez test to dałbym to do klasy testowej
3. W nowszej wersji Java możesz użyć """ aby zrobić wielolinijkowy String i wtedy nie bedziesz musiał escepować \"
4. Nie wiem jaka jest
1. Nie tworzyłbym żadnych Helperów - co taka klasa oznacza? Sam widzisz, że nie do końca wiesz co ona robi i tak ją nazwałeś ( ͡° ͜ʖ ͡°)
2. Jeżeli jest to używane tylko przez test to dałbym to do klasy testowej
3. W nowszej wersji Java możesz użyć """ aby zrobić wielolinijkowy String i wtedy nie bedziesz musiał escepować \"
4. Nie wiem jaka jest
@Kamishimi:
1. Dalej nie widzę sensu wydzielanai osobnej klasy
to nie jest jakaś skomplikowana logika którą należy wydzielić, tylko integralna część testu
2. Jak już chcesz coś wydzielac to raczej to mapowanie
https://howtodoinjava.com/spring-boot2/testing/spring-boot-mockmvc-example/
3. Ten @Transactional raczej nie jest potrzebny
1. Dalej nie widzę sensu wydzielanai osobnej klasy
new RegisterRequest("New", "new@mail.com", "Password#3");
to nie jest jakaś skomplikowana logika którą należy wydzielić, tylko integralna część testu
2. Jak już chcesz coś wydzielac to raczej to mapowanie
.content(asJsonString(new EmployeeVO(null, "firstName4", "lastName4", "email4@mail.com")))
https://howtodoinjava.com/spring-boot2/testing/spring-boot-mockmvc-example/
3. Ten @Transactional raczej nie jest potrzebny
Cześć,
bawię się trochę w refactor testów w celu zwiększenia ich czytelności. Miałbym dwa pytania, zobrazujmy sobie je na przykładzie.
Oto klasa którą testuję:
Klasa testowa:
bawię się trochę w refactor testów w celu zwiększenia ich czytelności. Miałbym dwa pytania, zobrazujmy sobie je na przykładzie.
Oto klasa którą testuję:
@Component
class CookieDeleterImpl implements CookieDeleter {
@OverRide
public void deleteCookie(HttpServletRequest request, HttpServletResponse response, String name) {
Cookie[] cookies = request.getCookies();
if (cookies != null) {
Arrays.stream(cookies)
.filter(cookie -> name.equals(cookie.getName()))
.forEach(cookie -> {
cookie.setValue(null);
cookie.setMaxAge(0);
cookie.setPath("/");
response.addCookie(cookie);
});
}
}
}
Klasa testowa:
public class CookieDeleterImplTest {
private CookieDeleterImpl
@twojStaryJebqnany: btw w testach polecam zawsze dodawac strukture:
//given
//when
//then
nazwa testu moze byc typu: ShouldRemoveCookieIfExist, ShouldThrowAnErrorWhen.. itd
//given
//when
//then
nazwa testu moze byc typu: ShouldRemoveCookieIfExist, ShouldThrowAnErrorWhen.. itd
- 1
zainteresowałem się spring webflux oraz jego functional api i jakieś takie chu*owe to się wydaje, ale może mam do tego złe podejście? zamiast czytelnych deklaracji endpointów z jawnie zadeklarowanymi parametrami i zwrotką mam jakieś routingi i handlery bez jawnych typów. bez wczytywania się w kod nie wiadomo co jaki endpoint przyjmuje i co zwraca. to trochę tak jakby się cofnąć w czasie z typów generycznych do typów, które po prostu przechowują Object,
- 0
@Saly:
no nie jest w tym sensie, że masz ServerResponse i ServerRequest, które mogą przechowywać wszystko. musisz się wczytać w definicję metody, żeby sprawdzić czego oczekuje dany endpoint i co zwraca.
w podejściu z kontrolerem miałbyś coś w tym stylu:
a handler nie jest mocno typowany? Nie rozumiem gdzie jest problem. Możesz podać przykład z kodem?
no nie jest w tym sensie, że masz ServerResponse i ServerRequest, które mogą przechowywać wszystko. musisz się wczytać w definicję metody, żeby sprawdzić czego oczekuje dany endpoint i co zwraca.
w podejściu z kontrolerem miałbyś coś w tym stylu:
public class PersonController {
public List<Person> listPeople() {
}
public Person createPerson(Person person) {
}
Cześć, potrzebuję pomocy. Pracuję nad konfiguracją Spring Security, która jest skupiona na zabezpieczaniu endpointów z podziałem na role: USER i ADMIN. Utworzyłem endpoint DELETE "/api/users/{userId}", który jest dostępny tylko dla roli ADMIN. Napisałem testy z użyciem bazy danych, aby sprawdzić, czy wszystko działa poprawnie. Jednakże, dowiedziałem się, że takie testy nie powinny być zależne od bazy danych i powinny być izolowane. Czy moglibyście doradzić mi, jak najlepiej przetestować te konfiguracje bez angażowania
- 0
fetchtype.EAGER
- korzystam ile wlezie 26.3% (10)
- korzystam w ostatecznosci 73.7% (28)
@nad__czlowiek xdxd, przecież dalej SQL jest dużo bardziej popularny niż nosql. Korzystanie na siłę z nosql gdzie SQL zadziała lepiej bo taka była moda to największa głupota.
- 0
Potrzebuję pobrać miejsca na seans w formie DTO (Spring Data JPA). Jedno pole - isFree zależy od tego czy na dane miejsce jest już zarezerwowany bilet.
Sala ma przypisane miejsca, seans sale a bilet seans i miejsce. Chat GPT podał coś takiego:
Sala ma przypisane miejsca, seans sale a bilet seans i miejsce. Chat GPT podał coś takiego:
@query("SELECT new com.cinema.tickets.application.queries.dto.SeatDto(s.rowNumber, s.number, " +
"CASE WHEN (SELECT COUNT(t) FROM Ticket t WHERE t.seatId = s.id) > 0 THEN false ELSE true END) " +
"FROM Seat s WHERE
DDD, prezentacje na YT sobie pooglądaj, jest sporo źródeł. Tu mi się nie chce rozpisywać
- 0
@rolling_stone_with_no_hope: Mówisz o np. takich prezentacjach? https://www.youtube.com/watch?v=ILBX9fa9aJo&t=2025s Chodzi ci ogólnie o to, żeby używać package private?
- 0
✨️ Szkolenie Live: Własny Web Framework w Java! Poznaj ServerSocket i HttpHandler ✨️
Odkryj, jak samodzielnie stworzyć i wykorzystać framework webowy w Javie.
Podczas szkolenia:
✅ Zrozumiesz mechanizmy obsługi żądań HTTP w czystej Javie, kluczowe dla tworzenia aplikacji internetowych,
✅ Zobaczysz, jak możliwe jest projektowanie i implementacja własnego frameworka webowego, od podstaw,
✅ Dowiesz się, jak adnotacje mogą upraszczać logikę aplikacji, zmieniając zarządzanie i konfigurację.
Poznaj, jak z głębszym zrozumieniem Java może
Odkryj, jak samodzielnie stworzyć i wykorzystać framework webowy w Javie.
Podczas szkolenia:
✅ Zrozumiesz mechanizmy obsługi żądań HTTP w czystej Javie, kluczowe dla tworzenia aplikacji internetowych,
✅ Zobaczysz, jak możliwe jest projektowanie i implementacja własnego frameworka webowego, od podstaw,
✅ Dowiesz się, jak adnotacje mogą upraszczać logikę aplikacji, zmieniając zarządzanie i konfigurację.
Poznaj, jak z głębszym zrozumieniem Java może
- 0
@nad__czlowiek: JavaEE jest mi całkiem dobrze znana, gdyż sam spędziłem w niej trochę śmiesznych, a momentami bolesnych lat. I jestem z tych, którzy tworzyli web appki z wykorzystaniem JSF/PrimeFaces - więc potwierdzam plotki ( ͡° ͜ʖ ͡°) Ciekawe czasy, ale nie wiem czy chciałbym wracać. ¯\(ツ)/¯ Stack top-technologiczny dla Java Developerów kilkanaście lat temu był ciekawy...
Moje pominięcie JavaEE/JakartaEE było celowe, ponieważ temat dotyczy frameworków, a JavaEE/JakartaEE
Moje pominięcie JavaEE/JakartaEE było celowe, ponieważ temat dotyczy frameworków, a JavaEE/JakartaEE
✨️ Obserwuj #mirkoanonim
Pytanie do mirków #programista15k #java #spring oraz #programowanie #naukaprogramowania
Czy kojarzycie może jakiś dobry kurs pokazujący jak ktoś tworzy przykładową praktyczną apkę java + spring w chmurze? Taka która by np korzystała z AWS: S3, EC2, SQS/SNS, Aurora MySQL itd. Jest sporo kursów gdzie ktoś pokazuje od A do Z jak np tworzy pseudo sklep ecommerce z użyciem java, spring, hibernate, ale nie mogę znaleźć żadnego praktycznego kursu chmury
Pytanie do mirków #programista15k #java #spring oraz #programowanie #naukaprogramowania
Czy kojarzycie może jakiś dobry kurs pokazujący jak ktoś tworzy przykładową praktyczną apkę java + spring w chmurze? Taka która by np korzystała z AWS: S3, EC2, SQS/SNS, Aurora MySQL itd. Jest sporo kursów gdzie ktoś pokazuje od A do Z jak np tworzy pseudo sklep ecommerce z użyciem java, spring, hibernate, ale nie mogę znaleźć żadnego praktycznego kursu chmury
@mirko_anonim: Chcesz zmienić robote? A pokaż CV. Albo sie na PW odezwij.
@mirko_anonim: ale ja nie trolowalem. Postaw sobie coś na tym AWS i dlub. Nie wiem bo do gcp po prostu są kursy google
- 0
W trakcie odpalania kilkudziesięciu springowych integracyjnych testów z Testcontainers, po 10 testach dostaję taki błąd:
Szczegóły na 4programmers: https://4programmers.net/Forum/Java/370632-problem_z_testcontainers_przy_wielu_testach?p=1936802#id1936802
#java #spring #naukaprogramowania #programowanie #programista15k
org.springframework.dao.DataAccessResourceFailureException: Unable to acquire JDBC Connection [HikariPool-1 - Connection is not available, request timed out after 30003ms.] [n/a]
Szczegóły na 4programmers: https://4programmers.net/Forum/Java/370632-problem_z_testcontainers_przy_wielu_testach?p=1936802#id1936802
#java #spring #naukaprogramowania #programowanie #programista15k
@AfterAll
static void afterAll() {
postgres.stop();
}
@Nofenak: ale to musisz użyć po wszystkich testach integracyjnych. Postgresa w kontenerze startujesz raz a potem raz wyłączasz, kasujesz kontener. Co innego pula polączeń.
jeśli stosujesz beforeAll i afterAll do stopowania i startowania kontenera to lipa wydajnościowa. Startujesz kontener per klase? Tracisz mnóstwo czasu na połączenie i twoje testy trwają z 5x tyle czasu. A mogłby trwać z 5 razy mniej xD
- 2
✨️ Szkolenie Live: Własne Adnotacje w Java i Sprytne Ich Użycie!
Odkryj tajniki adnotacji w Javie i naucz się, jak wykorzystać je do zwiększenia efektywności i czytelności Twojego kodu. Dołącz do naszego szkolenia, gdzie:
✅ Zrozumiesz zasady stosowania adnotacji w Javie, ich strukturę i główne zastosowania.
✅ Nauczysz się projektować i przetwarzać własne adnotacje, co otworzy przed Tobą nowe możliwości w personalizowaniu kodu.
✅ Zobaczysz, jak popularne frameworki, takie jak Spring Boot,
Odkryj tajniki adnotacji w Javie i naucz się, jak wykorzystać je do zwiększenia efektywności i czytelności Twojego kodu. Dołącz do naszego szkolenia, gdzie:
✅ Zrozumiesz zasady stosowania adnotacji w Javie, ich strukturę i główne zastosowania.
✅ Nauczysz się projektować i przetwarzać własne adnotacje, co otworzy przed Tobą nowe możliwości w personalizowaniu kodu.
✅ Zobaczysz, jak popularne frameworki, takie jak Spring Boot,
@Liryczne_MMA: To się przerzuć na inny język. Gdzie problem?
- 1
✨️ Szkolenie Live: Śledzenie w Czasie Rzeczywistym z Zipkin!
Odkryj, jak Zipkin rewolucjonizuje śledzenie w aplikacjach opartych na Spring Boot. Podczas szkolenia:
✅ Poznamy główne funkcje i korzyści płynące z wykorzystania Zipkina,
✅ Przejściemy przez proces integracji Zipkina z aplikacją Spring Boot, uruchamiając przykładowe usługi,
✅ Zobaczymy w praktyce, jak wizualizować przepływ żądań w systemie i śledzić ich trasę między usługami.
Zrozum, jak efektywnie monitorować i analizować dane w mikrousługach w czasie
Odkryj, jak Zipkin rewolucjonizuje śledzenie w aplikacjach opartych na Spring Boot. Podczas szkolenia:
✅ Poznamy główne funkcje i korzyści płynące z wykorzystania Zipkina,
✅ Przejściemy przez proces integracji Zipkina z aplikacją Spring Boot, uruchamiając przykładowe usługi,
✅ Zobaczymy w praktyce, jak wizualizować przepływ żądań w systemie i śledzić ich trasę między usługami.
Zrozum, jak efektywnie monitorować i analizować dane w mikrousługach w czasie
Mirasy, pytanie o tracing w appce spring bootowej. Jest to nowa apka, którą robimy od zera i potrzebuję dodać tracing do logów.
Mamy eventy w Azure Event Hubs, które na razie (bo nie mamy jeszcze proda - trochę taka zabaw póki co) - generujemy ręcznie poprzez feature Azurowy "Data Generator", gdzie możemy podać jsona i dodać do "kolejki", a w naszej appce spring bootowej consumer sobie je pobiera i wywołuje odpowiednią akcję.
Mamy eventy w Azure Event Hubs, które na razie (bo nie mamy jeszcze proda - trochę taka zabaw póki co) - generujemy ręcznie poprzez feature Azurowy "Data Generator", gdzie możemy podać jsona i dodać do "kolejki", a w naszej appce spring bootowej consumer sobie je pobiera i wywołuje odpowiednią akcję.
@mirek_dev: zipkin
@exori_vis: Ale jak napisałem wyżej, taki sidecar container działa poza procesem aplikacji więc ilość informacji jakie może zgromadzić na jej temat jest mocno ograniczona. Do podstawowego observability i monitoringu wystarczy. Przy bardziej zaawansowanych use case'ach trzeba robić instrumentację.
- 3
Co się dzieje ze moją Javą, czemu ona tonie :(
#java #programowanie #programista15k #programista25k #spring
#java #programowanie #programista15k #programista25k #spring
@Volantie: publikacja danych bez kontekstu powinna być karana batożeniem OPa
Sądząc po Pythonie na czele, to musi być TIOBE, czyli index oparty na statystykach haseł z wyszukiwarek internetowych, long story short: wskazuje, którego języka uczy się aktualnie najczęściej, a że kilkanaście lat temu w szkołach i na uczelniach (a teraz i w bootcampach) Python zajął miejsce, które zajmował kiedyś Turbo Pascal, to od lat wygrywa ten ranking.
Żeby nie było, oczywiście
Sądząc po Pythonie na czele, to musi być TIOBE, czyli index oparty na statystykach haseł z wyszukiwarek internetowych, long story short: wskazuje, którego języka uczy się aktualnie najczęściej, a że kilkanaście lat temu w szkołach i na uczelniach (a teraz i w bootcampach) Python zajął miejsce, które zajmował kiedyś Turbo Pascal, to od lat wygrywa ten ranking.
Żeby nie było, oczywiście
Co trzeba umieć, żeby dostać się na staż z javy, albo chociaż DARMOWE praktyki w jakimś januszexie? Muszę odbyć praktyki na studiach, a obecna sytuacja na rynku jest przynajmniej godna pożałowania. W ciągu ostatniego miesiąca chodziłem na targi pracy i ofert było tyle co kot napłakał, zostawiłem CV o ile w ogóle na to pozwalali, oczywiście zero odzewu. Mam świadomość, że projekty w moim portfolio nie są najlepsze na