diff --git a/tests/src/Functional/EntityResource/WorkspaceJsonAnonTest.php b/tests/src/Functional/EntityResource/WorkspaceJsonAnonTest.php
new file mode 100644
index 0000000..1053605
--- /dev/null
+++ b/tests/src/Functional/EntityResource/WorkspaceJsonAnonTest.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Drupal\Tests\workspace\Functional\EntityResource;
+
+use Drupal\Tests\rest\Functional\AnonResourceTestTrait;
+
+/**
+ * @group workspace
+ */
+class WorkspaceJsonAnonTest extends WorkspaceResourceTestBase {
+
+  use AnonResourceTestTrait;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $format = 'json';
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $mimeType = 'application/json';
+
+}
diff --git a/tests/src/Functional/EntityResource/WorkspaceResourceTestBase.php b/tests/src/Functional/EntityResource/WorkspaceResourceTestBase.php
new file mode 100644
index 0000000..e9d8fa9
--- /dev/null
+++ b/tests/src/Functional/EntityResource/WorkspaceResourceTestBase.php
@@ -0,0 +1,102 @@
+<?php
+
+namespace Drupal\Tests\workspace\Functional\EntityResource;
+
+use Drupal\Tests\rest\Functional\BcTimestampNormalizerUnixTestTrait;
+use Drupal\Tests\rest\Functional\EntityResource\EntityResourceTestBase;
+use Drupal\workspace\Entity\Workspace;
+
+/**
+ * Base class for workspace EntityResource tests.
+ */
+abstract class WorkspaceResourceTestBase extends EntityResourceTestBase {
+
+  use BcTimestampNormalizerUnixTestTrait;
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['workspace'];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $entityTypeId = 'workspace';
+
+  /**
+   * @inheritDoc
+   */
+  protected function setUpAuthorization($method) {
+    $this->grantPermissionsToTestedRole(['administer workspaces', 'view_workspace_layla']);
+  }
+
+  /**
+   * @inheritDoc
+   */
+  protected function createEntity() {
+    $workspace = Workspace::create(['id' => 'layla', 'label' => 'Layla']);
+    $workspace->save();
+    return $workspace;
+  }
+
+  /**
+   * @inheritDoc
+   */
+  protected function getExpectedNormalizedEntity() {
+    throw new \Exception('Not yet supported.');
+  }
+
+  /**
+   * @inheritDoc
+   */
+  protected function getNormalizedPostEntity() {
+    return [
+      'id' => [
+        [
+          'value' => 'layla',
+        ],
+      ],
+      'label' => [
+        [
+          'value' => 'Layla',
+        ],
+      ],
+    ];
+  }
+
+  /**
+   * @inheritDoc
+   */
+  protected function getExpectedUnauthorizedAccessMessage($method) {
+    return parent::getExpectedUnauthorizedAccessMessage($method); // TODO: Change the autogenerated stub
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function testPost() {
+    return parent::testPost(); // TODO: Change the autogenerated stub
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function testPatch() {
+    return parent::testPatch(); // TODO: Change the autogenerated stub
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function testDelete() {
+    return parent::testDelete(); // TODO: Change the autogenerated stub
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function testGet() {
+    return parent::testGet(); // TODO: Change the autogenerated stub
+  }
+
+}
diff --git a/tests/src/Kernel/ContentWorkspaceResourceTest.php b/tests/src/Kernel/ContentWorkspaceResourceTest.php
new file mode 100644
index 0000000..909be62
--- /dev/null
+++ b/tests/src/Kernel/ContentWorkspaceResourceTest.php
@@ -0,0 +1,42 @@
+<?php
+
+namespace Drupal\Tests\workspace\Kernel;
+
+use Drupal\Component\Plugin\Exception\PluginNotFoundException;
+use Drupal\KernelTests\KernelTestBase;
+use Drupal\rest\Entity\RestResourceConfig;
+use Drupal\rest\RestResourceConfigInterface;
+
+/**
+ * Tests REST module with content workspace entities.
+ *
+ * @group workspace
+ */
+class ContentWorkspaceResourceTest extends KernelTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['user', 'serialization', 'rest', 'workspace'];
+
+  /**
+   * Tests enabling content workspaces for REST throws an exception.
+   *
+   * @see workspace_rest_resource_alter()
+   */
+  public function testCreateContentWorkspaceResource() {
+    $this->setExpectedException(PluginNotFoundException::class, 'The "entity:content_workspace" plugin does not exist.');
+    RestResourceConfig::create([
+      'id' => 'entity.content_workspace',
+      'granularity' => RestResourceConfigInterface::RESOURCE_GRANULARITY,
+      'configuration' => [
+        'methods' => ['GET'],
+        'formats' => ['json'],
+        'authentication' => ['cookie'],
+      ],
+    ])
+      ->enable()
+      ->save();
+  }
+
+}
diff --git a/workspace.module b/workspace.module
index da1483f..471b601 100644
--- a/workspace.module
+++ b/workspace.module
@@ -233,3 +233,12 @@ function workspace_entity_create_access(AccountInterface $account, array $contex
     ->getInstanceFromDefinition(EntityAccess::class)
     ->entityCreateAccess($account, $context, $entity_bundle);
 }
+
+/**
+ * Implements hook_rest_resource_alter().
+ */
+function workspace_rest_resource_alter(&$definitions) {
+  // ContentWorkspace is an internal entity type. Therefore it should also not
+  // be exposed via REST.
+  unset($definitions['entity:content_workspace']);
+}
