Я потратил дни, пытаясь выяснить, почему это происходит, но я не могу найти проблему. Может ли кто -нибудь помочь мне, пожалуйста? В трубопроводе я получаю следующую ошибку целостности: < /p>
CustomerControllerTest.shouldReturnListofCustomersWhenEntrepreneurUserRequest:350 » DataIntegrityViolation could not execute statement [Unique index or primary key violation: "PUBLIC.CONSTRAINT_8C768_INDEX_C ON PUBLIC.PERSON(EMAIL NULLS FIRST) VALUES ( /* 14 */ '[email protected]' )"; SQL statement:
< /code>
My Controller Test: < /p>
@AutoConfigureMockMvc
@ActiveProfiles("test")
@Import(SecurityTestConfig.class)
public class CustomerControllerTest {
@Autowired
private ObjectMapper objectMapper;
@Autowired
private MockMvc mockMvc;
@Autowired
private CustomerRepository customerRepository;
@Autowired
private CustomerMapper customerMapper;
@MockitoBean
private KeycloakUserService keycloakUserService;
@Autowired
private JwtDecoder jwtDecoder;
@Autowired
private CityRepository cityRepository;
@Autowired
private EntrepreneurRepository entrepreneurRepository;
@Autowired
private EntrepreneurMapper entrepreneurMapper;
private CustomerRequestDTO customerRequestDTO;
private Customer customer;
...
@Test
public void shouldReturnListofCustomersWhenEntrepreneurUserRequest() throws Exception {
var entrepreneurRequestDTO = new EntrepreneurRequestDTO(
"Inovação Global Tecnológica e Consultoria Avançada" +
" para Soluções Inteligentes em Desenvolvimento Sustentável" +
" e Tecnologia Integr",
new PersonRequestDTO(
"k",
"g",
"555.555.555-33",
"33.333.333/3333-33",
"(11) 95555-5555",
"abcd1234",
"abcd1234",
"[email protected]",
new AddressRequestDTO(
"Rua dos Jacarandás Floridos do Bairro" +
" das Águas Claras em Comemoração ao Centenário" +
" da Fundação da Cidade de Esperança",
"59911-111",
"Residencial das Palmeiras Altas e Horizontes" +
" Verdejantes do Vale Encantado em Celebração às" +
" Belezas Naturais da Região Serrana",
10,
cityRepository.findAll().getFirst().getId()
)
)
);
var entrepreneur = entrepreneurMapper.toEntity(entrepreneurRequestDTO);
entrepreneur.getPerson().setKeycloakId(UUID.randomUUID().toString());
entrepreneur = entrepreneurRepository.save(entrepreneur);
String roleName = KeycloakConstants.ROLE_LIST_CUSTOMERS.split("'")[1];
String tokenString = JwtTestUtil.getToken(entrepreneur.getPerson().getEmail());
Jwt jwt = JwtTestUtil.getJwt(tokenString, entrepreneur.getPerson(), List.of(
roleName
));
when(jwtDecoder.decode(tokenString)).thenReturn(jwt);
String expectedResponse = objectMapper.writeValueAsString(
customerMapper.toDTOList(List.of(customer)));
mockMvc.perform(
MockMvcRequestBuilders.get("/api/customers", new ArrayList())
.header("Authorization", "Bearer " + tokenString)
).andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().json(expectedResponse));
entrepreneurRepository.deleteAll();
}
< /code>
my Application-test.properties Файл: < /p>
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
spring.jpa.show-sql=false
spring.flyway.enabled=true
spring.flyway.out-of-order=true
< /code>
my ci -файл: < /p>
name: CI
on: [pull_request, push]
jobs:
continuous-integration:
runs-on: ubuntu-latest
env:
KC_BOOTSTRAP_ADMIN_USERNAME: ${{secrets.KC_BOOTSTRAP_ADMIN_USERNAME}}
KC_BOOTSTRAP_ADMIN_PASSWORD: ${{secrets.KC_BOOTSTRAP_ADMIN_PASSWORD}}
POSTGRES_USER: ${{secrets.POSTGRES_USER}}
POSTGRES_PASSWORD: ${{secrets.POSTGRES_PASSWORD}}
POSTGRES_DB: ${{secrets.POSTGRES_DB}}
KEYCLOAK_SERVER_URL: ${{secrets.KEYCLOAK_SERVER_URL}}
KEYCLOAK_REALM: ${{secrets.KEYCLOAK_REALM}}
KEYCLOAK_CLIENT_ID: ${{secrets.KEYCLOAK_CLIENT_ID}}
KEYCLOAK_CLIENT_SECRET: ${{secrets.KEYCLOAK_CLIENT_SECRET}}
SPRING_APPLICATION_NAME: ${{secrets.SPRING_APPLICATION_NAME}}
SPRING_DATA_SOURCE_URL: ${{secrets.SPRING_DATA_SOURCE_URL}}
SPRING_DATA_SOURCE_USERNAME: ${{secrets.SPRING_DATA_SOURCE_USERNAME}}
SPRING_DATA_SOURCE_PASSWORD: ${{secrets.SPRING_DATA_SOURCE_PASSWORD}}
SPRING_DATA_SOURCE_DRIVER_CLASS_NAME: ${{secrets.SPRING_DATA_SOURCE_DRIVER_CLASS_NAME}}
SPRING_JPA_HIBERNATE_DIALECT: ${{secrets.SPRING_JPA_HIBERNATE_DIALECT}}
SPRING_JPA_HIBERNATE_DDL_AUTO: ${{secrets.SPRING_JPA_HIBERNATE_DDL_AUTO}}
RABBIT_MQ_ORDERS_GROUP_SHEET_QUEUE_NAME: ${{secrets.RABBIT_MQ_ORDERS_GROUP_SHEET_QUEUE_NAME}}
RABBIT_MQ_HOSTNAME: ${{secrets.RABBIT_MQ_HOSTNAME}}
RABBIT_MQ_PORT: ${{secrets.RABBIT_MQ_PORT}}
RABBIT_MQ_USERNAME: ${{secrets.RABBIT_MQ_USERNAME}}
RABBIT_MQ_PASSWORD: ${{secrets.RABBIT_MQ_PASSWORD}}
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Application building
run: docker compose -f docker-compose.yml up -d
- name: Application testing
run: |
docker exec sisconf-prod /workspace/app/mvnw test
- name: Post Application Building and Testing
run: |
docker compose -f docker-compose.yml down
< /code>
Составьте файл, используемый в Ci: < /p>
services:
keycloak:
image: quay.io/keycloak/keycloak:26.0.7
ports:
- "8000:8080"
environment:
- KC_BOOTSTRAP_ADMIN_USERNAME=${KC_BOOTSTRAP_ADMIN_USERNAME}
- KC_BOOTSTRAP_ADMIN_PASSWORD=${KC_BOOTSTRAP_ADMIN_PASSWORD}
command: start-dev
volumes:
- keycloak-data:/opt/keycloak/conf
postgres:
image: postgres:16
volumes:
- postgres-data:/var/lib/postgresql/data
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
sisconf:
container_name: sisconf-prod
build:
context: ./
dockerfile: ./compose/prod/Dockerfile
ports:
- "8080:8080"
environment:
- KEYCLOAK_SERVER_URL=${KEYCLOAK_SERVER_URL}
- KEYCLOAK_REALM=${KEYCLOAK_REALM}
- KEYCLOAK_CLIENT_ID=${KEYCLOAK_CLIENT_ID}
- KEYCLOAK_CLIENT_SECRET=${KEYCLOAK_CLIENT_SECRET}
- SPRING_APPLICATION_NAME=${SPRING_APPLICATION_NAME}
- SPRING_DATA_SOURCE_URL=${SPRING_DATA_SOURCE_URL}
- SPRING_DATA_SOURCE_USERNAME=${SPRING_DATA_SOURCE_USERNAME}
- SPRING_DATA_SOURCE_PASSWORD=${SPRING_DATA_SOURCE_PASSWORD}
- SPRING_DATA_SOURCE_DRIVER_CLASS_NAME=${SPRING_DATA_SOURCE_DRIVER_CLASS_NAME}
- SPRING_JPA_HIBERNATE_DIALECT=${SPRING_JPA_HIBERNATE_DIALECT}
- SPRING_JPA_HIBERNATE_DDL_AUTO=${SPRING_JPA_HIBERNATE_DDL_AUTO}
- RABBIT_MQ_ORDERS_GROUP_SHEET_QUEUE_NAME=${RABBIT_MQ_ORDERS_GROUP_SHEET_QUEUE_NAME}
- RABBIT_MQ_HOSTNAME=${RABBIT_MQ_HOSTNAME}
- RABBIT_MQ_PORT=${RABBIT_MQ_PORT}
- RABBIT_MQ_USERNAME=${RABBIT_MQ_USERNAME}
- RABBIT_MQ_PASSWORD=${RABBIT_MQ_PASSWORD}
depends_on:
- keycloak
- postgres
volumes:
keycloak-data:
postgres-data:
mvn-cache:
< /code>
У меня есть другие тесты, которые создают новых предпринимателей с одним и тем же CPF, но все они убирают после каждого тестового примера. Заранее спасибо!
Подробнее здесь: https://stackoverflow.com/questions/794 ... ss-locally
Springboot - Тесты проваливаются в трубопроводе CI Github, но, но проходят локально ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Почему мои тесты на Python Pytest проваливаются из -за ошибок тайм -аута?
Anonymous » » в форуме Python - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Почему мои тесты на Python Pytest проваливаются из -за ошибок тайм -аута?
Anonymous » » в форуме Python - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-