diff --git a/rest/taskana-rest-spring-example/src/test/java/pro/taskana/rest/AccessIdValidationControllerTest.java b/rest/taskana-rest-spring-example/src/test/java/pro/taskana/rest/AccessIdValidationControllerTest.java new file mode 100644 index 000000000..82e338e12 --- /dev/null +++ b/rest/taskana-rest-spring-example/src/test/java/pro/taskana/rest/AccessIdValidationControllerTest.java @@ -0,0 +1,78 @@ +package pro.taskana.rest; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; +import org.springframework.boot.web.server.LocalServerPort; +import org.springframework.context.annotation.Import; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.hateoas.hal.Jackson2HalModule; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; + +import pro.taskana.rest.resource.AccessIdValidationResource; + +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, properties = {"devMode=true"}) +@Import(RestConfiguration.class) +public class AccessIdValidationControllerTest { + + @LocalServerPort + int port; + + @Test + public void testGetMatches() { + RestTemplate template = getRestTemplate(); + HttpHeaders headers = new HttpHeaders(); + headers.add("Authorization", "Basic dGVhbWxlYWRfMTp0ZWFtbGVhZF8x"); + HttpEntity request = new HttpEntity(headers); + ResponseEntity> response = template.exchange( + "http://127.0.0.1:" + port + "/v1/validate-access-id?search=ali", HttpMethod.GET, request, + new ParameterizedTypeReference>() { + }); + List body = response.getBody(); + assertNotNull(body); + List expectedIds = new ArrayList<>(Arrays.asList("user008", "user009", "user248")); + for (AccessIdValidationResource accessId : body) { + assertTrue(expectedIds.contains(accessId.getAccessId())); + } + } + + /** + * Return a REST template which is capable of dealing with responses in HAL format + * + * @return RestTemplate + */ + private RestTemplate getRestTemplate() { + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + mapper.registerModule(new Jackson2HalModule()); + + MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); + converter.setSupportedMediaTypes(MediaType.parseMediaTypes("application/hal+json")); + converter.setObjectMapper(mapper); + + RestTemplate template = new RestTemplate(Collections.> singletonList(converter)); + return template; + } + +} diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/AccessIdValidationController.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/AccessIdValidationController.java new file mode 100644 index 000000000..de90352b8 --- /dev/null +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/AccessIdValidationController.java @@ -0,0 +1,317 @@ +package pro.taskana.rest; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import org.springframework.hateoas.config.EnableHypermediaSupport; +import org.springframework.hateoas.config.EnableHypermediaSupport.HypermediaType; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import pro.taskana.rest.resource.AccessIdValidationResource; + +/** + * Controller for access id validation. + * + * @author bbr + */ +@RestController +@EnableHypermediaSupport(type = HypermediaType.HAL) +@RequestMapping(path = "/v1/validate-access-id", produces = "application/hal+json") +public class AccessIdValidationController { + + @GetMapping + public ResponseEntity> validateAccessIds( + @RequestParam(required = false) String search) { + + return new ResponseEntity<>(findMatchingAccessIdValidationResources(search), HttpStatus.OK); + } + + private List findMatchingAccessIdValidationResources(String searchFor) { + List result = accessIds.stream() + .filter(t -> (t.getName().toLowerCase().contains(searchFor.toLowerCase()) + || t.getAccessId().toLowerCase().contains(searchFor.toLowerCase()))) + .collect(Collectors.toList()); + return result; + } + + private static List accessIds = new ArrayList<>(Arrays.asList( + new AccessIdValidationResource("Sirup, Aaron", "user001"), + new AccessIdValidationResource("Kahn, Ada", "user002"), + new AccessIdValidationResource("Lass, Ada", "user003"), + new AccessIdValidationResource("Tion, Addi", "user004"), + new AccessIdValidationResource("Lette, Adi", "user005"), + new AccessIdValidationResource("Native, Alter", "user006"), + new AccessIdValidationResource("Herum, Albert", "user007"), + new AccessIdValidationResource("Bert, Ali", "user008"), + new AccessIdValidationResource("Mente, Ali", "user009"), + new AccessIdValidationResource("Mater, Alma", "user010"), + new AccessIdValidationResource("Nach, Alma", "user011"), + new AccessIdValidationResource("Gehzauch, Anders", "user012"), + new AccessIdValidationResource("Theke, Andi", "user013"), + new AccessIdValidationResource("Kreuz, Andreas", "user014"), + new AccessIdValidationResource("Kette, Anka", "user015"), + new AccessIdValidationResource("Tiefsee, Anka", "user016"), + new AccessIdValidationResource("Fielmalz, Anke", "user017"), + new AccessIdValidationResource("Fassen, Ann", "user018"), + new AccessIdValidationResource("Probe, Ann", "user019"), + new AccessIdValidationResource("Bolika, Anna", "user020"), + new AccessIdValidationResource("Ecke, Anna", "user021"), + new AccessIdValidationResource("Hosi, Anna", "user022"), + new AccessIdValidationResource("Kronis-Tisch, Anna", "user023"), + new AccessIdValidationResource("Logie, Anna", "user024"), + new AccessIdValidationResource("Luehse, Anna", "user025"), + new AccessIdValidationResource("Nass, Anna", "user026"), + new AccessIdValidationResource("Thalb, Anna", "user027"), + new AccessIdValidationResource("Tomie, Anna", "user028"), + new AccessIdValidationResource("Donnich, Anne", "user029"), + new AccessIdValidationResource("Kaffek, Anne", "user030"), + new AccessIdValidationResource("Thek, Anne", "user031"), + new AccessIdValidationResource("Matoer, Anni", "user032"), + new AccessIdValidationResource("Ragentor, Ansgar", "user033"), + new AccessIdValidationResource("Stoteles, Ari", "user034"), + new AccessIdValidationResource("Thmetik, Ari", "user035"), + new AccessIdValidationResource("Nuehm, Arno", "user036"), + new AccessIdValidationResource("Schocke, Artie", "user037"), + new AccessIdValidationResource("Stoppel, Bart", "user038"), + new AccessIdValidationResource("Beitung, Bea", "user039"), + new AccessIdValidationResource("Ildich, Bea", "user040"), + new AccessIdValidationResource("Vista, Bella", "user041"), + new AccessIdValidationResource("Utzer, Ben", "user042"), + new AccessIdValidationResource("Zien, Ben", "user043"), + new AccessIdValidationResource("Stein, Bernd", "user044"), + new AccessIdValidationResource("Deramen, Bill", "user045"), + new AccessIdValidationResource("Honig, Bine", "user046"), + new AccessIdValidationResource("Densatz, Bo", "user047"), + new AccessIdValidationResource("Densee, Bo", "user048"), + new AccessIdValidationResource("Lerwagen, Bo", "user049"), + new AccessIdValidationResource("Tail, Bob", "user050"), + new AccessIdValidationResource("Ketta, Bruce", "user051"), + new AccessIdValidationResource("Terrie, Bud", "user052"), + new AccessIdValidationResource("Biener-Haken, Cara", "user053"), + new AccessIdValidationResource("Ass, Caro", "user054"), + new AccessIdValidationResource("Kaffee, Caro", "user055"), + new AccessIdValidationResource("Linger, Caro", "user056"), + new AccessIdValidationResource("tenSaft, Caro", "user057"), + new AccessIdValidationResource("Antheme, Chris", "user058"), + new AccessIdValidationResource("Baum, Chris", "user059"), + new AccessIdValidationResource("Tall, Chris", "user060"), + new AccessIdValidationResource("Reiniger, Claas", "user061"), + new AccessIdValidationResource("Grube, Claire", "user062"), + new AccessIdValidationResource("Fall, Clara", "user063"), + new AccessIdValidationResource("Korn, Clara", "user064"), + new AccessIdValidationResource("Lenriff, Cora", "user065"), + new AccessIdValidationResource("Schiert, Cora", "user066"), + new AccessIdValidationResource("Hose, Cord", "user067"), + new AccessIdValidationResource("Onbleu, Cord", "user068"), + new AccessIdValidationResource("Umkleide, Damon", "user069"), + new AccessIdValidationResource("Affier, Dean", "user070"), + new AccessIdValidationResource("Orm, Dean", "user071"), + new AccessIdValidationResource("Platz, Dennis", "user072"), + new AccessIdValidationResource("Milch, Dick", "user073"), + new AccessIdValidationResource("Mow, Dina", "user074"), + new AccessIdValidationResource("Keil, Donna", "user075"), + new AccessIdValidationResource("Littchen, Donna", "user076"), + new AccessIdValidationResource("Wetter, Donna", "user077"), + new AccessIdValidationResource("Was, Ed", "user078"), + new AccessIdValidationResource("Khar, Ede", "user079"), + new AccessIdValidationResource("Nut, Ella", "user080"), + new AccessIdValidationResource("Stisch, Ella", "user081"), + new AccessIdValidationResource("Diel, Emma", "user082"), + new AccessIdValidationResource("Herdamit, Emma", "user083"), + new AccessIdValidationResource("Mitter-Uhe, Emma", "user084"), + new AccessIdValidationResource("Tatt, Erich", "user085"), + new AccessIdValidationResource("Drigend, Ernie", "user086"), + new AccessIdValidationResource("Poly, Esther", "user087"), + new AccessIdValidationResource("Trautz, Eugen", "user088"), + new AccessIdValidationResource("Quiert, Eva", "user089"), + new AccessIdValidationResource("Inurlaub, Fatma", "user090"), + new AccessIdValidationResource("Land, Finn", "user091"), + new AccessIdValidationResource("Sternis, Finn", "user092"), + new AccessIdValidationResource("Furt, Frank", "user093"), + new AccessIdValidationResource("Reich, Frank", "user094"), + new AccessIdValidationResource("Iskaner, Franz", "user095"), + new AccessIdValidationResource("Nerr, Franziska", "user096"), + new AccessIdValidationResource("Zafen, Friedrich", "user097"), + new AccessIdValidationResource("Pomm, Fritz", "user098"), + new AccessIdValidationResource("deWegs, Gera", "user099"), + new AccessIdValidationResource("Staebe, Gitta", "user100"), + new AccessIdValidationResource("Zend, Glenn", "user101"), + new AccessIdValidationResource("Fisch, Grete", "user102"), + new AccessIdValidationResource("Zucker, Gus", "user103"), + new AccessIdValidationResource("Muhn, Hanni", "user104"), + new AccessIdValidationResource("Fermesse, Hanno", "user105"), + new AccessIdValidationResource("Aplast, Hans", "user106"), + new AccessIdValidationResource("Eart, Hans", "user107"), + new AccessIdValidationResource("Back, Hardy", "user108"), + new AccessIdValidationResource("Beau, Harry", "user110"), + new AccessIdValidationResource("Kraut, Heide", "user111"), + new AccessIdValidationResource("Witzka, Heide", "user112"), + new AccessIdValidationResource("Buchen, Hein", "user113"), + new AccessIdValidationResource("Lichkeit, Hein", "user114"), + new AccessIdValidationResource("Suchung, Hein", "user115"), + new AccessIdValidationResource("Ellmann, Heinz", "user116"), + new AccessIdValidationResource("Ketchup, Heinz", "user117"), + new AccessIdValidationResource("Zeim, Hilde", "user118"), + new AccessIdValidationResource("Bilien, Immo", "user119"), + new AccessIdValidationResource("Her, Inge", "user120"), + new AccessIdValidationResource("Wahrsam, Inge", "user121"), + new AccessIdValidationResource("Flamm, Ingo", "user122"), + new AccessIdValidationResource("Enzien, Ingrid", "user123"), + new AccessIdValidationResource("Rohsch, Inken", "user124"), + new AccessIdValidationResource("Ihr, Insa", "user125"), + new AccessIdValidationResource("Nerda, Iska", "user126"), + new AccessIdValidationResource("Eitz, Jens", "user127"), + new AccessIdValidationResource("Nastik, Jim", "user128"), + new AccessIdValidationResource("Gurt, Jo", "user129"), + new AccessIdValidationResource("Kurrth, Jo", "user130"), + new AccessIdValidationResource("Kolade, Joe", "user131"), + new AccessIdValidationResource("Iter, Johann", "user132"), + new AccessIdValidationResource("Tick, Joyce", "user133"), + new AccessIdValidationResource("Case, Justin", "user134"), + new AccessIdValidationResource("Time, Justin", "user135"), + new AccessIdValidationResource("Komp, Jutta", "user136"), + new AccessIdValidationResource("Mauer, Kai", "user137"), + new AccessIdValidationResource("Pirinja, Kai", "user138"), + new AccessIdValidationResource("Serpfalz, Kai", "user139"), + new AccessIdValidationResource("Auer, Karl", "user140"), + new AccessIdValidationResource("Ielauge, Karl", "user141"), + new AccessIdValidationResource("Ifornjen, Karl", "user142"), + new AccessIdValidationResource("Radi, Karl", "user143"), + new AccessIdValidationResource("Verti, Karl", "user144"), + new AccessIdValidationResource("Sery, Karo", "user145"), + new AccessIdValidationResource("Lisator, Katha", "user146"), + new AccessIdValidationResource("Flo, Kati", "user147"), + new AccessIdValidationResource("Schenn, Knut", "user148"), + new AccessIdValidationResource("Achse, Kurt", "user149"), + new AccessIdValidationResource("Zepause, Kurt", "user150"), + new AccessIdValidationResource("Zerr, Kurt", "user151"), + new AccessIdValidationResource("Reden, Lasse", "user152"), + new AccessIdValidationResource("Metten, Lee", "user153"), + new AccessIdValidationResource("Arm, Lene", "user154"), + new AccessIdValidationResource("Thur, Linnea", "user155"), + new AccessIdValidationResource("Bonn, Lisa", "user156"), + new AccessIdValidationResource("Sembourg, Luc", "user157"), + new AccessIdValidationResource("Rung, Lucky", "user158"), + new AccessIdValidationResource("Zafen, Ludwig", "user159"), + new AccessIdValidationResource("Hauden, Lukas", "user160"), + new AccessIdValidationResource("Hose, Lutz", "user161"), + new AccessIdValidationResource("Tablette, Lutz", "user162"), + new AccessIdValidationResource("Fehr, Luzie", "user163"), + new AccessIdValidationResource("Nalyse, Magda", "user164"), + new AccessIdValidationResource("Ehfer, Maik", "user165"), + new AccessIdValidationResource("Sehr, Malte", "user166"), + new AccessIdValidationResource("Thon, Mara", "user167"), + new AccessIdValidationResource("Quark, Marga", "user168"), + new AccessIdValidationResource("Nade, Marie", "user169"), + new AccessIdValidationResource("Niert, Marie", "user170"), + new AccessIdValidationResource("Neese, Mario", "user171"), + new AccessIdValidationResource("Nette, Marion", "user172"), + new AccessIdValidationResource("Nesium, Mark", "user173"), + new AccessIdValidationResource("Thalle, Mark", "user174"), + new AccessIdValidationResource("Diven, Marle", "user175"), + new AccessIdValidationResource("Fitz, Marle", "user176"), + new AccessIdValidationResource("Pfahl, Marta", "user177"), + new AccessIdValidationResource("Zorn, Martin", "user178"), + new AccessIdValidationResource("Krissmes, Mary", "user179"), + new AccessIdValidationResource("Jess, Matt", "user180"), + new AccessIdValidationResource("Strammer, Max", "user181"), + new AccessIdValidationResource("Mumm, Maxi", "user182"), + new AccessIdValidationResource("Morphose, Meta", "user183"), + new AccessIdValidationResource("Uh, Mia", "user184"), + new AccessIdValidationResource("Rofon, Mike", "user185"), + new AccessIdValidationResource("Rosoft, Mike", "user186"), + new AccessIdValidationResource("Liter, Milli", "user187"), + new AccessIdValidationResource("Thär, Milli", "user188"), + new AccessIdValidationResource("Welle, Mirko", "user189"), + new AccessIdValidationResource("Thorat, Mo", "user190"), + new AccessIdValidationResource("Thor, Moni", "user191"), + new AccessIdValidationResource("Kinolta, Monika", "user192"), + new AccessIdValidationResource("Mundhaar, Monika", "user193"), + new AccessIdValidationResource("Munter, Monika", "user194"), + new AccessIdValidationResource("Zwerg, Nat", "user195"), + new AccessIdValidationResource("Elmine, Nick", "user196"), + new AccessIdValidationResource("Thien, Niko", "user197"), + new AccessIdValidationResource("Pferd, Nils", "user198"), + new AccessIdValidationResource("Lerweise, Norma", "user199"), + new AccessIdValidationResource("Motor, Otto", "user200"), + new AccessIdValidationResource("Päde, Otto", "user201"), + new AccessIdValidationResource("Totol, Otto", "user202"), + new AccessIdValidationResource("Ahner, Paul", "user203"), + new AccessIdValidationResource("Nerr, Paula", "user204"), + new AccessIdValidationResource("Leum, Pedro", "user205"), + new AccessIdValidationResource("Imeter, Peer", "user206"), + new AccessIdValidationResource("Manent, Peer", "user207"), + new AccessIdValidationResource("Serkatze, Peer", "user208"), + new AccessIdValidationResource("Spektive, Peer", "user209"), + new AccessIdValidationResource("Gogisch, Peter", "user210"), + new AccessIdValidationResource("Hacke, Peter", "user211"), + new AccessIdValidationResource("Silje, Peter", "user212"), + new AccessIdValidationResource("Wagen, Peter", "user213"), + new AccessIdValidationResource("Harmonie, Phil", "user214"), + new AccessIdValidationResource("Ologie, Phil", "user215"), + new AccessIdValidationResource("Ihnen, Philip", "user216"), + new AccessIdValidationResource("Nist, Pia", "user217"), + new AccessIdValidationResource("Uto, Pia", "user218"), + new AccessIdValidationResource("Colada, Pina", "user219"), + new AccessIdValidationResource("Kothek, Pina", "user220"), + new AccessIdValidationResource("Toresk, Pit", "user221"), + new AccessIdValidationResource("Zar, Pit", "user222"), + new AccessIdValidationResource("Carbonat, Polly", "user223"), + new AccessIdValidationResource("Zeih, Polly", "user224"), + new AccessIdValidationResource("Vera, Prima", "user225"), + new AccessIdValidationResource("Tswan, Puh", "user226"), + new AccessIdValidationResource("Chen, Qu", "user227"), + new AccessIdValidationResource("Zufall, Rainer", "user228"), + new AccessIdValidationResource("Tenz, Reni", "user229"), + new AccessIdValidationResource("Lien, Rita", "user230"), + new AccessIdValidationResource("Sport, Rita", "user231"), + new AccessIdValidationResource("Held, Roman", "user232"), + new AccessIdValidationResource("Nenbrot, Rosi", "user233"), + new AccessIdValidationResource("Haar, Ross", "user234"), + new AccessIdValidationResource("Baer, Roy", "user235"), + new AccessIdValidationResource("Dick, Roy", "user236"), + new AccessIdValidationResource("Mente, Rudi", "user238"), + new AccessIdValidationResource("Enplaner, Ruth", "user239"), + new AccessIdValidationResource("Print, Ruth", "user240"), + new AccessIdValidationResource("Kommen, Ryan", "user241"), + new AccessIdValidationResource("Pler, Sam", "user242"), + new AccessIdValidationResource("Philo, Sophie", "user243"), + new AccessIdValidationResource("Mutter, Steve", "user244"), + new AccessIdValidationResource("Matisier, Stig", "user245"), + new AccessIdValidationResource("Transpor, Svea", "user246"), + new AccessIdValidationResource("Loniki, Tessa", "user247"), + new AccessIdValidationResource("Tralisch, Thea", "user248"), + new AccessIdValidationResource("Logie, Theo", "user249"), + new AccessIdValidationResource("Retisch, Theo", "user250"), + new AccessIdValidationResource("Ister, Thorn", "user251"), + new AccessIdValidationResource("Sitter, Till", "user252"), + new AccessIdValidationResource("Buktu, Tim", "user253"), + new AccessIdValidationResource("Beil, Timo", "user254"), + new AccessIdValidationResource("Ate, Tom", "user255"), + new AccessIdValidationResource("Riga, Toni", "user256"), + new AccessIdValidationResource("Pie, Udo", "user257"), + new AccessIdValidationResource("Russ, Ute", "user258"), + new AccessIdValidationResource("Aloe, Vera", "user261"), + new AccessIdValidationResource("Breden, Vera", "user262"), + new AccessIdValidationResource("Hausver, Walter", "user263"), + new AccessIdValidationResource("Lismus, Wanda", "user264"), + new AccessIdValidationResource("Schuh, Wanda", "user265"), + new AccessIdValidationResource("Pell, Wim", "user266"), + new AccessIdValidationResource("Rahm, Wolf", "user267"), + new AccessIdValidationResource("sachbearbeiter", "group01"), new AccessIdValidationResource("leben", "group02"), + new AccessIdValidationResource("chirurgie", "group03"), new AccessIdValidationResource("zahn", "group04"), + new AccessIdValidationResource("knie", "group05"), new AccessIdValidationResource("schaden", "group06"), + new AccessIdValidationResource("kapital", "group07"), new AccessIdValidationResource("ausland", "group08"), + new AccessIdValidationResource("teamlead", "group09"), new AccessIdValidationResource("gesundheit", "group10"), + new AccessIdValidationResource("vip", "group11"), new AccessIdValidationResource("manager", "group12"), + new AccessIdValidationResource("kfz", "group13"), new AccessIdValidationResource("haftpflicht", "group14"), + new AccessIdValidationResource("bauspar", "group15"))); + +} diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AccessIdValidationResource.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AccessIdValidationResource.java new file mode 100644 index 000000000..55df8b3a9 --- /dev/null +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/AccessIdValidationResource.java @@ -0,0 +1,38 @@ +package pro.taskana.rest.resource; + +/** + * resource class for access id validation. + * + * @author bbr + */ +public class AccessIdValidationResource { + + public String name; + public String accessId; + + public AccessIdValidationResource() { + + } + + public AccessIdValidationResource(String name, String accessId) { + this.accessId = accessId; + this.name = name; + } + + public String getAccessId() { + return accessId; + } + + public void setAccessId(String accessId) { + this.accessId = accessId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + +}