diff --git a/Content.IntegrationTests/Tests/Disposal/DisposalUnitInteractionTest.cs b/Content.IntegrationTests/Tests/Disposal/DisposalUnitInteractionTest.cs
new file mode 100644
index 0000000000..d4b20a55a8
--- /dev/null
+++ b/Content.IntegrationTests/Tests/Disposal/DisposalUnitInteractionTest.cs
@@ -0,0 +1,54 @@
+using Content.IntegrationTests.Tests.Interaction;
+using Content.Server.Containers;
+using Robust.Shared.Containers;
+using Robust.Shared.Prototypes;
+
+namespace Content.IntegrationTests.Tests.Disposal;
+
+public sealed class DisposalUnitInteractionTest : InteractionTest
+{
+ private static readonly EntProtoId DisposalUnit = "DisposalUnit";
+ private static readonly EntProtoId TrashItem = "BrokenBottle";
+
+ private const string TestDisposalUnitId = "TestDisposalUnit";
+
+ [TestPrototypes]
+ private static readonly string TestPrototypes = $@"
+# A modified disposal unit with a 100% chance of a thrown item being inserted
+- type: entity
+ parent: {DisposalUnit.Id}
+ id: {TestDisposalUnitId}
+ components:
+ - type: ThrowInsertContainer
+ probability: 1
+";
+
+ ///
+ /// Spawns a disposal unit, gives the player a trash item, and makes the
+ /// player throw the item at the disposal unit.
+ /// After a short delay, verifies that the thrown item is contained inside
+ /// the disposal unit.
+ ///
+ [Test]
+ public async Task ThrowItemIntoDisposalUnitTest()
+ {
+ var containerSys = Server.System();
+
+ // Spawn the target disposal unit
+ var disposalUnit = await SpawnTarget(TestDisposalUnitId);
+
+ // Give the player some trash to throw
+ var trash = await PlaceInHands(TrashItem);
+
+ // Throw the item at the disposal unit
+ await ThrowItem();
+
+ // Wait a moment
+ await RunTicks(10);
+
+ // Make sure the trash is in the disposal unit
+ var throwInsertComp = Comp();
+ var container = containerSys.GetContainer(ToServer(disposalUnit), throwInsertComp.ContainerId);
+ Assert.That(container.ContainedEntities, Contains.Item(ToServer(trash)));
+ }
+}