diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/product/ProductControllerTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/product/ProductControllerTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..ab69fc29600aa429ad1c69d340fe71d4388a4555
--- /dev/null
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/product/ProductControllerTest.java
@@ -0,0 +1,108 @@
+package ntnu.idatt2016.v233.SmartMat.controller.product;
+
+import ntnu.idatt2016.v233.SmartMat.dto.request.ProductRequest;
+import ntnu.idatt2016.v233.SmartMat.entity.product.Product;
+import ntnu.idatt2016.v233.SmartMat.service.product.ProductService;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+
+import java.util.List;
+import java.util.Optional;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.mockito.Mockito.when;
+
+@ExtendWith(MockitoExtension.class)
+public class ProductControllerTest {
+
+    @Mock
+    private ProductService productService;
+
+    @InjectMocks
+    private ProductController productController;
+
+    @Test
+    public void createProduct_productDoesNotExist_returnsCreatedProduct() {
+        // Arrange
+        ProductRequest productRequest = ProductRequest.builder()
+                .ean(123L)
+                .name("Test Product")
+                .description("A test product")
+                .image("http://test.com/image.jpg")
+                .build();
+
+        when(productService.getProductById(123L)).thenReturn(Optional.empty());
+        when(productService.getProductVolume(123L)).thenReturn(Optional.of(List.of("1", "kg")));
+
+        // Act
+        ResponseEntity<Product> response = productController.createProduct(productRequest);
+        Product product = response.getBody();
+
+        // Assert
+        assertEquals(HttpStatus.OK, response.getStatusCode());
+        assertEquals(123L, product.getEan());
+        assertEquals("Test Product", product.getName());
+        assertEquals("A test product", product.getDescription());
+        assertEquals("http://test.com/image.jpg", product.getUrl());
+        assertEquals("kg", product.getUnit());
+        assertEquals(1.0, product.getAmount());
+    }
+
+    @Test
+    public void createProduct_productExists_returnsConflict() {
+        // Arrange
+        ProductRequest productRequest = ProductRequest.builder()
+                .ean(123L)
+                .name("Test Product")
+                .description("A test product")
+                .image("http://test.com/image.jpg")
+                .build();
+
+        when(productService.getProductById(123L)).thenReturn(Optional.of(new Product()));
+
+        // Act
+        ResponseEntity<Product> response = productController.createProduct(productRequest);
+
+        // Assert
+        assertEquals(HttpStatus.CONFLICT, response.getStatusCode());
+        assertFalse(response.hasBody());
+    }
+
+    @Test
+    public void getProduct_productExists_returnsProduct() {
+        // Arrange
+        Product product = new Product();
+        product.setEan(123L);
+        product.setName("Test Product");
+
+        when(productService.getProductById(123L)).thenReturn(Optional.of(product));
+
+        // Act
+        ResponseEntity<Product> response = productController.getProduct(123L);
+        Product result = response.getBody();
+
+        // Assert
+        assertEquals(HttpStatus.OK, response.getStatusCode());
+        assertEquals(123L, result.getEan());
+        assertEquals("Test Product", result.getName());
+    }
+
+    @Test
+    public void getProduct_productDoesNotExist_returnsNotFound() {
+        // Arrange
+        when(productService.getProductById(123L)).thenReturn(Optional.empty());
+
+        // Act
+        ResponseEntity<Product> response = productController.getProduct(123L);
+
+        // Assert
+        assertEquals(HttpStatus.NOT_FOUND, response.getStatusCode());
+        assertFalse(response.hasBody());
+    }
+}
\ No newline at end of file