github.com/cs3org/reva/v2@v2.27.7/pkg/auth/manager/owncloudsql/accounts/accounts_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 accounts_test 20 21 import ( 22 "context" 23 "database/sql" 24 "os" 25 26 _ "github.com/mattn/go-sqlite3" 27 28 "github.com/cs3org/reva/v2/pkg/auth/manager/owncloudsql/accounts" 29 30 . "github.com/onsi/ginkgo/v2" 31 . "github.com/onsi/gomega" 32 ) 33 34 var _ = Describe("Accounts", func() { 35 var ( 36 conn *accounts.Accounts 37 testDbFile *os.File 38 sqldb *sql.DB 39 ) 40 41 BeforeEach(func() { 42 var err error 43 testDbFile, err = os.CreateTemp("", "example") 44 Expect(err).ToNot(HaveOccurred()) 45 46 dbData, err := os.ReadFile("test.sqlite") 47 Expect(err).ToNot(HaveOccurred()) 48 49 _, err = testDbFile.Write(dbData) 50 Expect(err).ToNot(HaveOccurred()) 51 err = testDbFile.Close() 52 Expect(err).ToNot(HaveOccurred()) 53 54 sqldb, err = sql.Open("sqlite3", testDbFile.Name()) 55 Expect(err).ToNot(HaveOccurred()) 56 57 }) 58 59 AfterEach(func() { 60 os.Remove(testDbFile.Name()) 61 }) 62 63 Describe("GetAccountByLogin", func() { 64 65 Context("without any joins", func() { 66 67 BeforeEach(func() { 68 var err error 69 conn, err = accounts.New("sqlite3", sqldb, false, false, false) 70 Expect(err).ToNot(HaveOccurred()) 71 }) 72 73 It("gets existing account by mail", func() { 74 value := "admin@example.org" 75 account, err := conn.GetAccountByLogin(context.Background(), value) 76 Expect(err).ToNot(HaveOccurred()) 77 Expect(account).ToNot(BeNil()) 78 Expect(account.ID).To(Equal(uint64(1))) 79 Expect(account.Email.String).To(Equal("admin@example.org")) 80 Expect(account.UserID).To(Equal("admin")) 81 Expect(account.DisplayName.String).To(Equal("admin")) 82 Expect(account.Quota.String).To(Equal("100 GB")) 83 Expect(account.LastLogin).To(Equal(1619082575)) 84 Expect(account.Backend).To(Equal(`OC\User\Database`)) 85 Expect(account.Home).To(Equal("/mnt/data/files/admin")) 86 Expect(account.State).To(Equal(int8(1))) 87 Expect(account.Username.String).To(Equal("admin")) 88 Expect(account.OwnCloudUUID.String).To(Equal("admin")) 89 }) 90 91 It("gets existing account by username", func() { 92 value := "admin" 93 account, err := conn.GetAccountByLogin(context.Background(), value) 94 Expect(err).ToNot(HaveOccurred()) 95 Expect(account).ToNot(BeNil()) 96 Expect(account.ID).To(Equal(uint64(1))) 97 Expect(account.Email.String).To(Equal("admin@example.org")) 98 Expect(account.UserID).To(Equal("admin")) 99 Expect(account.DisplayName.String).To(Equal("admin")) 100 Expect(account.Quota.String).To(Equal("100 GB")) 101 Expect(account.LastLogin).To(Equal(1619082575)) 102 Expect(account.Backend).To(Equal(`OC\User\Database`)) 103 Expect(account.Home).To(Equal("/mnt/data/files/admin")) 104 Expect(account.State).To(Equal(int8(1))) 105 Expect(account.Username.String).To(Equal("admin")) 106 Expect(account.OwnCloudUUID.String).To(Equal("admin")) 107 }) 108 109 }) 110 111 Context("with username joins", func() { 112 113 BeforeEach(func() { 114 var err error 115 conn, err = accounts.New("sqlite3", sqldb, true, false, false) 116 Expect(err).ToNot(HaveOccurred()) 117 }) 118 119 It("gets existing account by mail", func() { 120 value := "admin@example.org" 121 account, err := conn.GetAccountByLogin(context.Background(), value) 122 Expect(err).ToNot(HaveOccurred()) 123 Expect(account).ToNot(BeNil()) 124 Expect(account.ID).To(Equal(uint64(1))) 125 Expect(account.Email.String).To(Equal("admin@example.org")) 126 Expect(account.UserID).To(Equal("admin")) 127 Expect(account.DisplayName.String).To(Equal("admin")) 128 Expect(account.Quota.String).To(Equal("100 GB")) 129 Expect(account.LastLogin).To(Equal(1619082575)) 130 Expect(account.Backend).To(Equal(`OC\User\Database`)) 131 Expect(account.Home).To(Equal("/mnt/data/files/admin")) 132 Expect(account.State).To(Equal(int8(1))) 133 Expect(account.Username.String).To(Equal("Administrator")) 134 Expect(account.OwnCloudUUID.String).To(Equal("admin")) 135 }) 136 137 It("gets existing account by username", func() { 138 value := "admin" 139 account, err := conn.GetAccountByLogin(context.Background(), value) 140 Expect(err).ToNot(HaveOccurred()) 141 Expect(account).ToNot(BeNil()) 142 Expect(account.ID).To(Equal(uint64(1))) 143 Expect(account.Email.String).To(Equal("admin@example.org")) 144 Expect(account.UserID).To(Equal("admin")) 145 Expect(account.DisplayName.String).To(Equal("admin")) 146 Expect(account.Quota.String).To(Equal("100 GB")) 147 Expect(account.LastLogin).To(Equal(1619082575)) 148 Expect(account.Backend).To(Equal(`OC\User\Database`)) 149 Expect(account.Home).To(Equal("/mnt/data/files/admin")) 150 Expect(account.State).To(Equal(int8(1))) 151 Expect(account.Username.String).To(Equal("Administrator")) 152 Expect(account.OwnCloudUUID.String).To(Equal("admin")) 153 }) 154 }) 155 156 Context("with uuid joins", func() { 157 158 BeforeEach(func() { 159 var err error 160 conn, err = accounts.New("sqlite3", sqldb, false, true, false) 161 Expect(err).ToNot(HaveOccurred()) 162 }) 163 164 It("gets existing account by mail", func() { 165 value := "admin@example.org" 166 account, err := conn.GetAccountByLogin(context.Background(), value) 167 Expect(err).ToNot(HaveOccurred()) 168 Expect(account).ToNot(BeNil()) 169 Expect(account.ID).To(Equal(uint64(1))) 170 Expect(account.Email.String).To(Equal("admin@example.org")) 171 Expect(account.UserID).To(Equal("admin")) 172 Expect(account.DisplayName.String).To(Equal("admin")) 173 Expect(account.Quota.String).To(Equal("100 GB")) 174 Expect(account.LastLogin).To(Equal(1619082575)) 175 Expect(account.Backend).To(Equal(`OC\User\Database`)) 176 Expect(account.Home).To(Equal("/mnt/data/files/admin")) 177 Expect(account.State).To(Equal(int8(1))) 178 Expect(account.Username.String).To(Equal("admin")) 179 Expect(account.OwnCloudUUID.String).To(Equal("7015b5ec-7723-4560-bb96-85e18a947314")) 180 }) 181 182 It("gets existing account by username", func() { 183 value := "admin" 184 account, err := conn.GetAccountByLogin(context.Background(), value) 185 Expect(err).ToNot(HaveOccurred()) 186 Expect(account).ToNot(BeNil()) 187 Expect(account.ID).To(Equal(uint64(1))) 188 Expect(account.Email.String).To(Equal("admin@example.org")) 189 Expect(account.UserID).To(Equal("admin")) 190 Expect(account.DisplayName.String).To(Equal("admin")) 191 Expect(account.Quota.String).To(Equal("100 GB")) 192 Expect(account.LastLogin).To(Equal(1619082575)) 193 Expect(account.Backend).To(Equal(`OC\User\Database`)) 194 Expect(account.Home).To(Equal("/mnt/data/files/admin")) 195 Expect(account.State).To(Equal(int8(1))) 196 Expect(account.Username.String).To(Equal("admin")) 197 Expect(account.OwnCloudUUID.String).To(Equal("7015b5ec-7723-4560-bb96-85e18a947314")) 198 }) 199 200 }) 201 202 Context("with username and uuid joins", func() { 203 204 BeforeEach(func() { 205 var err error 206 conn, err = accounts.New("sqlite3", sqldb, true, true, false) 207 Expect(err).ToNot(HaveOccurred()) 208 }) 209 210 It("gets existing account by mail", func() { 211 value := "admin@example.org" 212 account, err := conn.GetAccountByLogin(context.Background(), value) 213 Expect(err).ToNot(HaveOccurred()) 214 Expect(account).ToNot(BeNil()) 215 Expect(account.ID).To(Equal(uint64(1))) 216 Expect(account.Email.String).To(Equal("admin@example.org")) 217 Expect(account.UserID).To(Equal("admin")) 218 Expect(account.DisplayName.String).To(Equal("admin")) 219 Expect(account.Quota.String).To(Equal("100 GB")) 220 Expect(account.LastLogin).To(Equal(1619082575)) 221 Expect(account.Backend).To(Equal(`OC\User\Database`)) 222 Expect(account.Home).To(Equal("/mnt/data/files/admin")) 223 Expect(account.State).To(Equal(int8(1))) 224 Expect(account.Username.String).To(Equal("Administrator")) 225 Expect(account.OwnCloudUUID.String).To(Equal("7015b5ec-7723-4560-bb96-85e18a947314")) 226 }) 227 228 It("gets existing account by username", func() { 229 value := "Administrator" 230 account, err := conn.GetAccountByLogin(context.Background(), value) 231 Expect(err).ToNot(HaveOccurred()) 232 Expect(account).ToNot(BeNil()) 233 Expect(account.ID).To(Equal(uint64(1))) 234 Expect(account.Email.String).To(Equal("admin@example.org")) 235 Expect(account.UserID).To(Equal("admin")) 236 Expect(account.DisplayName.String).To(Equal("admin")) 237 Expect(account.Quota.String).To(Equal("100 GB")) 238 Expect(account.LastLogin).To(Equal(1619082575)) 239 Expect(account.Backend).To(Equal(`OC\User\Database`)) 240 Expect(account.Home).To(Equal("/mnt/data/files/admin")) 241 Expect(account.State).To(Equal(int8(1))) 242 Expect(account.Username.String).To(Equal("Administrator")) 243 Expect(account.OwnCloudUUID.String).To(Equal("7015b5ec-7723-4560-bb96-85e18a947314")) 244 }) 245 246 }) 247 248 }) 249 250 Describe("GetAccountGroups", func() { 251 BeforeEach(func() { 252 var err error 253 conn, err = accounts.New("sqlite3", sqldb, true, true, false) 254 Expect(err).ToNot(HaveOccurred()) 255 }) 256 It("get admin group for admin account", func() { 257 accounts, err := conn.GetAccountGroups(context.Background(), "admin") 258 Expect(err).ToNot(HaveOccurred()) 259 Expect(len(accounts)).To(Equal(1)) 260 Expect(accounts[0]).To(Equal("admin")) 261 }) 262 It("handles not existing account", func() { 263 accounts, err := conn.GetAccountGroups(context.Background(), "__notexisting__") 264 Expect(err).ToNot(HaveOccurred()) 265 Expect(len(accounts)).To(Equal(0)) 266 }) 267 }) 268 })