File: ContainerUtilsTests.cs
Web Access
Project: src\src\DataProtection\DataProtection\test\Microsoft.AspNetCore.DataProtection.Tests\Microsoft.AspNetCore.DataProtection.Tests.csproj (Microsoft.AspNetCore.DataProtection.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.AspNetCore.DataProtection.Internal;
using Microsoft.AspNetCore.InternalTesting;
 
namespace Microsoft.AspNetCore.DataProtection.Test;
 
public class ContainerUtilsTests
{
    // example of content from /proc/self/mounts
    private static readonly string[] fstab = new[]
    {
            "none / aufs rw,relatime,si=f9bfcf896de3f6c2,dio,dirperm1 0 0",
            "# comments",
            "",
            "proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0",
            "tmpfs /dev tmpfs rw,nosuid,mode=755 0 0",
            "devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666 0 0",
            "/dev/vda2 /etc/resolv.conf ext4 rw,relatime,data=ordered 0 0",
            "/dev/vda2 /etc/hostname ext4 rw,relatime,data=ordered 0 0",
            "/dev/vda2 /etc/hosts ext4 rw,relatime,data=ordered 0 0",
            "shm /dev/shm tmpfs rw,nosuid,nodev,noexec,relatime,size=65536k 0 0",
            // the mounted directory
            "osxfs /app fuse.osxfs rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other,max_read=1048576 0 0",
        };
 
    [ConditionalTheory]
    [OSSkipCondition(OperatingSystems.Windows)]
    [InlineData("/")]
    [InlineData("/home")]
    [InlineData("/home/")]
    [InlineData("/home/root")]
    [InlineData("./dir")]
    [InlineData("../dir")]
    public void DeterminesFolderIsNotMounted(string directory)
    {
        Assert.False(ContainerUtils.IsDirectoryMounted(new DirectoryInfo(directory), fstab));
    }
 
    [ConditionalTheory]
    [OSSkipCondition(OperatingSystems.Windows)]
    [InlineData("/app")]
    [InlineData("/app/")]
    [InlineData("/app/subdir")]
    [InlineData("/app/subdir/")]
    [InlineData("/app/subdir/two")]
    [InlineData("/app/subdir/two/")]
    public void DeterminesFolderIsMounted(string directory)
    {
        Assert.True(ContainerUtils.IsDirectoryMounted(new DirectoryInfo(directory), fstab));
    }
}