github.com/aporeto-inc/trireme-lib@v10.358.0+incompatible/monitor/extractors/uid_test.go (about)

     1  // +build !windows
     2  
     3  package extractors
     4  
     5  import (
     6  	"reflect"
     7  	"strconv"
     8  	"testing"
     9  
    10  	"go.aporeto.io/trireme-lib/common"
    11  	"go.aporeto.io/trireme-lib/policy"
    12  )
    13  
    14  func createDummyPolicy(event *common.EventInfo) *policy.PURuntime {
    15  	runtimeTags := policy.NewTagStore()
    16  	runtimeTags.AppendKeyValue("@sys:test", "valid")
    17  	runtimeTags.AppendKeyValue("@app:linux:test", "valid")
    18  	runtimeIps := policy.ExtendedMap{"bridge": "0.0.0.0/0"}
    19  	options := &policy.OptionsType{
    20  		CgroupName: event.PUID,
    21  		CgroupMark: strconv.Itoa(105),
    22  		UserID:     event.PUID,
    23  		Services:   nil,
    24  	}
    25  	return policy.NewPURuntime(event.Name, int(event.PID), "", runtimeTags, runtimeIps, common.UIDLoginPU, options)
    26  }
    27  func TestUIDMetadataExtractor(t *testing.T) {
    28  	var marshaledgot, marshalledwant []byte
    29  	type args struct {
    30  		event *common.EventInfo
    31  	}
    32  	e := &common.EventInfo{
    33  		PID:      100,
    34  		Name:     "TestPU",
    35  		Tags:     []string{"test=valid"},
    36  		PUID:     "TestPU",
    37  		Services: nil,
    38  		PUType:   common.LinuxProcessPU,
    39  	}
    40  	tests := []struct {
    41  		name    string
    42  		args    args
    43  		want    *policy.PURuntime
    44  		wantErr bool
    45  	}{
    46  		{
    47  			name: "Invalid Tags",
    48  			args: args{
    49  				event: &common.EventInfo{
    50  					Tags: []string{"InvalidTagFormat"},
    51  				},
    52  			},
    53  			want:    nil,
    54  			wantErr: true,
    55  		},
    56  		{
    57  			name: "Valid Tags",
    58  			args: args{
    59  				event: e,
    60  			},
    61  			want:    createDummyPolicy(e),
    62  			wantErr: false,
    63  		},
    64  
    65  		// TODO: Add test cases.
    66  	}
    67  	for _, tt := range tests {
    68  		t.Run(tt.name, func(t *testing.T) {
    69  			got, err := UIDMetadataExtractor(tt.args.event)
    70  			if (err != nil) != tt.wantErr {
    71  				t.Errorf("UIDMetadataExtractor() error = %v, wantErr %v", err, tt.wantErr)
    72  				return
    73  			}
    74  			if got != nil && tt.want != nil {
    75  				marshaledgot, _ = got.MarshalJSON()
    76  				marshalledwant, _ = tt.want.MarshalJSON()
    77  			}
    78  			if !reflect.DeepEqual(marshaledgot, marshalledwant) {
    79  				t.Errorf("\nUIDMetadataExtractor()\ngot  = %s\n, want %s\n", string(marshaledgot), string(marshalledwant))
    80  			}
    81  		})
    82  	}
    83  }