diff --git a/restservice/src/main/java/com/plannaplan/controllers/TokenController.java b/restservice/src/main/java/com/plannaplan/controllers/TokenController.java new file mode 100644 index 0000000..d23b931 --- /dev/null +++ b/restservice/src/main/java/com/plannaplan/controllers/TokenController.java @@ -0,0 +1,21 @@ +package com.plannaplan.controllers; + +import com.plannaplan.security.CasValidator; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@CrossOrigin +public class TokenController { + + public static String SERVICE_URL = "http://localhost:3000"; + + // @GetMapping("/token") + // public ResponseEntity getToken(@RequestParam("ticket") final String ticket) { + // CasValidator validator = new CasValidator(SERVICE_URL,ticket); + // } +} diff --git a/restservice/src/main/java/com/plannaplan/security/CasValidationExcepiton.java b/restservice/src/main/java/com/plannaplan/security/CasValidationExcepiton.java new file mode 100644 index 0000000..88f3f5b --- /dev/null +++ b/restservice/src/main/java/com/plannaplan/security/CasValidationExcepiton.java @@ -0,0 +1,13 @@ +package com.plannaplan.security; + +public class CasValidationExcepiton extends RuntimeException { + /** + * + */ + private static final long serialVersionUID = 1L; + + public CasValidationExcepiton(String s) { + super(s); + } + +} diff --git a/restservice/src/main/java/com/plannaplan/security/CasValidator.java b/restservice/src/main/java/com/plannaplan/security/CasValidator.java index 4af59b2..9813758 100644 --- a/restservice/src/main/java/com/plannaplan/security/CasValidator.java +++ b/restservice/src/main/java/com/plannaplan/security/CasValidator.java @@ -20,7 +20,7 @@ public class CasValidator { this.ticket = ticket; } - public String validate() throws Exception { + public String validate() throws Exception, CasValidationExcepiton{ HttpGet request = new HttpGet(CasValidator.CAS_URL + "/validate?service=" + URLEncoder.encode(this.service, "UTF-8") + "&ticket=" + URLEncoder.encode(this.ticket, "UTF-8")); try (CloseableHttpResponse response = httpClient.execute(request)) { @@ -31,8 +31,11 @@ public class CasValidator { if (entity != null) { // return it as a String result = EntityUtils.toString(entity); - + if(result.replace("\n", "").trim().equals("no")){ + throw new CasValidationExcepiton("Validation failed"); + } } + String res = result.substring(result.indexOf('\n') + 1); return res; diff --git a/restservice/src/test/java/com/plannaplan/security/CasValidatorTest.java b/restservice/src/test/java/com/plannaplan/security/CasValidatorTest.java index 234a759..f825874 100644 --- a/restservice/src/test/java/com/plannaplan/security/CasValidatorTest.java +++ b/restservice/src/test/java/com/plannaplan/security/CasValidatorTest.java @@ -1,5 +1,7 @@ package com.plannaplan.security; +import static org.junit.jupiter.api.Assertions.assertTrue; + import org.junit.Ignore; import org.junit.Test; @@ -14,8 +16,25 @@ public class CasValidatorTest { try { System.out.println(validator.validate()); } catch (Exception e) { - // TODO Auto-generated catch block e.printStackTrace(); + assertTrue(false); + } + } + + @Test + public void shouldNotValidateTicket() { + //you need to privide fresh ticket to make this test pass that's why it is marked as ignored + CasValidator validator = new CasValidator("http://localhost:3000", + "notticket"); + try { + assertTrue(validator.validate().trim().equals("")); + } + catch (CasValidationExcepiton e){ + assertTrue(true); + } + catch (Exception e) { + e.printStackTrace(); + assertTrue(false); } } }