diff --git a/src/main/java/hdm/mi/growbros/auth/AuthenticationService.java b/src/main/java/hdm/mi/growbros/auth/AuthenticationService.java
index acecf64d1eda1e83d56ab87035757732a12c1b44..bccca6cb2bcd1a7990c9afc41777e0f5b07e05aa 100644
--- a/src/main/java/hdm/mi/growbros/auth/AuthenticationService.java
+++ b/src/main/java/hdm/mi/growbros/auth/AuthenticationService.java
@@ -2,7 +2,7 @@ package hdm.mi.growbros.auth;
 
 import hdm.mi.growbros.models.user.Role;
 import hdm.mi.growbros.models.user.User;
-import hdm.mi.growbros.models.user.UserRepository;
+import hdm.mi.growbros.repositories.UserRepository;
 import hdm.mi.growbros.security.JwtService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.security.authentication.AuthenticationManager;
diff --git a/src/main/java/hdm/mi/growbros/controllers/PlantsController.java b/src/main/java/hdm/mi/growbros/controllers/PlantsController.java
index af755937c7b6884001a44ec0eb89493e6206eb28..1d20d7ece62d94059a96cdf26326aca0439807d5 100644
--- a/src/main/java/hdm/mi/growbros/controllers/PlantsController.java
+++ b/src/main/java/hdm/mi/growbros/controllers/PlantsController.java
@@ -29,6 +29,11 @@ public class PlantsController {
     @GetMapping("/plants/randomPlants/{numberOfPlants}")
     public Collection<Plant> getRandomPlants(@PathVariable Integer numberOfPlants) {return plantsService.getRandomPlants(numberOfPlants);}
 
+    @GetMapping("/plants/search")
+    public Collection<Plant> getPlantsSearchedFor(@RequestBody @Valid SearchRequest searchRequest){
+        return plantsService.getPlantsSearchedFor(searchRequest);
+    }
+
     @PostMapping("/plants")
     public void createPlant(@RequestBody @Valid Plant plant) {
         plantsService.createPlant(plant);
diff --git a/src/main/java/hdm/mi/growbros/security/ApplicationConfig.java b/src/main/java/hdm/mi/growbros/security/ApplicationConfig.java
index 5c2d13d458f73fb73036cc4e6dda1831e4b7dc0d..87f668515976ca7c56b38bc1cdaaa7a97648af8d 100644
--- a/src/main/java/hdm/mi/growbros/security/ApplicationConfig.java
+++ b/src/main/java/hdm/mi/growbros/security/ApplicationConfig.java
@@ -1,6 +1,6 @@
 package hdm.mi.growbros.security;
 
-import hdm.mi.growbros.models.user.UserRepository;
+import hdm.mi.growbros.repositories.UserRepository;
 import lombok.RequiredArgsConstructor;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
diff --git a/src/main/java/hdm/mi/growbros/service/PlantsService.java b/src/main/java/hdm/mi/growbros/service/PlantsService.java
index 2fda4d7a2f4a6bc7e22cc7cf379457e2c16a7e8d..a39a32d6398b7f01c810b0e03ccb93a48207b4c5 100644
--- a/src/main/java/hdm/mi/growbros/service/PlantsService.java
+++ b/src/main/java/hdm/mi/growbros/service/PlantsService.java
@@ -66,8 +66,4 @@ public class PlantsService {
         log.info("Saving plant '{}' to repository.", plant.getName());
         plantRepository.save(plant);
     }
-
-    public List<Plant> search(String search) {
-        return plantRepository.findByNameIsLike(search);
-    }
 }
diff --git a/src/test/java/hdm/mi/growbros/models/search/PlantSpecificationTest.java b/src/test/java/hdm/mi/growbros/models/search/PlantSpecificationTest.java
index d7f0fa2dc17d1a8279a9ecc35e2a6189e28749bb..cd89458dbc833490114b3b92e90058b7e866b067 100644
--- a/src/test/java/hdm/mi/growbros/models/search/PlantSpecificationTest.java
+++ b/src/test/java/hdm/mi/growbros/models/search/PlantSpecificationTest.java
@@ -1,14 +1,82 @@
 package hdm.mi.growbros.models.search;
 
+import com.fasterxml.jackson.core.JacksonException;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import hdm.mi.growbros.models.plant.Plant;
 import hdm.mi.growbros.repositories.PlantRepository;
+import lombok.RequiredArgsConstructor;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.ActiveProfiles;
+
+import java.util.List;
 
 import static org.junit.jupiter.api.Assertions.*;
 
+@SpringBootTest
 class PlantSpecificationTest {
 
-    private final PlantRepository plantRepository;
-    private final PlantSpecification plantSpecification;
+    @Autowired
+    private PlantRepository plantRepository;
+    @Autowired
+    private PlantSpecification plantSpecification;
+
+    private static Plant plant1;
+    private static Plant plant2;
+    private static Plant plant3;
+
+
+    @BeforeAll
+    public static void setUp(@Autowired PlantRepository plantRepository){
+        String jsonData= "[{\"name\":\"Etampes\",\"latinName\":\"ns12\",\"growingTips\":\"Wunderbar nutzbringende Untersaat z.B. für Grünkohl. Als Winterbegrünung\\nvon Staudenbeeten oder Balkonkästen.\",\"description\":\"Alte, dunkelgrüne, etwas langsamer wachsende Sorte, für den Freilandanbau. Erträgt Kahlfröste besser als andere Sorten und stängelt im Frühjahr etwas später auf. Löffelt nicht.\",\"origin\":null,\"plantWeekStart\":10,\"plantWeekEnd\":19,\"harvestWeekStart\":39,\"harvestWeekEnd\":15,\"growthDuration\":20,\"nutrientDemand\":\"LOW\",\"lightingDemand\":\"HIGH\",\"waterDemand\":\"WET\",\"groundType\":null,\"imageUrl\":\"https://d3t240q2dksnz7.cloudfront.net/7c982b256c33faf0068e58854d46efc1.jpg\"},{\"name\":\"Elan\",\"latinName\":\"ns15\",\"growingTips\":\"Wenn Feldsalat im heißen und trockenen August ausgesät wird kann es zu erheblichen Auflaufproblemen kommen. Hier helfen eine Beschattung mit einem Vlies und das Bewässern des Bodens vor der Aussaat. Feldsalat braucht wenig Stickstoff und sollte keinesfalls nach Hülsenfrüchten anbaut werden.\",\"description\":\"Sehr raschwachsende und mehltautolerante Sorte, die sich sowohl für den Anbau im Freien wie unter Glas und Folie eignet. Noch rascher im Wuchs als die Sorte Vit. Kompakte, glattblättrige Pflanzen mit hohem Einzelpflanzengewicht. Robust gegen falschen Mehltau. Neigt bei früher Aussaat zum Löffeln, daher nicht für die ersten Sätze im Sommer geeignet.  \",\"origin\":null,\"plantWeekStart\":10,\"plantWeekEnd\":19,\"harvestWeekStart\":37,\"harvestWeekEnd\":15,\"growthDuration\":18,\"nutrientDemand\":\"LOW\",\"lightingDemand\":\"HIGH\",\"waterDemand\":\"WET\",\"groundType\":null,\"imageUrl\":\"https://d3t240q2dksnz7.cloudfront.net/3b9ebf9fc01ef9b543a658efca59d56a.jpg\"},{\"name\":\"Postelein\",\"latinName\":\"Claytonia perfoliata L.\",\"growingTips\":\"Die Samen des Postelein keimen erst bei einer Temperatur unter 12 °C und werden darum in der Zeit von September bis März in Reihen mit 15–20 cm Abstand ausgesät (daher der Name \\\"Winterportulak\\\"). Meist stammt der im Handel erhältliche Postelein aus dem Gewächshausanbau. Auch wenn die Pflanzen etwas Kälte vertragen, solltest du sie mit einem Gartenvlies vor starkem Frost schützen. Während der Kultur ist der Postelein ziemlich anspruchslos. Zu Ernte schneidest du die (möglichst noch jungen) Blätter und Stiele nicht zu tief über dem Boden ab. So kann der Postelein noch einmal austreiben und es sind mehrere Ernten möglich.\\n\\n\",\"description\":\"Das \\\"Gewöhnliche Tellerkraut\\\" bzw. \\\"Postelein\\\" (Claytonia perfoliata) ist eine Pflanzenart aus der Familie der Quellkrautgewächse (Montiaceae). Sie wird in Mitteleuropa angebaut, ist winterhart und wird darum teilweise auch als \\\"modernes\\\" Wintergemüse verwendet.\",\"origin\":\"Die Berg- und Küstenregionen im Westen Nordamerikas\",\"plantWeekStart\":null,\"plantWeekEnd\":null,\"harvestWeekStart\":39,\"harvestWeekEnd\":20,\"growthDuration\":12,\"nutrientDemand\":\"LOW\",\"lightingDemand\":\"LOW\",\"waterDemand\":\"WET\",\"groundType\":null,\"imageUrl\":\"https://d3t240q2dksnz7.cloudfront.net/b42b406101112ef7f194a4e9cb3afff2.jpg\"}]";
+
+        try {
+            final ObjectMapper objectMapper = new ObjectMapper();
+            List<Plant> plants = objectMapper.readValue(jsonData, new TypeReference<>() {
+            });
+            plant1=plants.get(0);
+            plant2=plants.get(1);
+            plant3=plants.get(2);
+            plantRepository.saveAll(plants);
+            System.out.println("plants saved");
+        } catch (JacksonException e) {
+           e.printStackTrace();
+        }
+
+    }
+@Test
+    public void testNameExact(){
+        SearchRequest searchRequest= SearchRequest.builder().searchTerm("Etampes").build();
+        var spec=plantSpecification.withSearchCriteria(searchRequest);
+        assertEquals(List.of(plant1),plantRepository.findAll(spec));
+    }
+
+    @Test
+    public void testNameIgnoreCase(){
+        SearchRequest searchRequest= SearchRequest.builder().searchTerm("etampes").build();
+        var spec=plantSpecification.withSearchCriteria(searchRequest);
+        assertEquals(List.of(plant1),plantRepository.findAll(spec));
+    }
+
+    @Test
+    public void testNameIgnoreCase2(){
+        SearchRequest searchRequest= SearchRequest.builder().searchTerm("eTaMpEs").build();
+        var spec=plantSpecification.withSearchCriteria(searchRequest);
+        assertEquals(List.of(plant1),plantRepository.findAll(spec));
+    }
 
+    @Test
+    public void testNameIncomplete(){
+        SearchRequest searchRequest= SearchRequest.builder().searchTerm("ampe").build();
+        var spec=plantSpecification.withSearchCriteria(searchRequest);
+        assertEquals(List.of(plant1),plantRepository.findAll(spec));
+    }
 
 
-}
\ No newline at end of file
+}