43600fc8cf
Release package / release (push) Successful in 14m26s
Co-authored-by: TakahashiNg <83152264+TakahashiNguyen@users.noreply.github.com> Reviewed-on: #44
124 lines
3.2 KiB
Java
124 lines
3.2 KiB
Java
package com.drinkool.services;
|
|
|
|
import static io.restassured.RestAssured.*;
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
import com.drinkool.*;
|
|
import com.drinkool.lib.dtos.*;
|
|
|
|
import io.quarkus.test.common.QuarkusTestResource;
|
|
import io.quarkus.test.junit.QuarkusTest;
|
|
import io.quarkus.test.kafka.*;
|
|
import io.restassured.http.ContentType;
|
|
import io.smallrye.reactive.messaging.kafka.companion.ConsumerTask;
|
|
import io.smallrye.reactive.messaging.kafka.companion.KafkaCompanion;
|
|
import java.time.Duration;
|
|
import org.eclipse.microprofile.config.inject.ConfigProperty;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
@QuarkusTest
|
|
@QuarkusTestResource(KafkaCompanionResource.class)
|
|
public class ManagerServiceTest {
|
|
|
|
@InjectKafkaCompanion
|
|
KafkaCompanion companion;
|
|
|
|
@ConfigProperty(name = "mp.messaging.outgoing.manager-out.topic")
|
|
String topicName;
|
|
|
|
@Test
|
|
void testSignupSuccessAndKafkaMessageSent() {
|
|
ManagerSignup input = new ManagerSignup();
|
|
input.name = "Ho Van Quan";
|
|
input.phone = Utils.generateRandomPhone();
|
|
input.password = "strong_password";
|
|
input.eateryName = "Quan Com Ngon";
|
|
|
|
ConsumerTask<String, String> consumer = companion
|
|
.consumeStrings()
|
|
.fromTopics(topicName, 1);
|
|
|
|
// 2. Gọi API POST /signup
|
|
var response = given()
|
|
.contentType("application/json")
|
|
.body(input)
|
|
.when()
|
|
.post(Role.Manager + Url.Signup)
|
|
.then()
|
|
.statusCode(201)
|
|
.header(InternalValue.userId, org.hamcrest.Matchers.notNullValue())
|
|
.header(InternalValue.role, Role.Manager)
|
|
.extract();
|
|
|
|
String userId = response.header(InternalValue.userId);
|
|
|
|
var records = consumer.awaitCompletion(Duration.ofSeconds(15)).getRecords();
|
|
|
|
assertEquals(1, records.size());
|
|
String kafkaPayload = records.get(0).value();
|
|
|
|
assertTrue(kafkaPayload.contains(userId));
|
|
assertTrue(kafkaPayload.contains("Quan Com Ngon"));
|
|
}
|
|
|
|
@Test
|
|
void testLoginSuccess() {
|
|
// BƯỚC 1: Tạo user trước bằng signup
|
|
String phone = Utils.generateRandomPhone();
|
|
ManagerSignup signupData = new ManagerSignup();
|
|
signupData.name = "Login User";
|
|
signupData.phone = phone;
|
|
signupData.password = "secure_pass";
|
|
signupData.eateryName = "Test Eatery";
|
|
|
|
given()
|
|
.contentType(ContentType.JSON)
|
|
.body(signupData)
|
|
.post(Role.Manager + Url.Signup)
|
|
.then()
|
|
.statusCode(201);
|
|
|
|
// BƯỚC 2: Thử đăng nhập
|
|
Login loginInput = new Login();
|
|
loginInput.phone = phone;
|
|
loginInput.password = "secure_pass";
|
|
|
|
given()
|
|
.contentType(ContentType.JSON)
|
|
.body(loginInput)
|
|
.when()
|
|
.post(Role.Manager + Url.Login)
|
|
.then()
|
|
.statusCode(202);
|
|
}
|
|
|
|
@Test
|
|
void testLoginFailWrongPassword() {
|
|
String phone = Utils.generateRandomPhone();
|
|
ManagerSignup signupData = new ManagerSignup();
|
|
signupData.name = "Wrong Pass User";
|
|
signupData.phone = phone;
|
|
signupData.password = "correct_password";
|
|
signupData.eateryName = "Test Eatery";
|
|
|
|
given()
|
|
.contentType(ContentType.JSON)
|
|
.body(signupData)
|
|
.post(Role.Manager + Url.Signup)
|
|
.then()
|
|
.statusCode(201);
|
|
|
|
Login loginInput = new Login();
|
|
loginInput.phone = phone;
|
|
loginInput.password = "wrong_password";
|
|
|
|
given()
|
|
.contentType(ContentType.JSON)
|
|
.body(loginInput)
|
|
.when()
|
|
.post(Role.Manager + Url.Login)
|
|
.then()
|
|
.statusCode(400); // BadRequestException
|
|
}
|
|
}
|