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
Smevios via Wykop
- 0
W gwoli jasności, to możliwe jest przekazanie niestatycznej metody do
Możliwe, że twoją weryfikację da się zrealizować jeszcze łatwiej (bez bazy danych). Z
więc
Jeżeli chcesz
@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 bazowy WebTestClientConfigurer
Kolejny raz przekonuję się, że Spring Security to kombajn, w którym teoretycznie każdy komponent można podmienić, ale są tak ze sobą powiązane, że chcąc coś zrobić inaczej, trzeba przepisać połowę komponentów.
Udało mi się nieco okiełznać klienta OAuth2:
1. Tworząc filtr, który na podstawie nagłówka X-USER-ID utworzy obiekt Authentication - otóż SS nie akceptuje anonimowych klas Authentication ani jak przekażemy principal w formie ciągu znaków przy ręcznym utworzeniu OAuth2AuthorizeRequest.
2.
Udało mi się nieco okiełznać klienta OAuth2:
1. Tworząc filtr, który na podstawie nagłówka X-USER-ID utworzy obiekt Authentication - otóż SS nie akceptuje anonimowych klas Authentication ani jak przekażemy principal w formie ciągu znaków przy ręcznym utworzeniu OAuth2AuthorizeRequest.
2.
- 0
@SendMeAnAngel: zacząłbym od weryfikacji czy na pewno potrzebujesz spring-security-oauth2-client, czy może wystarczy ci spring-security-oauth2-resource-server. W każdym razie:
Jaki jest Use Case tego customowego headera? Jeżeli chcesz mieć dwa flow uwierzytelnienia - jeden OAuthowy (np. code grant), a drugi na podstawie Headera to brzmi to jak potrzeba dwóch AuthenticationManager / AuthenticationProvider (jeden dla flow z headerem, drugi dla oauth).
1. Tworząc filtr, który na podstawie nagłówka X-USER-ID utworzy obiekt Authentication - otóż SS nie akceptuje anonimowych klas Authentication ani jak przekażemy principal w formie ciągu znaków przy ręcznym utworzeniu OAuth2AuthorizeRequest.
Jaki jest Use Case tego customowego headera? Jeżeli chcesz mieć dwa flow uwierzytelnienia - jeden OAuthowy (np. code grant), a drugi na podstawie Headera to brzmi to jak potrzeba dwóch AuthenticationManager / AuthenticationProvider (jeden dla flow z headerem, drugi dla oauth).
2 & 3 & 4 -
- 0
@SendMeAnAngel:
Generalnie brzmi jakbyś strasznie kombinował. Opisz bardziej architekturę i potrzeby. Generalnie Spring wyciąga Redirect URI na podstawie properties, czyli możesz to ustawić zmiennymi środowiskowymi, więc różne Client/Resource Servery mogą integrować się z jednym Authorization Serverem, a powrót do "dobrego" środowiska (nie koniecznie instancji, bo sesje można wspołdzielić) ogarnąć ENVem
2 & 3 & 4 - Redirect URI
Generalnie brzmi jakbyś strasznie kombinował. Opisz bardziej architekturę i potrzeby. Generalnie Spring wyciąga Redirect URI na podstawie properties, czyli możesz to ustawić zmiennymi środowiskowymi, więc różne Client/Resource Servery mogą integrować się z jednym Authorization Serverem, a powrót do "dobrego" środowiska (nie koniecznie instancji, bo sesje można wspołdzielić) ogarnąć ENVem
#anonimowemirkowyznania
Jak rozpoznac dobra firme w trakcie rekrutacji jako programista?
Wlasnie zaczalem prace w nowej firmie jako Java dev, otwieram klasy, a tam 5-10k linii kodu w klasie.
Dokumentacja pisana w stylu "zobacz jaki jestem madry" i bardzo ograniczona.
Komunikacja przez Slack, trzeba byc nieustannie przy komputerze, bo ktos moze zadzwonic nagle. Outlooka sie nie uzywa do ustalania spotkan.
Jak rozpoznac dobra firme w trakcie rekrutacji jako programista?
Wlasnie zaczalem prace w nowej firmie jako Java dev, otwieram klasy, a tam 5-10k linii kodu w klasie.
Dokumentacja pisana w stylu "zobacz jaki jestem madry" i bardzo ograniczona.
Komunikacja przez Slack, trzeba byc nieustannie przy komputerze, bo ktos moze zadzwonic nagle. Outlooka sie nie uzywa do ustalania spotkan.
- 2
@AnonimoweMirkoWyznania: sprawdzenie czy osoby które cie rekrutują będą z tobą pracować, jeżeli tak to pytasz jak wygląda organizacja pracy / filozofia pracy / way of working. Jeżeli nie, to prośba o rozmowę o tym z kimś z docelowego zespołu (zawsze warto pogadać z kimś z docelowego zespołu, choćby po to żeby dowiedzieć się o bolączkach i problemach, ale i też zobaczyć jacy to ludzie).
Mam znajomych, którzy nie wyobrażają sobie nie mieć "dnia/godzin" próbnych (oczywiście pod NDA) zanim podejmą decyzję (i odrzucają organizacje które się na to nie zgadzają, bo za duże ryzyko). Są też organizacje (np. Toggl) które organizują testowy tydzień (3-5 dni) - oczywiście płatne, tak żeby dwie strony jeszcze lepiej mogły się poznać.
Z doświadczeniem budujemy sobie też zestaw heurystyk (pytań) żeby szybciej odsiewać złe
Mam znajomych, którzy nie wyobrażają sobie nie mieć "dnia/godzin" próbnych (oczywiście pod NDA) zanim podejmą decyzję (i odrzucają organizacje które się na to nie zgadzają, bo za duże ryzyko). Są też organizacje (np. Toggl) które organizują testowy tydzień (3-5 dni) - oczywiście płatne, tak żeby dwie strony jeszcze lepiej mogły się poznać.
Z doświadczeniem budujemy sobie też zestaw heurystyk (pytań) żeby szybciej odsiewać złe
- 0
Prosze o opinie - jestem w nowym projekcie i mamy mocny nacisk na DDD.
Na poziomie controlera i service stosujemy konwertery, ktore zamianiaja jeden obiekt na drugi
Wada tego rozwiazania jest to, ze konwertery nie sa testowane(dla obiektow, ktore maja wiecej pol jest to problematyczne), a dwa ze jest ich duzo i kazdy dodatkowy konwerter wymaga stworzenia nowego obiektu Dto.
Jaka moze alternatywa dla takiego rozwiazania?
Na poziomie controlera i service stosujemy konwertery, ktore zamianiaja jeden obiekt na drugi
Wada tego rozwiazania jest to, ze konwertery nie sa testowane(dla obiektow, ktore maja wiecej pol jest to problematyczne), a dwa ze jest ich duzo i kazdy dodatkowy konwerter wymaga stworzenia nowego obiektu Dto.
Jaka moze alternatywa dla takiego rozwiazania?
public ResponseEntity findCarLocalized(
- 1
@quwer: pokazałeś przykład Read Modelu, pytanie brzmi czy potrzebujesz ileś warstw żeby ograć Read Modele (a jeżeli tak, to co one wnoszą)? Może rozdzielnie stosu zapisu i odczytu, i zastosowanie różnych styli (styl pod potrzebę) rozwiązałoby problem? W ogólności, jeżeli pomiędzy warstwami nic się nie zmienia, to po co te warstwy?
- 0
Co jest bardziej popularne w frontendzie do tworzenia widoków strony www: Flexbox czy Grid?
Aktualnie uczę się Flexa i wydaje mi się, że mam go już dobrze opanowanego, ale nie wiem, czy jest sens się uczyć Grida, tym bardziej, iż słyszałem, że sam Flex spokojnie wystarczy do tworzenia dobrych, responsywnych stronek.
Powinienem się dobrze nauczyć Grida, skoro znam już Flexboxa?
#frontend #css #flexbox #grid
Aktualnie uczę się Flexa i wydaje mi się, że mam go już dobrze opanowanego, ale nie wiem, czy jest sens się uczyć Grida, tym bardziej, iż słyszałem, że sam Flex spokojnie wystarczy do tworzenia dobrych, responsywnych stronek.
Powinienem się dobrze nauczyć Grida, skoro znam już Flexboxa?
#frontend #css #flexbox #grid
Czy rząd popełnił błąd sprowadzając Polaków z zagranicy?
Rząd mógł popełnić błąd sprowadzając do Polski 42 tys. potencjalnych nosicieli koronawirusa. Nawet jeśli byli w kwarantannie, to członkowie ich rodzin mogli swobodnie poruszać się po kraju.
z- 339
- #
- #
- #
- #
- #
Pracuje w korporacji bo #java, chciałbym się zapytać o jedną rzecz. Jak rozgraniczacie sztukę pisania umiejętnego kodu, ładnego, przejrzystego wraz z krótkim czasu deadline. Podam przykład.
Zgodnie ze sztuką developmentu, aby kod był napisany po "bożemu" zajęłoby to nam miesiąc, jednak wtedy spóźnilibyśmy się z oddaniem produktu na czas. Jest opcja napisania tego po łepkach, wraz z testami w 2 tygodnie i oddanie produktu na czas. Co wybieracie?
Zgodnie ze sztuką developmentu, aby kod był napisany po "bożemu" zajęłoby to nam miesiąc, jednak wtedy spóźnilibyśmy się z oddaniem produktu na czas. Jest opcja napisania tego po łepkach, wraz z testami w 2 tygodnie i oddanie produktu na czas. Co wybieracie?
co robicie
- pisanie kodu po łebkach i oddanie na czas 46.2% (24)
- pisanie kodu po "bożemu" ale dłuższy czas pracy 53.8% (28)
Mireczki, mógłby ktoś rozwiązać moje wątpliwości w kwestii ldap + spring security?
Nigdy się nie integrowałem z ldapem w kwestii logowania, a w planach jest przejście z jwt na ldapa. Z tego co rozumiem, to ldap dostarcza gotową bazę użytkowników, co za tym idzie odpada proces rejestracji. Jak to się ma do encji systemowych typu User, skoro nie ma procesu rejestracji czyli tworzenia tego usera, a w logice biznesowej potrzebuje tego usera
Nigdy się nie integrowałem z ldapem w kwestii logowania, a w planach jest przejście z jwt na ldapa. Z tego co rozumiem, to ldap dostarcza gotową bazę użytkowników, co za tym idzie odpada proces rejestracji. Jak to się ma do encji systemowych typu User, skoro nie ma procesu rejestracji czyli tworzenia tego usera, a w logice biznesowej potrzebuje tego usera
- 0
jakie macie opinie o Lomboku?
na internecie spotkałem się ze skrajnymi opiniami, jedni go bardzo kochają, inni go szczerze nienawidzą. W moim przypadku, używam Lomboka od półtora roku i raczej byłbym szczerze zawiedziony gdybym wpadł w projekt, który go nie używa. Jedyny problem jaki miałem z Lombokiem, to StackOverflow na equals w hibernatowej encji, w tym wypadku ograniczam się do anotacji dla getterów, setterów i buildera.
#prograomwanie #java
na internecie spotkałem się ze skrajnymi opiniami, jedni go bardzo kochają, inni go szczerze nienawidzą. W moim przypadku, używam Lomboka od półtora roku i raczej byłbym szczerze zawiedziony gdybym wpadł w projekt, który go nie używa. Jedyny problem jaki miałem z Lombokiem, to StackOverflow na equals w hibernatowej encji, w tym wypadku ograniczam się do anotacji dla getterów, setterów i buildera.
#prograomwanie #java
- 2
@jaxon9000: dobry, z głową trzeba używać (jak do wszystkiego). Na pewno można spalić kupę czasu przy toString/equalsAndHashCode. My używamy do takich trywialnych rzeczy jak DTO, konstruktor do wstrzykiwania zależności do jakiegoś serwisu, Logger (ale jaka to korzyść jedna adnotacja = jedna linijka z polem w klasie), Builder. Często mamy tak, że equals i hashcode jest oparte tylko o dodatkowe pole UUID, więc korzyści z użycia adnotacji nad wygenerowaniem metody w
- 2
#java #programowanie
Java 8 od stycznia 2019 przestanie być publicznie wspierana. Tzn. nie będą dostępne darmowe aktualizacje, chyba że zapłaci się Oraclowi.
Java 9 i 10, to nie są wersje LTS. Wersją LTS będzie dopiero Java 11.
http://www.oracle.com/technetwork/java/javase/eol-135779.html
Java 8 od stycznia 2019 przestanie być publicznie wspierana. Tzn. nie będą dostępne darmowe aktualizacje, chyba że zapłaci się Oraclowi.
Java 9 i 10, to nie są wersje LTS. Wersją LTS będzie dopiero Java 11.
http://www.oracle.com/technetwork/java/javase/eol-135779.html
- 4
Hej,
Czy macie może backup zadań które były tutaj podane przez @pstrg ?
Niestety w webcache jest tylko 1 zadanie z 5.
http://web.archive.org/web/20180319023115/https://notehub.org/9pk10
#rekrutacjepstrg
Czy macie może backup zadań które były tutaj podane przez @pstrg ?
Niestety w webcache jest tylko 1 zadanie z 5.
http://web.archive.org/web/20180319023115/https://notehub.org/9pk10
#rekrutacjepstrg
- "Nastolatek..." - napisałem 12 lat temu... A teraz?
- Łódź
Mam 3 encje z relacjami:
Book N - 1 Publisher
Book N - N Author
Wszystkie
@Data
w Encjach to proszenie się o problemy:-
@EqualsAndHashCode
który opiera się na wszystkich polach (nawet mutowalnych, więc łamie kontrakt equals() i hashCode()).-
@toString
które albo rzuci ciStackOverflowError
(przy dwukierowanych zależnościach) albo wyciągnie pół bazy danych. Zresztą już widać u ciebie@toString.Exclude
, więc pewnie się natknąłeś. No albo przypadkowo zaloguje coś czegoBook.description
i jużequals()
ihashCode()
popsute bo oparte o wszystkie pola, a przecież to jest ta "sama" encja. Już ze samymBook.id
jest problem bo pojawi się po zapisie do bazy, więc jak wrzucisz encję przed zapisem doHashSet
, zapiszesz ją i sprawdzisz czy jest wHashSet
, to dostaniesz zwrotkę, że nie ma.