diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
deleted file mode 100644
index c55bb6f..0000000
--- a/.github/workflows/ci.yml
+++ /dev/null
@@ -1,49 +0,0 @@
-name: CI - Build & Test
-
-on:
- push:
- branches:
- - dev
- - master
- pull_request:
- branches:
- - dev
-
-
-jobs:
- build-test:
- runs-on: ubuntu-latest
-
- services:
- mysql:
- image: mysql:8.3.0
- env:
- MYSQL_DATABASE: lookaudb
- MYSQL_ROOT_PASSWORD: password
- ports:
- - 3306:3306
- options: >-
- --health-cmd="mysqladmin ping -h localhost"
- --health-interval=5s
- --health-timeout=10s
- --health-retries=5
-
- selenium:
- image: selenium/standalone-chrome:4.23.0
- ports:
- - 4444:4444
-
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
-
- - name: Set up Java
- uses: actions/setup-java@v4
- with:
- distribution: temurin
- java-version: 17
-
- - name: Install Maven dependencies and run tests
- working-directory: backend
- run: mvn test -Dgroups=!selenium
-
diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml
new file mode 100644
index 0000000..423567b
--- /dev/null
+++ b/.github/workflows/ci_cd.yml
@@ -0,0 +1,234 @@
+name: CI/CD - Test, Sonar & Docker
+
+on:
+ push:
+ branches: [ "dev", "main" ]
+ pull_request:
+ branches: [ "main" ]
+
+
+jobs:
+
+ #TEST - BACKEND
+ backend-tests:
+ name: Backend Tests
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - name: Set up Java
+ uses: actions/setup-java@v4
+ with:
+ distribution: temurin
+ java-version: 17
+
+ - name: Cache Maven packages
+ uses: actions/cache@v4
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ restore-keys: ${{ runner.os }}-maven
+
+ - name: Run backend tests (excluding Selenium)
+ working-directory: backend
+ run: mvn -B verify -Dgroups=!selenium
+
+
+ #TEST - FRONTEND
+ #frontend-tests:
+ # name: Frontend Tests
+ #runs-on: ubuntu-22.04
+ # needs: backend-tests
+
+ # steps:
+ # - uses: actions/checkout@v4
+
+ # --- Java ---
+ # - name: Set up Java 18
+ # uses: actions/setup-java@v4
+ # with:
+ # distribution: temurin
+ # java-version: 18
+
+ # --- Chromium ---
+ # - name: Install Chromium (prevent auto-updates)
+ #run: |
+ # sudo apt-get update
+ # sudo apt-get install -y chromium-browser
+ # sudo apt-mark hold chromium-browser
+ # sudo apt-mark hold google-chrome-stable
+
+ # --- Docker: MySQL ---
+ # - name: Set up Docker MySQL container
+ #run: |
+ # sudo docker run -d \
+ # --name lookau-mysql-ci \
+ # -p 3306:3306 \
+ # -e MYSQL_DATABASE=lookau_test \
+ # -e MYSQL_ROOT_PASSWORD=password \
+ # mysql:8.3.0
+
+ # --- Dockerize para esperar DB ---
+ # - name: Install Dockerize
+ # run: curl -sSL https://github.com/jwilder/dockerize/releases/download/v0.6.1/dockerize-linux-amd64-v0.6.1.tar.gz | sudo tar -C /usr/local/bin -xzv
+
+ #- name: Wait for MySQL to start
+ #run: dockerize -wait tcp://localhost:3306 -timeout 1m
+
+ # --- Environment variables ---
+ #- name: Set environment variables
+ #run: |
+ #echo "GMAIL_USERNAME=${{ secrets.GMAIL_USERNAME }}" >> $GITHUB_ENV
+ #echo "GMAIL_PASSWORD=${{ secrets.GMAIL_PASSWORD }}" >> $GITHUB_ENV
+
+ # --- env.properties ---
+ #- name: Create env.properties file
+ #run: |
+ #echo "GMAIL_USERNAME=${{ secrets.GMAIL_USERNAME }}" > backend/src/main/resources/env.properties
+ #echo "GMAIL_PASSWORD=${{ secrets.GMAIL_PASSWORD }}" >> backend/src/main/resources/env.properties
+
+ # --- Line endings fix ---
+ #- name: Convert line endings to Unix format
+ #run: sed -i 's/\r$//' backend/mvnw
+
+ # --- Make mvnw executable ---
+ #- name: Make mvnw executable
+ #run: chmod +x backend/mvnw
+
+ # --- Build backend ---
+ #- name: Build with Maven
+ #run: backend/mvnw -B package --file backend/pom.xml -DskipTests
+
+ # --- Run backend ---
+ #- name: Run backend
+ #run: |
+ #nohup backend/mvnw spring-boot:run --file backend/pom.xml &
+ #sleep 120
+
+ # --- Node.js ---
+ #- name: Set up Node.js
+ #uses: actions/setup-node@v4
+ #with:
+ #node-version: 18
+
+ # --- Angular CLI ---
+ #- name: Install Angular CLI
+ #run: npm install -g @angular/cli
+ #working-directory: frontend
+
+ #- name: Do not share Angular CLI telemetry
+ #run: ng analytics off
+ #working-directory: frontend
+
+ #- name: Install frontend dependencies
+ #run: npm install
+ #working-directory: frontend
+
+ # --- Run Angular app ---
+ #- name: Run Angular application
+ #run: |
+ #nohup ng serve &
+ #sleep 120
+ #working-directory: frontend
+
+ #- name: Show frontend logs
+ #run: cat frontend/frontend.log || true
+
+ # --- Selenium tests ---
+ #- name: Run Selenium tests
+ #run: backend/mvnw test -P selenium-tests --file backend/pom.xml
+
+
+ #SONAR
+ sonar-analysis:
+ name: SonarCloud Analysis
+ runs-on: ubuntu-latest
+ needs: backend-tests
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - name: Set up Java
+ uses: actions/setup-java@v4
+ with:
+ distribution: temurin
+ java-version: 17
+
+ - name: Cache Maven packages
+ uses: actions/cache@v4
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ restore-keys: ${{ runner.os }}-maven
+
+ - name: Cache SonarCloud packages
+ uses: actions/cache@v4
+ with:
+ path: ~/.sonar/cache
+ key: ${{ runner.os }}-sonar
+ restore-keys: ${{ runner.os }}-sonar
+
+ - name: Run backend tests
+ working-directory: backend
+ run: mvn clean verify -Dgroups=!selenium
+
+
+ - name: Run Sonar on PR
+ if: github.event_name == 'pull_request'
+ working-directory: backend
+ run: |
+ mvn sonar:sonar \
+ -Dsonar.projectKey=codeurjc-students_2025-LookAu \
+ -Dsonar.organization=codeurjc-students \
+ -Dsonar.host.url=https://sonarcloud.io \
+ -Dsonar.login=${{ secrets.SONAR_TOKEN }} \
+ -Dsonar.coverage.jacoco.xmlReportPaths=target/site/jacoco/jacoco.xml \
+ -Dsonar.pullrequest.key=${{ github.event.pull_request.number }} \
+ -Dsonar.pullrequest.branch=${{ github.head_ref }} \
+ -Dsonar.pullrequest.base=${{ github.base_ref }}
+
+ - name: Run Sonar on branch
+ if: github.event_name != 'pull_request'
+ working-directory: backend
+ run: |
+ mvn sonar:sonar \
+ -Dsonar.projectKey=codeurjc-students_2025-LookAu \
+ -Dsonar.organization=codeurjc-students \
+ -Dsonar.host.url=https://sonarcloud.io \
+ -Dsonar.login=${{ secrets.SONAR_TOKEN }} \
+ -Dsonar.branch.name=${GITHUB_REF_NAME##*/} \
+ -Dsonar.coverage.jacoco.xmlReportPaths=target/site/jacoco/jacoco.xml
+
+
+
+
+
+ #DOCKER DEPLOY
+ publish-docker:
+ name: Publish Docker
+ runs-on: ubuntu-latest
+ needs: sonar-analysis
+ if: github.event_name == 'pull_request' && github.base_ref == 'main'
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Log in to DockerHub
+ uses: docker/login-action@v3
+ with:
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
+
+ - name: Build Docker image
+ working-directory: ./docker
+ run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/lookau:${{ github.sha }} -f Dockerfile ..
+
+ - name: Tag as PR build
+ run: docker tag ${{ secrets.DOCKERHUB_USERNAME }}/lookau:${{ github.sha }} ${{ secrets.DOCKERHUB_USERNAME }}/lookau:pr-${{ github.event.pull_request.number }}
+
+ - name: Push Docker image to DockerHub
+ run: |
+ docker push ${{ secrets.DOCKERHUB_USERNAME }}/lookau:${{ github.sha }}
+ docker push ${{ secrets.DOCKERHUB_USERNAME }}/lookau:pr-${{ github.event.pull_request.number }}
diff --git a/.github/workflows/sonar-initial.yml b/.github/workflows/sonar-initial.yml
new file mode 100644
index 0000000..a57cc4b
--- /dev/null
+++ b/.github/workflows/sonar-initial.yml
@@ -0,0 +1,36 @@
+name: Sonar Initial Analysis
+
+on:
+ push:
+ branches: [ "main" ]
+
+jobs:
+ sonarcloud:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - name: Set up JDK 17
+ uses: actions/setup-java@v4
+ with:
+ distribution: 'zulu'
+ java-version: 17
+
+ - name: Cache Maven packages
+ uses: actions/cache@v4
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ restore-keys: ${{ runner.os }}-maven
+
+ - name: SonarCloud Scan
+ env:
+ SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
+ working-directory: backend
+ run: >
+ mvn -B verify -Dgroups=!selenium org.sonarsource.scanner.maven:sonar-maven-plugin:sonar
+ -Dsonar.projectKey=codeurjc-students_2025-LookAu
+ -Dsonar.organization=codeurjc-students
+ -Dsonar.host.url=https://sonarcloud.io
diff --git a/backend/pom.xml b/backend/pom.xml
index 7f1bba2..8bfdcb0 100644
--- a/backend/pom.xml
+++ b/backend/pom.xml
@@ -8,16 +8,40 @@
lookau
1.0.0-SNAPSHOT
+
+
+ selenium-tests
+
+ test
+ selenium
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 3.1.2
+
+ ${groups}
+
+
+
+
+
+
+
+
org.springframework.boot
spring-boot-starter-parent
3.0.0
-
+
UTF-8
17
+ codeurjc-students
@@ -214,6 +238,33 @@
maven-surefire-plugin
3.5.2
+
+
+ org.sonarsource.scanner.maven
+ sonar-maven-plugin
+ 4.0.0.4121
+
+
+
+ org.jacoco
+ jacoco-maven-plugin
+ 0.8.11
+
+
+
+ prepare-agent
+
+
+
+ report
+ verify
+
+ report
+
+
+
+
+
diff --git a/backend/src/main/java/com/codeurjc/backend/DataInitializer.java b/backend/src/main/java/com/codeurjc/backend/DataInitializer.java
index 0cb1e2a..8850137 100644
--- a/backend/src/main/java/com/codeurjc/backend/DataInitializer.java
+++ b/backend/src/main/java/com/codeurjc/backend/DataInitializer.java
@@ -426,7 +426,6 @@ public void init() throws Exception {
}
-
private byte[] loadResource(String resourcePath) throws IOException {
try (InputStream inputStream = getClass().getResourceAsStream(resourcePath)) {
if (inputStream != null) {
diff --git a/backend/src/main/java/com/codeurjc/backend/repository/TicketRepository.java b/backend/src/main/java/com/codeurjc/backend/repository/TicketRepository.java
index fd5643f..16bfda0 100644
--- a/backend/src/main/java/com/codeurjc/backend/repository/TicketRepository.java
+++ b/backend/src/main/java/com/codeurjc/backend/repository/TicketRepository.java
@@ -25,6 +25,7 @@ public interface TicketRepository extends JpaRepository{
List findAllByTeamId(Long id);
List findAllByTeam(Team team);
+ @Query("SELECT t FROM Ticket t WHERE t.statusName = :statusName AND t.date <= CURRENT_DATE")
List findAllByStatusName(String statusName);
List findAllByDate(LocalDate date);
diff --git a/backend/src/main/java/com/codeurjc/backend/restcontroller/auth/LoginRestController.java b/backend/src/main/java/com/codeurjc/backend/restcontroller/auth/LoginRestController.java
index a987138..a31c959 100644
--- a/backend/src/main/java/com/codeurjc/backend/restcontroller/auth/LoginRestController.java
+++ b/backend/src/main/java/com/codeurjc/backend/restcontroller/auth/LoginRestController.java
@@ -36,7 +36,6 @@ public ResponseEntity login(
@CookieValue(name = "accessToken", required = false) String accessToken,
@CookieValue(name = "refreshToken", required = false) String refreshToken,
@RequestBody LoginRequest loginRequest) {
- System.out.println("LoginRequest recibido: " + loginRequest);
return userService.login(loginRequest, accessToken, refreshToken);
}
diff --git a/backend/src/main/java/com/codeurjc/backend/scheduler/LotteryScheduler.java b/backend/src/main/java/com/codeurjc/backend/scheduler/LotteryScheduler.java
index 7db5251..ab4e6d5 100644
--- a/backend/src/main/java/com/codeurjc/backend/scheduler/LotteryScheduler.java
+++ b/backend/src/main/java/com/codeurjc/backend/scheduler/LotteryScheduler.java
@@ -9,8 +9,10 @@
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Profile;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
import com.codeurjc.backend.model.Ticket;
import com.codeurjc.backend.model.API.BonolotoAPI;
@@ -31,6 +33,7 @@
@Component
+@Profile("!test")
public class LotteryScheduler {
@Autowired
@@ -49,11 +52,11 @@ public class LotteryScheduler {
/*************************/
/*************************/
+ @Transactional
@Scheduled(fixedDelay = 60000)
public synchronized void run() throws JsonMappingException, JsonProcessingException, InterruptedException{
if (running) {
- System.out.println("Scheduler ya en ejecución. Saltando...");
return;
}
running = true;
@@ -86,7 +89,6 @@ public synchronized void run() throws JsonMappingException, JsonProcessingExcept
}catch(Exception e){
System.err.println("Error in scheduled job: " + e.getMessage());
- e.printStackTrace();
} finally {
running = false;
}
@@ -116,7 +118,7 @@ private void checkAndChangeStatusByType(List lTickets, Map lTicketAPI = scraperService.getResults(key, mTypeToDate.get(key).get(0), mTypeToDate.get(key).get(mTypeToDate.get(key).size() - 1));
-
+
//check the status ticket by type
if(!lTicketAPI.isEmpty()){
switch (key){
@@ -163,9 +165,12 @@ private void checkAndChangeStatusByType(List lTickets, Map> getMapsPendingTickets(List lTick
return mTypeToTicketPending;
}
+
+ /********************/
+ /******* HELP *******/
+ /********************/
+
+ private List setStatusWrongDate(Map mTypeToDateToTicketPending){
+
+ List lTicketsToUpdateByType = new ArrayList();
+
+ for(Ticket ticket: mTypeToDateToTicketPending.values()){
+ ticket.setStatusName("Wrong Date");
+
+ lTicketsToUpdateByType.add(ticket);
+ }
+
+ return lTicketsToUpdateByType;
+
+ }
}
\ No newline at end of file
diff --git a/backend/src/main/java/com/codeurjc/backend/security/jwt/SecurityCipher.java b/backend/src/main/java/com/codeurjc/backend/security/jwt/SecurityCipher.java
index 6df9261..02537d1 100644
--- a/backend/src/main/java/com/codeurjc/backend/security/jwt/SecurityCipher.java
+++ b/backend/src/main/java/com/codeurjc/backend/security/jwt/SecurityCipher.java
@@ -27,7 +27,6 @@ public static void setKey() {
key = Arrays.copyOf(key, 16);
secretKey = new SecretKeySpec(key, "AES");
} catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
}
}
@@ -42,7 +41,6 @@ public static String encrypt(String strToEncrypt) {
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return Base64.getEncoder().encodeToString(cipher.doFinal(strToEncrypt.getBytes(StandardCharsets.UTF_8)));
} catch (Exception e) {
- e.printStackTrace();
}
return null;
}
@@ -58,7 +56,6 @@ public static String decrypt(String strToDecrypt) {
cipher.init(Cipher.DECRYPT_MODE, secretKey);
return new String(cipher.doFinal(Base64.getDecoder().decode(strToDecrypt)));
} catch (Exception e) {
- e.printStackTrace();
}
return null;
}
diff --git a/backend/src/main/java/com/codeurjc/backend/service/AccountService.java b/backend/src/main/java/com/codeurjc/backend/service/AccountService.java
index 8c06469..d781355 100644
--- a/backend/src/main/java/com/codeurjc/backend/service/AccountService.java
+++ b/backend/src/main/java/com/codeurjc/backend/service/AccountService.java
@@ -233,7 +233,6 @@ public Page getAccountTicketsPaged(List tickets, Pageable
dtoList.add(ticketTeamDTO);
} catch (Exception e) {
System.err.println("Error al convertir el ticket: " + ticket);
- e.printStackTrace();
}
}
diff --git a/backend/src/main/java/com/codeurjc/backend/service/ScraperService.java b/backend/src/main/java/com/codeurjc/backend/service/ScraperService.java
index be623a0..2779449 100644
--- a/backend/src/main/java/com/codeurjc/backend/service/ScraperService.java
+++ b/backend/src/main/java/com/codeurjc/backend/service/ScraperService.java
@@ -29,8 +29,9 @@ public List> getResults(String type, String firstDate, String lastDate) throws
WebDriver driver = webDriverProvider.createDriver();
try{
+
//create url for scraping
- String url = "https://www.loteriasyapuestas.es/servicios/buscadorSorteos?game_id="+ type + "&celebrados=false&fechaInicioInclusiva="+ lastDate + "&fechaFinInclusiva=" + firstDate;
+ String url = "https://www.loteriasyapuestas.es/servicios/buscadorSorteos?game_id="+ type + "&celebrados=true&fechaInicioInclusiva="+ lastDate + "&fechaFinInclusiva=" + firstDate;
//create webdriver
driver.get(url);
@@ -54,18 +55,18 @@ public List> getResults(String type, String firstDate, String lastDate) throws
}
String cleanJson = json.trim();
- // Caso 1: respuesta es solo un mensaje entre comillas
+
+ //if the response not found tickets
if (cleanJson.startsWith("\"") || cleanJson.contains("No se ha encontrado")) {
return List.of();
}
- // Caso 2: si no empieza por "[" es que no es un array JSON válido
+ //if the response is not a JSON valid
if (!cleanJson.startsWith("[")) {
return List.of();
- }
-
-
+ }
+ //if the response is ok
ObjectMapper objectMapper = new ObjectMapper();
switch (type) {
@@ -104,7 +105,7 @@ public List> getResults(String type, String firstDate, String lastDate) throws
}
} finally {
- driver.quit(); // ✅ SIEMPRE se cierra
+ driver.quit();
}
}
}
diff --git a/backend/src/main/java/com/codeurjc/backend/service/TeamService.java b/backend/src/main/java/com/codeurjc/backend/service/TeamService.java
index acc8300..92c8883 100644
--- a/backend/src/main/java/com/codeurjc/backend/service/TeamService.java
+++ b/backend/src/main/java/com/codeurjc/backend/service/TeamService.java
@@ -108,7 +108,6 @@ public Page getTeamTicketsPaged(String teamId, Pageable pageable)
dtoList.add(ticketTeamDTO);
} catch (Exception e) {
System.err.println("Error al convertir el ticket: " + ticket);
- e.printStackTrace();
}
}
diff --git a/backend/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/backend/src/main/resources/META-INF/additional-spring-configuration-metadata.json
new file mode 100644
index 0000000..e906dc6
--- /dev/null
+++ b/backend/src/main/resources/META-INF/additional-spring-configuration-metadata.json
@@ -0,0 +1,27 @@
+{"properties": [
+ {
+ "name": "SELENIUM_URL",
+ "type": "java.lang.String",
+ "description": "A description for 'SELENIUM_URL'"
+ },
+ {
+ "name": "jwt.secret",
+ "type": "java.lang.String",
+ "description": "A description for 'jwt.secret'"
+ },
+ {
+ "name": "server.ssl.verify-client",
+ "type": "java.lang.String",
+ "description": "A description for 'server.ssl.verify-client'"
+ },
+ {
+ "name": "SELENIUM_URL",
+ "type": "java.lang.String",
+ "description": "A description for 'SELENIUM_URL'"
+ },
+ {
+ "name": "SELENIUM_URL",
+ "type": "java.lang.String",
+ "description": "A description for 'SELENIUM_URL'"
+ }
+]}
\ No newline at end of file
diff --git a/backend/src/main/resources/application-docker.properties b/backend/src/main/resources/application-docker.properties
index 959b59b..fe9c292 100644
--- a/backend/src/main/resources/application-docker.properties
+++ b/backend/src/main/resources/application-docker.properties
@@ -4,13 +4,11 @@ server.ssl.key-store=classpath:docker-keystore.jks
server.ssl.key-store-password=webapp
server.ssl.key-alias=lookau-docker
server.ssl.key-password=webapp
-server.ssl.verify-client=false
spring.datasource.url=jdbc:mysql://lookau-DB:3306/lookaudb
spring.datasource.username=root
spring.datasource.password=password
-SELENIUM_URL=http://selenium:4444/wd/hub
logging.level.org.apache.tomcat=WARN
logging.level.org.apache.coyote=WARN
\ No newline at end of file
diff --git a/backend/src/test/java/com/salenium/LoginSeleniumTest.java b/backend/src/test/java/com/salenium/LoginSeleniumTest.java
index 4137683..190dc72 100644
--- a/backend/src/test/java/com/salenium/LoginSeleniumTest.java
+++ b/backend/src/test/java/com/salenium/LoginSeleniumTest.java
@@ -6,9 +6,11 @@
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
-
+import org.junit.jupiter.api.TestMethodOrder;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
@@ -28,6 +30,7 @@
import io.github.bonigarcia.wdm.WebDriverManager;
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
@Tag("selenium")
@SpringBootTest(classes = LookAu.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ActiveProfiles("test")
@@ -87,10 +90,10 @@ void tearDown() {
}
@Test
+ @Order(4)
void testLoginValid() {
- driver.get(baseUrl+"/login");
- System.out.println("Current URL: " + driver.getCurrentUrl());
+ driver.get(baseUrl+"/login");
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".input-login-1")));
@@ -105,7 +108,9 @@ void testLoginValid() {
@Test
+ @Order(1)
void testLoginInvalid() {
+
driver.get(baseUrl+"/login");
driver.findElement(By.cssSelector(".input-login-1")).sendKeys("wrong@nope.com");
@@ -113,10 +118,12 @@ void testLoginInvalid() {
driver.findElement(By.cssSelector("input[type=submit]")).click();
wait.until(ExpectedConditions.urlContains("/login"));
+
assertTrue(driver.getCurrentUrl().contains("/login"));
}
@Test
+ @Order(3)
void testSignupValid() {
driver.get(baseUrl+"/signup");
@@ -139,8 +146,9 @@ void testSignupValid() {
}
@Test
+ @Order(2)
void testSignupRepear() {
-
+
//nick name repeat
driver.get(baseUrl+"/signup");
diff --git a/backend/src/test/java/com/salenium/ProfileSeleniumTest.java b/backend/src/test/java/com/salenium/ProfileSeleniumTest.java
index 23f7dfc..438b9db 100644
--- a/backend/src/test/java/com/salenium/ProfileSeleniumTest.java
+++ b/backend/src/test/java/com/salenium/ProfileSeleniumTest.java
@@ -7,9 +7,11 @@
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
-
+import org.junit.jupiter.api.TestMethodOrder;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
@@ -31,6 +33,7 @@
import io.github.bonigarcia.wdm.WebDriverManager;
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
@Tag("selenium")
@SpringBootTest(classes = LookAu.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ActiveProfiles("test")
@@ -88,6 +91,7 @@ void tearDown() {
}
@Test
+ @Order(8)
void testAddFriend() {
//loggin
@@ -129,6 +133,7 @@ void testAddFriend() {
}
@Test
+ @Order(5)
void testAceptPendingFriendAndAjaxMyFriends() {
// login
@@ -193,6 +198,7 @@ void testAceptPendingFriendAndAjaxMyFriends() {
@Test
+ @Order(7)
void testDenyPendingFriendAndAjaxMyFriends() {
//login
@@ -254,6 +260,7 @@ void testDenyPendingFriendAndAjaxMyFriends() {
@Test
+ @Order(6)
void testDeleteFriend() {
//loggin
diff --git a/backend/src/test/java/com/salenium/TeamsAndTicketsSeleniumTest.java b/backend/src/test/java/com/salenium/TeamsAndTicketsSeleniumTest.java
index e028f09..7d0c625 100644
--- a/backend/src/test/java/com/salenium/TeamsAndTicketsSeleniumTest.java
+++ b/backend/src/test/java/com/salenium/TeamsAndTicketsSeleniumTest.java
@@ -10,9 +10,11 @@
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
-
+import org.junit.jupiter.api.TestMethodOrder;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
@@ -33,6 +35,7 @@
import io.github.bonigarcia.wdm.WebDriverManager;
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
@Tag("selenium")
@SpringBootTest(classes = LookAu.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ActiveProfiles("test")
@@ -90,7 +93,9 @@ void tearDown() {
@Test
+ @Order(15)
void testCreateNewTeam() throws InterruptedException {
+
driver.get(baseUrl + "/login");
// Login
@@ -118,6 +123,7 @@ void testCreateNewTeam() throws InterruptedException {
@Test
+ @Order(12)
void testEditTicketTeamDiscard() {
//login
@@ -167,6 +173,7 @@ void testEditTicketTeamDiscard() {
@Test
+ @Order(13)
void testEditTicketTeamSave() {
//login
@@ -217,6 +224,7 @@ void testEditTicketTeamSave() {
@Test
+ @Order(11)
void testEditTicketTeamQuinielaSave() {
//login
@@ -280,6 +288,7 @@ void testEditTicketTeamQuinielaSave() {
@Test
+ @Order(10)
void testCreateTicketTeamBonolotoAndFilters() {
//login
@@ -360,6 +369,7 @@ void testCreateTicketTeamBonolotoAndFilters() {
@Test
+ @Order(14)
void testFilter(){
//login
@@ -407,6 +417,7 @@ void testFilter(){
}
@Test
+ @Order(9)
void testLeaveTeam(){
//login
diff --git a/backend/src/test/resources/application-test.properties b/backend/src/test/resources/application-test.properties
index 4082965..3e802df 100644
--- a/backend/src/test/resources/application-test.properties
+++ b/backend/src/test/resources/application-test.properties
@@ -8,5 +8,7 @@ spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.show-sql=true
spring.jpa.defer-datasource-initialization=true
+spring.task.scheduling.enabled=false
+
server.port=8080
server.ssl.enabled=false
\ No newline at end of file
diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml
index 02f02aa..96ed8ea 100644
--- a/docker/docker-compose.yml
+++ b/docker/docker-compose.yml
@@ -1,7 +1,3 @@
-# In project root:
-# docker pull etheko/bookmarks-forums
-# cd docker
-# docker-compose -p bookmarks-forums up --build
services:
lookau-app:
diff --git a/frontend/proxy.ci.conf.json b/frontend/proxy.ci.conf.json
new file mode 100644
index 0000000..f13c683
--- /dev/null
+++ b/frontend/proxy.ci.conf.json
@@ -0,0 +1,11 @@
+{
+ "/api": {
+ "target": "http://localhost:8080",
+ "secure": false,
+ "changeOrigin": true,
+ "logLevel": "debug",
+ "headers": {
+ "Connection": "keep-alive"
+ }
+ }
+}
diff --git a/frontend/src/app/components/individual/individual.component.ts b/frontend/src/app/components/individual/individual.component.ts
index b77aa47..c42c072 100644
--- a/frontend/src/app/components/individual/individual.component.ts
+++ b/frontend/src/app/components/individual/individual.component.ts
@@ -52,7 +52,6 @@ export class IndividualComponent {
}else{
this.getPersonalTickets();
}
- console.log(this.lTickets)
}
getPersonalTickets(){
@@ -98,7 +97,6 @@ export class IndividualComponent {
getTeam(){
this.teamService.getTeam(this.teamId).subscribe(
(response) => {
- console.log(response);
this.team = response;
},
(error) => {
diff --git a/frontend/src/app/components/personal/cardTicketsPersonal.component.ts b/frontend/src/app/components/personal/cardTicketsPersonal.component.ts
index d0a98cd..98c57f3 100644
--- a/frontend/src/app/components/personal/cardTicketsPersonal.component.ts
+++ b/frontend/src/app/components/personal/cardTicketsPersonal.component.ts
@@ -239,7 +239,6 @@ export class CardTicketsPersonalComponent {
getDataTicketType(data: string) {
this.ticketType = data;
- console.log('Recibido del hijo:', data);
}
diff --git a/frontend/src/app/components/personal/newCardTicketsPersonal.component.ts b/frontend/src/app/components/personal/newCardTicketsPersonal.component.ts
index aee74db..46e74a9 100644
--- a/frontend/src/app/components/personal/newCardTicketsPersonal.component.ts
+++ b/frontend/src/app/components/personal/newCardTicketsPersonal.component.ts
@@ -255,7 +255,6 @@ export class NewCardTicketsPersonal {
getDataTicketType(data: string) {
this.ticketType = data;
- console.log('Recibido del hijo:', data);
}
diff --git a/frontend/src/app/components/teams/cardTicketsTeams.component.ts b/frontend/src/app/components/teams/cardTicketsTeams.component.ts
index 12f716d..92d82eb 100644
--- a/frontend/src/app/components/teams/cardTicketsTeams.component.ts
+++ b/frontend/src/app/components/teams/cardTicketsTeams.component.ts
@@ -241,7 +241,6 @@ export class CardTicketsTeamsComponent {
getDataTicketType(data: string) {
this.ticketType = data;
- console.log('Recibido del hijo:', data);
}
@@ -307,10 +306,7 @@ export class CardTicketsTeamsComponent {
});
}
- });
-
- console.log(this.transactions);
-
+ });
}
genereteWinningTransactions(participants: string[], buyer: string, ticketPrice: number, prizeAmount: number, claimer: string) {
diff --git a/frontend/src/app/components/teams/editTeam.component.ts b/frontend/src/app/components/teams/editTeam.component.ts
index 704af5f..f365da9 100644
--- a/frontend/src/app/components/teams/editTeam.component.ts
+++ b/frontend/src/app/components/teams/editTeam.component.ts
@@ -78,8 +78,6 @@ export class EditTeamComponent {
this.teamService.getAccountsTeam(String(this.teamId)).subscribe(
(response) => {
this.accounts = response;
- console.log(this.accounts);
- console.log(response);
},
(error) => {
this.router.navigate(['/error']);
@@ -122,10 +120,8 @@ export class EditTeamComponent {
hasTicketDependence(): boolean{
let nickName = this.authService.getUserNickName();
- console.log(nickName);
for (let ticket of this.tickets) {
- console.log(ticket);
if (ticket.paidByName === nickName || ticket.claimedBy === nickName) {
return true;
diff --git a/frontend/src/app/components/teams/newCardTicketsTeams.component.ts b/frontend/src/app/components/teams/newCardTicketsTeams.component.ts
index 65350f6..6d2db31 100644
--- a/frontend/src/app/components/teams/newCardTicketsTeams.component.ts
+++ b/frontend/src/app/components/teams/newCardTicketsTeams.component.ts
@@ -257,7 +257,6 @@ export class NewCardTicketsTeamsComponent {
getDataTicketType(data: string) {
this.ticketType = data;
- console.log('Recibido del hijo:', data);
}