diff --git a/src/main/java/org/apache/sling/testing/mock/jcr/ItemData.java b/src/main/java/org/apache/sling/testing/mock/jcr/ItemData.java
index 6661344..e528ceb 100644
--- a/src/main/java/org/apache/sling/testing/mock/jcr/ItemData.java
+++ b/src/main/java/org/apache/sling/testing/mock/jcr/ItemData.java
@@ -34,7 +34,7 @@
     private final String name;
     private final boolean isNode;
     private final String uuid;
-    private final NodeType nodeType;
+    private NodeType nodeType;
     private Value[] values;
     private boolean isMultiple;
     private boolean isNew;
@@ -80,6 +80,10 @@
         return nodeType;
     }
 
+    public void setNodeType(NodeType nodeType) {
+        this.nodeType = nodeType;
+    }
+
     public Value[] getValues() {
         if (!isProperty()) {
             throw new UnsupportedOperationException();
diff --git a/src/main/java/org/apache/sling/testing/mock/jcr/MockNode.java b/src/main/java/org/apache/sling/testing/mock/jcr/MockNode.java
index 6213c09..00903cd 100644
--- a/src/main/java/org/apache/sling/testing/mock/jcr/MockNode.java
+++ b/src/main/java/org/apache/sling/testing/mock/jcr/MockNode.java
@@ -35,6 +35,7 @@
 import javax.jcr.Session;
 import javax.jcr.Value;
 import javax.jcr.lock.Lock;
+import javax.jcr.nodetype.NoSuchNodeTypeException;
 import javax.jcr.nodetype.NodeDefinition;
 import javax.jcr.nodetype.NodeType;
 import javax.jcr.version.Version;
@@ -383,6 +384,17 @@
         return new MockNodeDefinition();
     }
 
+    @Override
+    public void setPrimaryType(final String primaryNodeTypeName) throws RepositoryException {
+        if (StringUtils.isNotBlank(primaryNodeTypeName)) {
+            // accept all node types like stated in the MockNodeTypeManager
+            this.itemData.setNodeType(new MockNodeType(primaryNodeTypeName));
+            setProperty(JcrConstants.JCR_PRIMARYTYPE, primaryNodeTypeName);
+        } else {
+            throw new NoSuchNodeTypeException("Not accepting blank node types");
+        }
+    }
+
     // --- unsupported operations ---
     @Override
     public Property setProperty(final String name, final Value value, final int type) throws RepositoryException {
@@ -564,9 +576,5 @@
         throw new UnsupportedOperationException();
     }
 
-    @Override
-    public void setPrimaryType(final String nodeTypeName) throws RepositoryException {
-        throw new UnsupportedOperationException();
-    }
 
 }
diff --git a/src/test/java/org/apache/sling/testing/mock/jcr/MockNodeTest.java b/src/test/java/org/apache/sling/testing/mock/jcr/MockNodeTest.java
index 3b35470..0d9c0b1 100644
--- a/src/test/java/org/apache/sling/testing/mock/jcr/MockNodeTest.java
+++ b/src/test/java/org/apache/sling/testing/mock/jcr/MockNodeTest.java
@@ -37,6 +37,7 @@
 import javax.jcr.PropertyIterator;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
+import javax.jcr.nodetype.NoSuchNodeTypeException;
 
 import org.apache.jackrabbit.JcrConstants;
 import org.junit.Assert;
@@ -130,6 +131,17 @@
     }
 
     @Test
+    public void testSetPrimaryType() throws RepositoryException {
+        this.node1.setPrimaryType("nt:folder");
+        assertEquals("nt:folder", this.node1.getPrimaryNodeType().getName());
+    }
+
+    @Test(expected = NoSuchNodeTypeException.class)
+    public void testSetBlankPrimaryType() throws RepositoryException {
+        this.node1.setPrimaryType(" ");
+    }
+
+    @Test
     public void testIsNode() {
         assertTrue(this.node1.isNode());
         assertFalse(this.prop1.isNode());
