✨️ Obserwuj #mirkoanonim
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
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

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
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

W gwoli jasności, to możliwe jest przekazanie niestatycznej metody do @MethodSource zmieniając cykl życia testu adnotacją - @TestInstance(PER_CLASS).

Możliwe, że twoją weryfikację da się zrealizować jeszcze łatwiej (bez bazy danych). Z MockMvc mogłoby to wyglądać w następujący sposób: mockMvc.perform(get(...).with(SecurityMockMvcRequestPostProcessors.user().roles(Role.ADMIN))
więc @MethodSource mógłby parametryzować Role albo cały RequestPostProcessor. Tutaj będzie zwykły Springowy User ale tych RequestPostProcessor jest sporo (są też związane z OAuth2).

Jeżeli chcesz WebTestClient to tam to się nazywa mutator (interfejs
  • Odpowiedz
  • 0
@Smevios:

Ta adnotacja @TestInstance(PER_CLASS) może mi się przydać, dzięki.

Zrobiłem sobie sparametryzowany test z wykorzystaniem MockMvc i w sumie działa to okey. Są zwolennicy używania MockMvc, jak i są przeciwnicy. Ja jeszcze nie zagłębiałem się w problemy z
  • Odpowiedz
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
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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.

A payload
  • Odpowiedz
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
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@mirek_dev: akurat z webfluxa nie korzystałem nigdy. Próbowałeś na próbę użyć jakiegoś standardowego, niereaktywnego rest clienta?
To co opisał @farowy to też rozwiązanie, ale to już znacznie więcej roboty, żeby później to jeszcze osetapować na środowisku testowym itp
  • Odpowiedz
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
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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
  • Odpowiedz
@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.
  • Odpowiedz
Cześć,
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\"}";
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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 logika biznesowa, ale zazwyczaj nie
  • Odpowiedz
@Kamishimi:
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
  • Odpowiedz
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ę:

@Component
class CookieDeleterImpl implements CookieDeleter
  • 18
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

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,
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@ly000: Ogólnie to bym chyba odpuścił webflux, bo wraz z nadejściem Project Loom (Java 21) mamy wirtualne wątki, które częściowo rozwiązują problemy które ma rozwiązywać webflux

  • Odpowiedz
  • 0
@Saly:

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
  • Odpowiedz
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
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

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:

@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 s.hallId =
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

✨️ 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,
SoftBull - ✨️ Szkolenie Live: Własny Web Framework w Java! Poznaj ServerSocket i Http...

źródło: wlasny-java-web-framework

Pobierz
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

  • 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
  • Odpowiedz
✨️ 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,
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

W trakcie odpalania kilkudziesięciu springowych integracyjnych testów z Testcontainers, po 10 testach dostaję taki błąd:

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
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

✨️ 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.
SoftBull - ✨️ Szkolenie Live: Własne Adnotacje w Java i Sprytne Ich Użycie! 

Odkryj ...

źródło: adnotacje-w-java

Pobierz
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

✨️ 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.
SoftBull - ✨️ Szkolenie Live: Śledzenie w Czasie Rzeczywistym z Zipkin!

Odkryj, jak ...

źródło: zipkin

Pobierz
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

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ę.
  • 18
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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ę.
  • Odpowiedz
✨️ Tworzenie aplikacji do strumieniowania obrazu w Spring Boot.

✅ Przejdź razem z nami przez projektowanie i tworzenie aplikacji do LiveStreamingu obrazu w Springu z wykorzystaniem Websocketów! W trakcie wydarzenia, krok po kroku, omówimy proces budowy aplikacji, zapewniając płynność i jakość strumieniowania w czasie rzeczywistym.

✅ Łącz świetną zabawę i cenną naukę podczas naszej sesji LiveCodingu! Dołącz do mnie w trakcie kodowania, gdzie razem stworzymy aplikację i zbadamy jej kluczowe elementy. To okazja, aby
SoftBull - ✨️ Tworzenie aplikacji do strumieniowania obrazu w Spring Boot.

✅ Przejdź...

źródło: live-strumieniowanie-obrazu

Pobierz
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Nofenak: Jak testujesz, to testujesz tylko wejście i wyjście na jednym endpoincie? A może odpalanie kilku endpointów jeden po drugim? Zaglądasz do bazy danych co się tam dzieje? Mockujesz lub mockujesz i weryfikujesz użycie niektórych mocków?

Zakładając, że chcesz przetestować aplikację i zasilić ją najpierw danymi do testów, bez testowania samego dodawania tych danych:

Kilka pytań odnośnie repozytoriów: Jakiego repozytorium chciałbyś użyć do zapisu danych do zasilenia bazy do testów? Co jeśli
  • Odpowiedz