github.com/cs3org/reva/v2@v2.27.7/pkg/user/manager/memory/memory_test.go (about) 1 // Copyright 2018-2021 CERN 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 // 15 // In applying this license, CERN does not waive the privileges and immunities 16 // granted to it by virtue of its status as an Intergovernmental Organization 17 // or submit itself to any jurisdiction. 18 19 package memory 20 21 import ( 22 "context" 23 "reflect" 24 "testing" 25 26 userpb "github.com/cs3org/go-cs3apis/cs3/identity/user/v1beta1" 27 "github.com/cs3org/reva/v2/pkg/errtypes" 28 ) 29 30 var ctx = context.Background() 31 32 func TestUserManager(t *testing.T) { 33 // get manager 34 manager, _ := New(map[string]interface{}{ 35 "users": map[string]interface{}{ 36 "4c510ada-c86b-4815-8820-42cdf82c3d51": map[string]interface{}{ 37 "id": map[string]interface{}{ 38 "opaqueId": "4c510ada-c86b-4815-8820-42cdf82c3d51", 39 "idp": "http://localhost:9998", 40 "type": 1, // user.UserType_USER_TYPE_PRIMARY 41 }, 42 "uid_number": 123, 43 "gid_number": 987, 44 "username": "einstein", 45 "mail": "einstein@example.org", 46 "display_name": "Albert Einstein", 47 "groups": []string{"sailing-lovers", "violin-haters", "physics-lovers"}, 48 }, 49 }, 50 }) 51 52 // setup test data 53 uidEinstein := &userpb.UserId{Idp: "http://localhost:9998", OpaqueId: "4c510ada-c86b-4815-8820-42cdf82c3d51", Type: userpb.UserType_USER_TYPE_PRIMARY} 54 userEinstein := &userpb.User{ 55 Id: uidEinstein, 56 Username: "einstein", 57 Groups: []string{"sailing-lovers", "violin-haters", "physics-lovers"}, 58 Mail: "einstein@example.org", 59 DisplayName: "Albert Einstein", 60 UidNumber: 123, 61 GidNumber: 987, 62 } 63 userEinsteinWithoutGroups := &userpb.User{ 64 Id: uidEinstein, 65 Username: "einstein", 66 Mail: "einstein@example.org", 67 DisplayName: "Albert Einstein", 68 UidNumber: 123, 69 GidNumber: 987, 70 } 71 72 uidFake := &userpb.UserId{Idp: "nonesense", OpaqueId: "fakeUser"} 73 groupsEinstein := []string{"sailing-lovers", "violin-haters", "physics-lovers"} 74 75 // positive test GetUserByClaim by uid 76 resUserByUID, _ := manager.GetUserByClaim(ctx, "uid", "123", false) 77 if !reflect.DeepEqual(resUserByUID, userEinstein) { 78 t.Fatalf("user differs: expected=%v got=%v", userEinstein, resUserByUID) 79 } 80 81 // negative test GetUserByClaim by uid 82 expectedErr := errtypes.NotFound("789") 83 _, err := manager.GetUserByClaim(ctx, "uid", "789", false) 84 if !reflect.DeepEqual(err, expectedErr) { 85 t.Fatalf("user not found error differs: expected='%v' got='%v'", expectedErr, err) 86 } 87 88 // positive test GetUserByClaim by mail 89 resUserByEmail, _ := manager.GetUserByClaim(ctx, "mail", "einstein@example.org", false) 90 if !reflect.DeepEqual(resUserByEmail, userEinstein) { 91 t.Fatalf("user differs: expected=%v got=%v", userEinstein, resUserByEmail) 92 } 93 94 // positive test GetUserByClaim by uid without groups 95 resUserByUIDWithoutGroups, _ := manager.GetUserByClaim(ctx, "uid", "123", true) 96 if !reflect.DeepEqual(resUserByUIDWithoutGroups, userEinsteinWithoutGroups) { 97 t.Fatalf("user differs: expected=%v got=%v", userEinsteinWithoutGroups, resUserByUIDWithoutGroups) 98 } 99 100 // positive test GetUserGroups 101 resGroups, _ := manager.GetUserGroups(ctx, uidEinstein) 102 if !reflect.DeepEqual(resGroups, groupsEinstein) { 103 t.Fatalf("groups differ: expected=%v got=%v", groupsEinstein, resGroups) 104 } 105 106 // negative test GetUserGroups 107 expectedErr = errtypes.NotFound(uidFake.OpaqueId) 108 _, err = manager.GetUserGroups(ctx, uidFake) 109 if !reflect.DeepEqual(err, expectedErr) { 110 t.Fatalf("user not found error differs: expected='%v' got='%v'", expectedErr, err) 111 } 112 113 // test FindUsers 114 resUser, _ := manager.FindUsers(ctx, "einstein", false) 115 if !reflect.DeepEqual(resUser, []*userpb.User{userEinstein}) { 116 t.Fatalf("user differs: expected=%v got=%v", []*userpb.User{userEinstein}, resUser) 117 } 118 119 // negative test FindUsers 120 resUsers, _ := manager.FindUsers(ctx, "notARealUser", false) 121 if len(resUsers) > 0 { 122 t.Fatalf("user not in group: expected=%v got=%v", []*userpb.User{}, resUsers) 123 } 124 }