Домашняя работа 8#12
Conversation
Добавил в проект зависимость spring-boot-starter-security и реализовал Basic Authentication Добавил регистрацию пользователей в приложении и организовал хранение логинов/паролей в БД. Пользователь с ролью ADMIN создается в скрипте миграции. Тесты минус
madoed
left a comment
There was a problem hiding this comment.
Доделать и ответить на комментарии.
Включение Method security функционала, скорее всего поможет и починить тесты.
| .csrf(AbstractHttpConfigurer::disable) | ||
| .cors(AbstractHttpConfigurer::disable) |
There was a problem hiding this comment.
Какие аргументы в пользу отключения CSRF и CORS?
There was a problem hiding this comment.
использую только localhost поэтому, как мне кажется ограничения CORS и CSRF не нужны, так как атаки CSRF в основном угрожают приложениям, доступным в Интернете + нет важных данных + проще тестировать
| } | ||
|
|
||
| @GetMapping("/{location}") | ||
| @PreAuthorize("hasAnyRole('USER', 'ADMIN')") |
There was a problem hiding this comment.
Чтобы использовать эту аннотацию нужно включить её поддержку, например через @EnableMethodSecurity
There was a problem hiding this comment.
Добавил аннотацию @EnableMethodSecurity и Тесты-mОтключил Security от прошлых тестов при помощи addFilters = false
|
|
||
| @SpringBootTest | ||
| @AutoConfigureMockMvc(printOnlyOnFailure = false) | ||
| public class AuthenticationControllerTest { |
There was a problem hiding this comment.
Тест не рабочий. Нет поднятия тестовой БД
Ниже используется UserRepository, который требует наличия подключения к БД
There was a problem hiding this comment.
Есть отдельный у тебя класс
SpringBootAppApplicationTests - там объявление бд - это надо использовать здесь (через наследование)
There was a problem hiding this comment.
Ну и остальные тесты требующие БД (а это все, которые поднимают весь контекст через @SpringBootTest) по той же причине падают
There was a problem hiding this comment.
Они у меня почему-то запустились 🤔 наверное, поэтому я и не подумал, что нужна бд
Хотя думал, что странно почему запускаются
There was a problem hiding this comment.
А покажи свои application.properties вижу они отличны, от того что в гитхабе
Есть предположение, что ты там указываешь бд (например h2) и верный api ключ. Тесты должны работать на том application.properties, который в репозитории.
Если надо изменить, то добавляешь в test application-test.properties и подвязываешь к тестам (https://www.baeldung.com/spring-tests-override-properties)
There was a problem hiding this comment.
Я что-то почитал и почти везде пишут, что единственный способ передать ключ(это передать лично) На гит хаб нельзя же пушить
There was a problem hiding this comment.
Не наследовал от SpringBootAppApplicationTests тк не используется бд
There was a problem hiding this comment.
Используется, у тебя @SpringBootTest поднимает весь контекст и ниже используется
@SpyBean
private WeatherService weatherService;Который использует реализацию сервиса без моков
There was a problem hiding this comment.
Там в самом сервисе в мапу идет сохранение ( я это имел ввиду)
There was a problem hiding this comment.
Добавил тк почему-то при повторном запуске тестов в BUILD файле возникал конфликт (дублировались классы тестов) после добавления ошибка исчезла
|
Все заработало кроме Сюда как раз надо добавить моку для внешней интеграции |



Добавил в проект зависимость spring-boot-starter-security и реализовал Basic Authentication
Добавил регистрацию пользователей в приложении и организовал хранение логинов/паролей в БД.
Пользователь с ролью ADMIN создается в скрипте миграции.
Тесты минус
Тесты не получились( даже к существующим добавил @WithMockUser(roles = "ADMIN") и там где POST запросы тесты ломаются на get все хорошо (может что-то не вижу или не понимаю)(((