summaryrefslogtreecommitdiffstats
path: root/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/fs/ContainerUserPrincipalLookupServiceTest.java
blob: a459c24049e0df54bfe8245861296b158bb2a17a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.fs;

import com.yahoo.vespa.test.file.TestFileSystem;
import org.junit.jupiter.api.Test;

import java.io.IOException;
import java.nio.file.attribute.UserPrincipalNotFoundException;

import static com.yahoo.vespa.hosted.node.admin.task.util.fs.ContainerUserPrincipalLookupService.ContainerUserPrincipal;
import static com.yahoo.vespa.hosted.node.admin.task.util.fs.ContainerUserPrincipalLookupService.ContainerGroupPrincipal;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;

/**
 * @author valerijf
 */
class ContainerUserPrincipalLookupServiceTest {

    private final ContainerUserPrincipalLookupService userPrincipalLookupService =
            new ContainerUserPrincipalLookupService(TestFileSystem.create().getUserPrincipalLookupService(), 1000, 2000);

    @Test
    public void correctly_resolves_ids() throws IOException {
        ContainerUserPrincipal user = userPrincipalLookupService.lookupPrincipalByName("1000");
        assertEquals("vespa", user.getName());
        assertEquals("2000", user.baseFsPrincipal().getName());
        assertEquals(user, userPrincipalLookupService.lookupPrincipalByName("vespa"));

        ContainerGroupPrincipal group = userPrincipalLookupService.lookupPrincipalByGroupName("1000");
        assertEquals("vespa", group.getName());
        assertEquals("3000", group.baseFsPrincipal().getName());
        assertEquals(group, userPrincipalLookupService.lookupPrincipalByGroupName("vespa"));

        assertThrows(UserPrincipalNotFoundException.class, () -> userPrincipalLookupService.lookupPrincipalByName("test"));
    }

    @Test
    public void translates_between_ids() {
        assertEquals(1001, userPrincipalLookupService.containerUidToHostUid(1));
        assertEquals(2001, userPrincipalLookupService.containerGidToHostGid(1));
        assertEquals(1, userPrincipalLookupService.hostUidToContainerUid(1001));
        assertEquals(1, userPrincipalLookupService.hostGidToContainerGid(2001));

        assertEquals(65_534, userPrincipalLookupService.hostUidToContainerUid(1));
        assertEquals(65_534, userPrincipalLookupService.hostUidToContainerUid(999999));

        assertThrows(IllegalArgumentException.class, () -> userPrincipalLookupService.containerUidToHostUid(-1));
        assertThrows(IllegalArgumentException.class, () -> userPrincipalLookupService.containerUidToHostUid(70_000));
    }
}