mirror of
				https://github.com/restic/restic.git
				synced 2025-11-04 04:16:58 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			115 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package dump
 | 
						|
 | 
						|
import (
 | 
						|
	"reflect"
 | 
						|
	"testing"
 | 
						|
)
 | 
						|
 | 
						|
func Test_acl_decode(t *testing.T) {
 | 
						|
	type args struct {
 | 
						|
		xattr []byte
 | 
						|
	}
 | 
						|
	tests := []struct {
 | 
						|
		name string
 | 
						|
		args args
 | 
						|
		want string
 | 
						|
	}{
 | 
						|
		{
 | 
						|
			name: "decode string",
 | 
						|
			args: args{
 | 
						|
				xattr: []byte{2, 0, 0, 0, 1, 0, 6, 0, 255, 255, 255, 255, 2, 0, 7, 0, 0, 0, 0, 0, 2, 0, 7, 0, 254, 255, 0, 0, 4, 0, 7, 0, 255, 255, 255, 255, 16, 0, 7, 0, 255, 255, 255, 255, 32, 0, 4, 0, 255, 255, 255, 255},
 | 
						|
			},
 | 
						|
			want: "user::rw-\nuser:0:rwx\nuser:65534:rwx\ngroup::rwx\nmask::rwx\nother::r--\n",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			name: "decode group",
 | 
						|
			args: args{
 | 
						|
				xattr: []byte{2, 0, 0, 0, 8, 0, 1, 0, 254, 255, 0, 0},
 | 
						|
			},
 | 
						|
			want: "group:65534:--x\n",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			name: "decode fail",
 | 
						|
			args: args{
 | 
						|
				xattr: []byte("abctest"),
 | 
						|
			},
 | 
						|
			want: "",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			name: "decode empty fail",
 | 
						|
			args: args{
 | 
						|
				xattr: []byte(""),
 | 
						|
			},
 | 
						|
			want: "",
 | 
						|
		},
 | 
						|
	}
 | 
						|
	for _, tt := range tests {
 | 
						|
		t.Run(tt.name, func(t *testing.T) {
 | 
						|
			a := &acl{}
 | 
						|
			a.decode(tt.args.xattr)
 | 
						|
			if tt.want != a.String() {
 | 
						|
				t.Errorf("acl.decode() = %v, want: %v", a.String(), tt.want)
 | 
						|
			}
 | 
						|
			a.decode(tt.args.xattr)
 | 
						|
			if tt.want != a.String() {
 | 
						|
				t.Errorf("second acl.decode() = %v, want: %v", a.String(), tt.want)
 | 
						|
			}
 | 
						|
		})
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func Test_acl_encode(t *testing.T) {
 | 
						|
	tests := []struct {
 | 
						|
		name string
 | 
						|
		want []byte
 | 
						|
		args []aclElement
 | 
						|
	}{
 | 
						|
		{
 | 
						|
			name: "encode values",
 | 
						|
			want: []byte{2, 0, 0, 0, 1, 0, 6, 0, 255, 255, 255, 255, 2, 0, 7, 0, 0, 0, 0, 0, 2, 0, 7, 0, 254, 255, 0, 0, 4, 0, 7, 0, 255, 255, 255, 255, 16, 0, 7, 0, 255, 255, 255, 255, 32, 0, 4, 0, 255, 255, 255, 255},
 | 
						|
			args: []aclElement{
 | 
						|
				{
 | 
						|
					aclSID: 8589934591,
 | 
						|
					Perm:   6,
 | 
						|
				},
 | 
						|
				{
 | 
						|
					aclSID: 8589934592,
 | 
						|
					Perm:   7,
 | 
						|
				},
 | 
						|
				{
 | 
						|
					aclSID: 8590000126,
 | 
						|
					Perm:   7,
 | 
						|
				},
 | 
						|
				{
 | 
						|
					aclSID: 21474836479,
 | 
						|
					Perm:   7,
 | 
						|
				},
 | 
						|
				{
 | 
						|
					aclSID: 73014444031,
 | 
						|
					Perm:   7,
 | 
						|
				},
 | 
						|
				{
 | 
						|
					aclSID: 141733920767,
 | 
						|
					Perm:   4,
 | 
						|
				},
 | 
						|
			},
 | 
						|
		},
 | 
						|
		{
 | 
						|
			name: "encode fail",
 | 
						|
			want: []byte{2, 0, 0, 0},
 | 
						|
			args: []aclElement{},
 | 
						|
		},
 | 
						|
	}
 | 
						|
	for _, tt := range tests {
 | 
						|
		t.Run(tt.name, func(t *testing.T) {
 | 
						|
			a := &acl{
 | 
						|
				Version: 2,
 | 
						|
				List:    tt.args,
 | 
						|
			}
 | 
						|
			if got := a.encode(); !reflect.DeepEqual(got, tt.want) {
 | 
						|
				t.Errorf("acl.encode() = %v, want %v", got, tt.want)
 | 
						|
			}
 | 
						|
		})
 | 
						|
	}
 | 
						|
}
 |