github.com/elastic/gosigar@v0.14.3/sys/windows/privileges_test.go (about)

     1  // +build windows
     2  
     3  package windows
     4  
     5  import (
     6  	"syscall"
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  	"golang.org/x/sys/windows"
    11  )
    12  
    13  func TestGetDebugInfo(t *testing.T) {
    14  	debug, err := GetDebugInfo()
    15  	if err != nil {
    16  		t.Fatal(err)
    17  	}
    18  
    19  	t.Logf("%+v", debug)
    20  }
    21  
    22  func TestGetTokenPrivileges(t *testing.T) {
    23  	h, err := windows.GetCurrentProcess()
    24  	if err != nil {
    25  		t.Fatal("GetCurrentProcess", err)
    26  	}
    27  
    28  	var token syscall.Token
    29  	err = syscall.OpenProcessToken(syscall.Handle(h), syscall.TOKEN_QUERY, &token)
    30  	if err != nil {
    31  		t.Fatal("OpenProcessToken", err)
    32  	}
    33  
    34  	privs, err := GetTokenPrivileges(token)
    35  	if err != nil {
    36  		t.Fatal("GetTokenPrivileges", err)
    37  	}
    38  
    39  	for _, priv := range privs {
    40  		t.Log(priv)
    41  	}
    42  }
    43  
    44  func TestEnableTokenPrivileges(t *testing.T) {
    45  	h, err := windows.GetCurrentProcess()
    46  	if err != nil {
    47  		t.Fatal("GetCurrentProcess", err)
    48  	}
    49  
    50  	var token syscall.Token
    51  	err = syscall.OpenProcessToken(syscall.Handle(h), syscall.TOKEN_ADJUST_PRIVILEGES|syscall.TOKEN_QUERY, &token)
    52  	if err != nil {
    53  		t.Fatal("OpenProcessToken", err)
    54  	}
    55  
    56  	privs, err := GetTokenPrivileges(token)
    57  	if err != nil {
    58  		t.Fatal("GetTokenPrivileges", err)
    59  	}
    60  
    61  	priv, found := privs[SeDebugPrivilege]
    62  	if found {
    63  		t.Logf("Token has privilege: %v", priv)
    64  	} else {
    65  		t.Logf("Token is missing privilege %v", SeDebugPrivilege)
    66  	}
    67  
    68  	err = EnableTokenPrivileges(token, SeDebugPrivilege)
    69  	if err != nil {
    70  		t.Fatal("EnableTokenPrivileges", err)
    71  	}
    72  
    73  	privs, err = GetTokenPrivileges(token)
    74  	if err != nil {
    75  		t.Fatal("GetTokenPrivileges", err)
    76  	}
    77  
    78  	priv, found = privs[SeDebugPrivilege]
    79  	if found && assert.True(t, priv.Enabled, "%v is not enabled. %v", SeDebugPrivilege, priv) {
    80  		t.Logf("%v is enabled.", SeDebugPrivilege)
    81  	}
    82  }