diff --git a/.gitignore b/.gitignore index cb561bb..fb09f47 100644 --- a/.gitignore +++ b/.gitignore @@ -25,4 +25,5 @@ hs_err_pid* replay_pid* -target/ \ No newline at end of file +target/ +logs/ \ No newline at end of file diff --git a/README.md b/README.md index b030a11..42e442f 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,15 @@ +# Funcionamiento + +``` +compilar con ./mvnw package -Dquarkus.package.type=uber-jar + +ejecutar con java + + + + +``` + # api-menu-playa Project This project uses Quarkus, the Supersonic Subatomic Java Framework. @@ -60,3 +72,8 @@ If you want to learn more about building native executables, please consult http Easily start your Reactive RESTful Web Services [Related guide section...](https://quarkus.io/guides/getting-started-reactive#reactive-jax-rs-resources) + + + + +./mvnw package -Pnative -Dquarkus.native.container-build=true -Dquarkus.profile=prod \ No newline at end of file diff --git a/pom.xml b/pom.xml index d56d54f..d739550 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 api.menu.playa api-menu-playa - 1.1.1 + 1.1.2 3.10.1 11 @@ -62,10 +62,6 @@ io.quarkus quarkus-smallrye-jwt - - io.quarkus - quarkus-smallrye-jwt-build - diff --git a/src/main/java/api/menu/playa/annotation/Roles.java b/src/main/java/api/menu/playa/annotation/Roles.java new file mode 100644 index 0000000..451c002 --- /dev/null +++ b/src/main/java/api/menu/playa/annotation/Roles.java @@ -0,0 +1,13 @@ +package api.menu.playa.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface Roles { + public String[] rols(); +} diff --git a/src/main/java/api/menu/playa/controller/LoginController.java b/src/main/java/api/menu/playa/controller/LoginController.java index 0980e4d..de80bbc 100644 --- a/src/main/java/api/menu/playa/controller/LoginController.java +++ b/src/main/java/api/menu/playa/controller/LoginController.java @@ -1,17 +1,22 @@ package api.menu.playa.controller; -import javax.annotation.security.PermitAll; +import java.util.Collections; + import javax.enterprise.context.RequestScoped; import javax.inject.Inject; import javax.ws.rs.Consumes; +import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import org.eclipse.microprofile.jwt.JsonWebToken; import org.jboss.logging.Logger; +import org.jboss.resteasy.reactive.RestHeader; +import api.menu.playa.enums.RolesEnum; import api.menu.playa.exceptions.NegocioException; import api.menu.playa.helper.LoginHelper; import api.menu.playa.vo.RegistroVO; @@ -30,12 +35,14 @@ public class LoginController { @Inject Logger logger; + @Inject + JsonWebToken jwt; + @Inject LoginHelper loginHelper; @POST @Path("login") - @PermitAll public Response login(UsuarioVO request) { try { @@ -51,7 +58,6 @@ public class LoginController { @POST @Path("register") - @PermitAll public Response register(RegistroVO request) { try { @@ -68,6 +74,42 @@ public class LoginController { } + + @GET + @Path("token") + public Response token() { + + try { + + + String token = loginHelper.tokenGenerator("darroyo", Collections.singleton(RolesEnum.USER), 3600L, "www.vodorod.cl"); + + return Response.ok(new ResponseGlobal<>(0, SUCCESS, token)).build(); + } catch (NegocioException e) { + return Response.ok(new ResponseGlobal<>(e.getCode(), e.getMessage())).build(); + } catch (Exception e) { + return Response.ok(new ResponseGlobal<>(1, ERROR)).build(); + } + + } + + /* @GET + @Path("valida") + public Response validaToken(@RestHeader("Authorization") String token) { + + try { + + + String user = loginHelper.validaToken(token); + + return Response.ok(new ResponseGlobal<>(0, SUCCESS, user)).build(); + + } catch (Exception e) { + return Response.ok(new ResponseGlobal<>(1, ERROR)).build(); + } + + } */ + private void validacionPassword(RegistroVO request) throws NegocioException { if (request.getUser() == null || request.getUser().isEmpty()) { diff --git a/src/main/java/api/menu/playa/controller/OrdenController.java b/src/main/java/api/menu/playa/controller/OrdenController.java index 8a4087a..67a0efa 100644 --- a/src/main/java/api/menu/playa/controller/OrdenController.java +++ b/src/main/java/api/menu/playa/controller/OrdenController.java @@ -3,6 +3,8 @@ package api.menu.playa.controller; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import org.eclipse.microprofile.jwt.JsonWebToken; + import api.menu.playa.exceptions.NegocioException; import api.menu.playa.helper.OrdenHelper; import api.menu.playa.vo.CambioCantidadVO; @@ -32,6 +34,8 @@ public class OrdenController { private static final String SUCCESS = "SUCCESS"; //private static final String ERROR = "ERROR"; + + @Inject OrdenHelper ordenHelper; @@ -39,7 +43,7 @@ public class OrdenController { * Creacion de orden */ - @RolesAllowed({"USER", "ADMIN"}) + //@RolesAllowed({"USER", "ADMIN"}) @GET @Path("/create") public Response create() { diff --git a/src/main/java/api/menu/playa/dao/UsuarioDAO.java b/src/main/java/api/menu/playa/dao/UsuarioDAO.java index ebb83f0..7e0d396 100644 --- a/src/main/java/api/menu/playa/dao/UsuarioDAO.java +++ b/src/main/java/api/menu/playa/dao/UsuarioDAO.java @@ -10,6 +10,6 @@ import api.menu.playa.model.Usuario; public interface UsuarioDAO extends JpaRepository { - @Query("select u from Usuario u where u.usuario = :usuario") - Usuario encontrarUsuario(@Param("usuario") String usuario); + @Query("select u from Usuario u where u.user = :usuario") + Optional encontrarUsuario(@Param("usuario") String usuario); } diff --git a/src/main/java/api/menu/playa/helper/LoginHelper.java b/src/main/java/api/menu/playa/helper/LoginHelper.java index c1d411f..990d53b 100644 --- a/src/main/java/api/menu/playa/helper/LoginHelper.java +++ b/src/main/java/api/menu/playa/helper/LoginHelper.java @@ -1,15 +1,27 @@ package api.menu.playa.helper; +import java.io.InputStream; import java.security.Key; +import java.security.KeyFactory; +import java.security.PrivateKey; +import java.security.spec.PKCS8EncodedKeySpec; import java.util.Base64; import java.util.Collections; +import java.util.HashSet; +import java.util.Optional; +import java.util.Set; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import javax.enterprise.context.ApplicationScoped; import javax.inject.Inject; +import org.eclipse.microprofile.jwt.Claims; +import org.eclipse.microprofile.jwt.JsonWebToken; import org.jboss.logging.Logger; +import org.jose4j.jwk.JsonWebKey; +import org.jose4j.jws.JsonWebSignature; +import org.jose4j.keys.resolvers.JwksVerificationKeyResolver; import api.menu.playa.dao.UsuarioDAO; import api.menu.playa.enums.RolesEnum; @@ -18,6 +30,9 @@ import api.menu.playa.model.Usuario; import api.menu.playa.util.TokenUtils; import api.menu.playa.vo.RegistroVO; import api.menu.playa.vo.UsuarioVO; +import io.smallrye.jwt.auth.principal.DefaultJWTParser; +import io.smallrye.jwt.build.Jwt; +import io.smallrye.jwt.build.JwtSignature; @ApplicationScoped public class LoginHelper { @@ -28,18 +43,21 @@ public class LoginHelper { @Inject UsuarioDAO usuarioDAO; + @Inject + TokenService tokenService; + public void registrarUsuario(RegistroVO request) throws Exception { - Usuario user = usuarioDAO.encontrarUsuario(request.getUser()); + Optional user = usuarioDAO.encontrarUsuario(request.getUser()); - if (user != null) { + if (user.isPresent()) { throw new NegocioException("El usuario ya existe", 2); } Usuario usuario = new Usuario(); usuario.setActivo(false); - usuario.setUsuario(request.getUser()); + usuario.setUser(request.getUser()); usuario.setPass(encript(request.getPass())); usuario.setRol(RolesEnum.USER); usuario.setNombre(request.getUser()); @@ -49,12 +67,12 @@ public class LoginHelper { public String validarUsuario(UsuarioVO request) throws Exception { - Usuario user = usuarioDAO.encontrarUsuario(request.getUser()); + Optional user = usuarioDAO.encontrarUsuario(request.getUser()); logger.info("Usuario"); logger.info(user); - if (user == null) { + if (user.isEmpty()) { throw new NegocioException("Usuario no existe en el sistema", 2); } @@ -63,19 +81,22 @@ public class LoginHelper { logger.info("Password encriptado"); logger.info(password); - if (!user.getActivo()) { + if (Boolean.FALSE.equals(user.get().getActivo())) { throw new NegocioException("Usuario no se encuentra activo", 2); } - if (!password.equals(user.getPass())) { + if (!password.equals(user.get().getPass())) { throw new NegocioException("Usuario o contraseƱa es incorrecto", 2); } - String token = TokenUtils.generateToken(user.getUsuario(), Collections.singleton(user.getRol()), 36000L, "https://vodorod.cl"); + return tokenService.generate(user.get().getNombre(), user.get().getUser(), user.get().getFecha(), user.get().getRol()); + //return TokenUtils.generateToken(user.get().getUser(), Collections.singleton(user.get().getRol()), 36000L, "https://vodorod.cl"); + + - //String token = tokenGenerator(user); - return token; + + //return tokenGenerator(user.get().getUser(), Collections.singleton(user.get().getRol()), 36000L, "https://vodorod.cl"); } private static String ENCRYPT_KEY = "clave-compartida-no-reveloar-nun"; @@ -108,4 +129,21 @@ public class LoginHelper { long currentTimeMS = System.currentTimeMillis(); return (int) (currentTimeMS / 1000); } + + public String tokenGenerator(String username, Set roles, Long duration, String issuer) throws Exception { + + Set groups = new HashSet<>(); + for (RolesEnum role : roles) groups.add(role.toString()); + + return Jwt.claims() + .issuer(issuer) + .issuedAt(currentTimeInSecs()) + .expiresAt(currentTimeInSecs() + duration) + .groups(groups) + .claim("nombre", username).jws() + .signWithSecret("issuer11111111111111111111111111"); + } + + + } diff --git a/src/main/java/api/menu/playa/helper/TokenService.java b/src/main/java/api/menu/playa/helper/TokenService.java new file mode 100644 index 0000000..8f9ca6f --- /dev/null +++ b/src/main/java/api/menu/playa/helper/TokenService.java @@ -0,0 +1,43 @@ +package api.menu.playa.helper; + +import java.time.LocalDateTime; +import java.util.Arrays; + +import javax.enterprise.context.RequestScoped; + +import org.eclipse.microprofile.jwt.Claims; +import org.jose4j.jwt.JwtClaims; + +import api.menu.playa.enums.RolesEnum; +import api.menu.playa.util.TokenUtils; + +@RequestScoped +public class TokenService { + + public String generate(String nombre, String username, LocalDateTime birthdate, RolesEnum rol) { + try { + System.out.println("creating account"); + + JwtClaims jwtClaims = new JwtClaims(); + jwtClaims.setIssuer("https://vodorod.cl"); + jwtClaims.setJwtId("a-123"); + jwtClaims.setSubject(nombre); + jwtClaims.setClaim(Claims.upn.name(), nombre); + jwtClaims.setClaim(Claims.preferred_username.name(), username); + jwtClaims.setClaim(Claims.birthdate.name(), birthdate); + jwtClaims.setClaim(Claims.groups.name(), Arrays.asList(rol)); + jwtClaims.setAudience("using-jwt"); + jwtClaims.setExpirationTimeMinutesInTheFuture(720); + + String token = TokenUtils.generateTokenString(jwtClaims); + + System.out.println(token); + + return token; + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("Oops!"); + } + + } +} diff --git a/src/main/java/api/menu/playa/model/Usuario.java b/src/main/java/api/menu/playa/model/Usuario.java index d12a19e..f503b6d 100644 --- a/src/main/java/api/menu/playa/model/Usuario.java +++ b/src/main/java/api/menu/playa/model/Usuario.java @@ -25,7 +25,7 @@ public class Usuario { private Long id; @Column(name = "usuario", unique = true) - private String usuario; + private String user; @Column(name = "pass") private String pass; @@ -60,14 +60,6 @@ public class Usuario { this.pass = pass; } - public String getUsuario() { - return usuario; - } - - public void setUsuario(String usuario) { - this.usuario = usuario; - } - public RolesEnum getRol() { return rol; } @@ -100,5 +92,13 @@ public class Usuario { this.nombre = nombre; } + public String getUser() { + return user; + } + + public void setUser(String user) { + this.user = user; + } + } diff --git a/src/main/java/api/menu/playa/util/TokenUtils.java b/src/main/java/api/menu/playa/util/TokenUtils.java index 14d6e19..f2feadd 100644 --- a/src/main/java/api/menu/playa/util/TokenUtils.java +++ b/src/main/java/api/menu/playa/util/TokenUtils.java @@ -5,45 +5,78 @@ import java.security.KeyFactory; import java.security.PrivateKey; import java.security.spec.PKCS8EncodedKeySpec; import java.util.Base64; -import java.util.HashSet; -import java.util.Set; +import java.util.Map; import javax.enterprise.context.ApplicationScoped; -import api.menu.playa.enums.RolesEnum; -import io.smallrye.jwt.build.Jwt; -import io.smallrye.jwt.build.JwtClaimsBuilder; +import org.eclipse.microprofile.config.ConfigProvider; +import org.eclipse.microprofile.config.inject.ConfigProperty; +import org.eclipse.microprofile.jwt.Claims; +import org.jose4j.jws.AlgorithmIdentifiers; +import org.jose4j.jws.JsonWebSignature; +import org.jose4j.jwt.JwtClaims; +import org.jose4j.jwt.NumericDate; @ApplicationScoped public class TokenUtils { - public static String generateToken(String username, Set roles, Long duration, String issuer) throws Exception { - String privateKeyLocation = "/privatekey.pem"; - PrivateKey privateKey = readPrivateKey(privateKeyLocation); - - JwtClaimsBuilder claimsBuilder = Jwt.claims(); + //@ConfigProperty(name = "config.private.key") + private static String privateKey = ConfigProvider.getConfig().getValue("config.private.key",String.class);; + + private TokenUtils() { + } + + public static String generateTokenString(JwtClaims claims) throws Exception { + // Use the private key associated with the public key for a valid signature + PrivateKey pk = readPrivateKey(privateKey); + + return generateTokenString(pk, privateKey, claims); + } + + private static String generateTokenString(PrivateKey privateKey, String kid, JwtClaims claims) throws Exception { + long currentTimeInSecs = currentTimeInSecs(); - - Set groups = new HashSet<>(); - for (RolesEnum role : roles) groups.add(role.toString()); - claimsBuilder.issuer(issuer); - claimsBuilder.subject(username); - claimsBuilder.issuedAt(currentTimeInSecs); - claimsBuilder.expiresAt(currentTimeInSecs + duration); - claimsBuilder.groups(groups); + claims.setIssuedAt(NumericDate.fromSeconds(currentTimeInSecs)); + claims.setClaim(Claims.auth_time.name(), NumericDate.fromSeconds(currentTimeInSecs)); + + for (Map.Entry entry : claims.getClaimsMap().entrySet()) { + System.out.printf("\tAdded claim: %s, value: %s\n", entry.getKey(), entry.getValue()); + } + + JsonWebSignature jws = new JsonWebSignature(); + jws.setPayload(claims.toJson()); + jws.setKey(privateKey); + jws.setKeyIdHeaderValue(kid); + jws.setHeader("typ", "JWT"); + jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.RSA_USING_SHA256); - return claimsBuilder.jws().keyId(privateKeyLocation).sign(privateKey); + + + return jws.getCompactSerialization(); } + /** + * Read a PEM encoded private key from the classpath + * + * @param pemResName - key file resource name + * @return PrivateKey + * @throws Exception on decode failure + */ public static PrivateKey readPrivateKey(final String pemResName) throws Exception { - try (InputStream contentIS = TokenUtils.class.getResourceAsStream(pemResName)) { - byte[] tmp = new byte[4096]; - int length = contentIS.read(tmp); - return decodePrivateKey(new String(tmp, 0, length, "UTF-8")); - } + InputStream contentIS = TokenUtils.class.getResourceAsStream(pemResName); + byte[] tmp = new byte[4096]; + int length = contentIS.read(tmp); + return decodePrivateKey(new String(tmp, 0, length, "UTF-8")); } + /** + * Decode a PEM encoded private key string to an RSA PrivateKey + * + * @param pemEncoded - PEM string for private key + * @return PrivateKey + * @throws Exception on decode failure + */ public static PrivateKey decodePrivateKey(final String pemEncoded) throws Exception { byte[] encodedBytes = toEncodedBytes(pemEncoded); @@ -52,12 +85,12 @@ public class TokenUtils { return kf.generatePrivate(keySpec); } - public static byte[] toEncodedBytes(final String pemEncoded) { + private static byte[] toEncodedBytes(final String pemEncoded) { final String normalizedPem = removeBeginEnd(pemEncoded); return Base64.getDecoder().decode(normalizedPem); } - public static String removeBeginEnd(String pem) { + private static String removeBeginEnd(String pem) { pem = pem.replaceAll("-----BEGIN (.*)-----", ""); pem = pem.replaceAll("-----END (.*)----", ""); pem = pem.replaceAll("\r\n", ""); @@ -65,6 +98,9 @@ public class TokenUtils { return pem.trim(); } + /** + * @return the current time in seconds since epoch + */ public static int currentTimeInSecs() { long currentTimeMS = System.currentTimeMillis(); return (int) (currentTimeMS / 1000); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 8a433e8..2a2fae1 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -9,14 +9,18 @@ quarkus.http.host=0.0.0.0 quarkus.datasource.username=postgres quarkus.datasource.password=13467982 -quarkus.datasource.jdbc.url=jdbc:postgresql://192.168.1.17:5432/postgres?currentSchema=playa +quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/postgres?currentSchema=playa +#quarkus.datasource.jdbc.url=jdbc:postgresql://192.168.1.17:5432/postgres?currentSchema=playa quarkus.datasource.users.jdbc.max-size=11 quarkus.datasource.jdbc.idle-removal-interval= 10 quarkus.datasource.inventory.jdbc.max-size=12 quarkus.hibernate-orm.database.generation=update -mp.jwt.verify.publickey.location=publickey.pem + +config.private.key=/privateKey.pem +mp.jwt.verify.publickey.location=publicKey.pem mp.jwt.verify.issuer=https://vodorod.cl + quarkus.smallrye-jwt.enabled=true quarkus.log.file.enable=true @@ -32,4 +36,8 @@ quarkus.log.file.rotation.max-backup-index=30 %prod.quarkus.datasource.username=playa_tienda %prod.quarkus.datasource.password=ED8eqKY5ZyQAH9px -%prod.quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/postgres?currentSchema=playa \ No newline at end of file +%prod.quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/postgres?currentSchema=playa + +# %prod.config.private.key=file://${CONFIG_PUBLIC_KEY:/api/tienda-playa/privateKey.pem} +# %prod.mp.jwt.verify.publickey.location=file://${CONFIG_PRIVATE_KEY:publicKey.pem} +# %prod.mp.jwt.verify.issuer=https://vodorod.cl \ No newline at end of file diff --git a/src/main/resources/privatekey.pem b/src/main/resources/privatekey.pem index 266ec8a..1eac946 100644 --- a/src/main/resources/privatekey.pem +++ b/src/main/resources/privatekey.pem @@ -1,28 +1,28 @@ -----BEGIN PRIVATE KEY----- -MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8NiwFmUjkYToz -awPKjJzGzucjskI7tZbo274EGescwsQL+W8AyE+0nyF8IPHeSJhcU+VXBS3qvxh9 -QXJb2mG98LVnkoZKxQgDmpVzkN/2MzCIRDkgyBZ8sOcZ4Oj8gkuI5s/qxwwD/d5W -0RsR4sgGCX9SZwiTdWapZDdM1xpGPAegmh9+atvNVZHj/6+h+jSHTDrgqGRiYQg7 -+YN7RfQwBaY6loMcrrIN2Ymzo7e2j4i9K6MRZhuCanziW30TTDk6has6wKVA+qr4 -Czu/w4xmH59yJZyH+6WFSrzmxsDaoD01OLOSMnjrrfnjfZz2gxGgwlNd/cxymgEN -/ZhfbXYXAgMBAAECggEAUS8YzA1ziLd7sGQvzXXbxlHHF/mzYigRAT6P9xrq9Iv6 -nqOoQvEkmGevvOhFDDnKJsE1gtTEGqb1PEo3tvE7CgBDb3qfnK7ipxNN9fx+7qbj -/1NWRRKpyH1SIjKGrSzSwim1c7MKNsqR1mb6QzvMRfZgyj2RUHHqp5SH2ghK2BIc -35MXkWo3o1FhXiJ3ZjiwNb/qEbe1c9oCX9DnC3UZFKKctCNqFwf1XdEqoFX+Qq2f -Et8LIRWfBXcXjODBJpF4MBHbz5BmwIqkXwtKUfnAzQd+TxkuGpRn291A4f7DLFZy -03+S/rFWIdqQdVsDiqInmQwa+9UFge/KZsaUBRII8QKBgQDsfOXSaOUdVXw4QbrG -3GZ0DE/CtY4dDLqkwYnGtdAi5lGU2kSUD9NWDoe/fcgqIvU2a3tkMF74Sil6KcE5 -r/fAtFXp5/ZZqmNtUlJKpSSBE2RYEb50cDssGHsz9GxSQqKWhl1f7swtTOd5TVBk -DswrREc9uEKY21pA/YG4/+j/vwKBgQDLvZTr2MTFtT9gUkxkxHQUY1TIpFzRzXa8 -EHG4zTXzZQloPgZC0Bd1oKBq+XVhJHhtgBSe5/naB49AykuDZFILyR4yawyG5UO1 -242yYXbtxqAwjzxEKLfJKM8qe5kUMn8H2AMRgo9f1Mc5U6qJxKAx2VrM1sAkmD4S -ZSWy6XufqQKBgA05mtyecxml2zGGM3zFfJFG0vsPjif/uzxVem/7YO1itfM+FZG2 -JNpuK5dA4H3CwLXPYvIiZl06QIGNbjncpl1HeHqBN1yiU7ccYG++NoFlZTorm9wF -HroDkHhCVgBvq4oBb51azF5IK7Wz5igCT9anldhUwpyrv6tcwfFnlk8fAoGBAMRS -r2DAJYRZzXMUepaTE0PeH4Gjl+l28hXwRpUL8RPTZUg0lDXnbOOk30+Vh70OtpjV -VYl2ATVOGYUWKcO3dLP0nYt5yb1myGNB5/1em4ot3ohMTYdkMQy+rTnDldN3gR7e -0L4br+ppD3w3GdrdRHwkdLFzsfzRUubI3pXTFJPZAoGADkaG7jsoqTIc3ZYtZWzn -vX1T32VQNwgSyAlutRhPKZO9KJ+zlODHyIW5akQBQevC66RrhY6A79NkdQYuicrn -kU9uHPv8+UT8sqsteMPIXryeytRs+QVpBVvcoomyPmbzWItn/RTxnRaXoPr7IIoS -ySryjnf3b8RX4xTt8vSj7No= +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDXw6ZTo4zdwnzx +zcVaL7Jsfjlw2JOe2vyQecNfeMG4/Wp32sjrQKtC/jclmhtDN8qY7J6Js0LhHsnQ +se6aIKx2mSnurOSUTVsZ/szMK5Vfzncl3UbFVjrh6b5STRByJqsU8y2TT0kVguPS +Bs0vj88DeZl8cqdYy1feHmR/BKIKKT3Co8GEYXWLdfYCSHDn0CorziYO3CMBPXrU +cXlOxJf/5Sn75MWw63Mu1vfO0A0P7Zg8UDGOIEgPybXSzGoQZoSsydckFp5AybAN +HBnA/b3AVNoVYXVuunYJX5+qX5TlxbTN6EXPNiUqdn1LzgA0c38DKTYTmG951nJQ +up4RQ/jdAgMBAAECggEAODBYYVGnPp0GgsYOjgT71ysr9EpCb00iFtHO4k8FTBKa +pmnQhwtJTmH7pIw0a1XdKeP9CWkoko29Ct87fuHhZ+VNOT3HLSPUBLoJRWZYOSIA +f1jXtE5XeTuw96fgD4ooZYVKqiEsrDBw+eIRj0BJLeN96B3HnOUfldWeYEGpnTFT +gCUct0BcoP39Gh4OTXbmFkG+Tyq2FyAGGcTwndM70Y0PT7wigfEZluVhTT0wCEsb +4r1jrVIF/B6AKDTRfK2lpJfN1IWrfLZkOd5CIG/IgjMI1xcB1Ibgw170ip6XSHgr +hQJrYvvjH2tLhbOHI0SrpiyYPGeYnaPhOXZGBMUktQKBgQD98ddGLYJA9TO1X2iA +1vNVX5TSp11kGm2hZ4l34Opeo8vb9loeigGWYVClzugJn2Sa8+hT3s9xwraP2Yg6 +IfmOqz1uW+T5GNZLbDIu0Omrx2lRGE1W2M5pQ0jthHspA3UUo8wp2+FCOsk2c6hE +QIKy1WmpGYT8hI0zHKGPNxAWSwKBgQDZgrN6uAnw/jKPto1QJWyYXJGTWXCoOXk8 +1OI1vJK5zjQU0NsfayNZMgnGV9PGVqxqf3sDqx7O+qTldt/QVK03AtybPHL71WjA +cBjxH0x/+v8y+niPB8oKjNLxiwxd+nkBSO9jnPG08UpicZ+neznRQD09+TGJxOeV ++MBnDMtUdwKBgCk3cHZeeo6qfasJgj+vI62OpuwN6BWQSIzy7hf79G5J7ZOVB4l/ +YsSSpPFUhMrTCRQxVFsQheDz9oegigDNdODYIE9iMObRRi7Vr8tzcwnDgu97n0ni +RJZHKnYKk6bTfdRMxZ1hp80FF5Vz7jKtucjm5JBiqPgHV5edJQfGqyDDAoGAenXt +2u/3GOnlSah8E12esIGdrJo0pWIGckthOOP8sAP6qqWUWTIW6scTXcpg/1AZLrSr +a7tSUzIm2NJ+3GpwQ4Km9feovUS//2idglQe3AdS2z7N1amLBTmYIkopIlg8/I41 +yZ25MCiRuq9CNidYvAkw8c11KJ3lzTgKC3rWl60CgYEAwjaiYuPlv9cUBOjpZzQ6 +JlmV5PIDYeTMu3p3j3sFBPXTt/CT59Z0VvF1txfH9qUTl85zMzZlsmkCbInnPtFE +pHPL/kD0L4t2XqxiriLNGh0DqTMJcx4gTqUT6jPit8BNDqxLFhj9qtWwQXBGA0My +gs4AsuhRpozo+xSAOVuO+Mg= -----END PRIVATE KEY----- diff --git a/src/main/resources/publickey.pem b/src/main/resources/publickey.pem index b2703c0..cdefd41 100644 --- a/src/main/resources/publickey.pem +++ b/src/main/resources/publickey.pem @@ -1,9 +1,9 @@ -----BEGIN PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvDYsBZlI5GE6M2sDyoyc -xs7nI7JCO7WW6Nu+BBnrHMLEC/lvAMhPtJ8hfCDx3kiYXFPlVwUt6r8YfUFyW9ph -vfC1Z5KGSsUIA5qVc5Df9jMwiEQ5IMgWfLDnGeDo/IJLiObP6scMA/3eVtEbEeLI -Bgl/UmcIk3VmqWQ3TNcaRjwHoJoffmrbzVWR4/+vofo0h0w64KhkYmEIO/mDe0X0 -MAWmOpaDHK6yDdmJs6O3to+IvSujEWYbgmp84lt9E0w5OoWrOsClQPqq+As7v8OM -Zh+fciWch/ulhUq85sbA2qA9NTizkjJ46635432c9oMRoMJTXf3McpoBDf2YX212 -FwIDAQAB +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA18OmU6OM3cJ88c3FWi+y +bH45cNiTntr8kHnDX3jBuP1qd9rI60CrQv43JZobQzfKmOyeibNC4R7J0LHumiCs +dpkp7qzklE1bGf7MzCuVX853Jd1GxVY64em+Uk0QciarFPMtk09JFYLj0gbNL4/P +A3mZfHKnWMtX3h5kfwSiCik9wqPBhGF1i3X2Akhw59AqK84mDtwjAT161HF5TsSX +/+Up++TFsOtzLtb3ztAND+2YPFAxjiBID8m10sxqEGaErMnXJBaeQMmwDRwZwP29 +wFTaFWF1brp2CV+fql+U5cW0zehFzzYlKnZ9S84ANHN/Ayk2E5hvedZyULqeEUP4 +3QIDAQAB -----END PUBLIC KEY----- diff --git a/src/test/java/api/menu/playa/GreetingResourceIT.java b/src/test/java/api/menu/playa/GreetingResourceIT.java deleted file mode 100644 index 2a9b5e3..0000000 --- a/src/test/java/api/menu/playa/GreetingResourceIT.java +++ /dev/null @@ -1,8 +0,0 @@ -package api.menu.playa; - -import io.quarkus.test.junit.QuarkusIntegrationTest; - -@QuarkusIntegrationTest -public class GreetingResourceIT extends GreetingResourceTest { - // Execute the same tests but in packaged mode. -} diff --git a/src/test/java/api/menu/playa/GreetingResourceTest.java b/src/test/java/api/menu/playa/GreetingResourceTest.java deleted file mode 100644 index 592fcae..0000000 --- a/src/test/java/api/menu/playa/GreetingResourceTest.java +++ /dev/null @@ -1,21 +0,0 @@ -package api.menu.playa; - -import io.quarkus.test.junit.QuarkusTest; -import org.junit.jupiter.api.Test; - -import static io.restassured.RestAssured.given; -import static org.hamcrest.CoreMatchers.is; - -@QuarkusTest -public class GreetingResourceTest { - - @Test - public void testHelloEndpoint() { - given() - .when().get("/hello") - .then() - .statusCode(200) - .body(is("Hello from RESTEasy Reactive")); - } - -} \ No newline at end of file