Skip to content
This repository was archived by the owner on Nov 24, 2020. It is now read-only.

Commit 36bd76d

Browse files
committed
fix database test
1 parent 515e29f commit 36bd76d

2 files changed

Lines changed: 126 additions & 84 deletions

File tree

.travis.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ language: go
55
go:
66
- 1.13.x
77
script:
8-
# - go test --tags="travis" -race -coverprofile=coverage.txt -covermode=atomic ./...
8+
- go test --tags="travis" -race -coverprofile=coverage.txt -covermode=atomic ./...
99
- go build -v ./...
10-
# after_success:
11-
# - bash <(curl -s https://codecov.io/bash)
10+
after_success:
11+
- bash <(curl -s https://codecov.io/bash)

database/database_test.go

Lines changed: 123 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
"testing"
99
"time"
1010

11-
utils "github.com/Varunram/essentials/utils"
11+
"github.com/Varunram/essentials/utils"
1212
xlm "github.com/Varunram/essentials/xlm"
1313
assets "github.com/Varunram/essentials/xlm/assets"
1414
consts "github.com/YaleOpenLab/openx/consts"
@@ -20,7 +20,10 @@ func TestDb(t *testing.T) {
2020
var err error
2121
consts.SetConsts(false)
2222
os.Remove("blahopenx.db")
23-
consts.DbDir = "blah" // set to a false db so that we can test errors arising from OpenDB()
23+
consts.DbDir = "blah" // set to a false db so that we can test errors arising from OpenDB()
24+
xlm.SetConsts(10, false)
25+
consts.StablecoinPublicKey = "GAVEVWKMXVQ2WSCBTR7M5UKRVFFWIA52VP7ISDKZSEJKQS2VYG4D6C6P"
26+
consts.PlatformPublicKey = "GAJJMQAP5KG7GVCOVY2NUUJCVFX72GXZKMUQUCWUGN55EKFS3MXFAMEZ"
2427
CreateHomeDir() // create home directory if it doesn't exist yet
2528
os.Remove(consts.DbDir) // remove the test database file, if it exists
2629
db, err := OpenDB()
@@ -29,100 +32,181 @@ func TestDb(t *testing.T) {
2932
}
3033
db.Close() // close immmediately after check
3134

32-
user, err := NewUser("user1", "blah", "blah", "User1")
35+
username := "testusername"
36+
userpwhash := utils.SHA3hash("testpass")
37+
seedpwd := "x"
38+
email := "User1"
39+
40+
user, err := NewUser(username, userpwhash, seedpwd, email)
3341
if err != nil {
3442
t.Fatal(err)
3543
}
36-
user.AccessToken = "ACCESSTOKEN"
37-
user.AccessTokenTimeout = utils.Unix() + 1000000
38-
err = user.Save()
44+
45+
_, err = CheckUsernameCollision(user.Username)
46+
if err == nil {
47+
t.Fatalf("can't catch username collision")
48+
}
49+
50+
user.Conf = true
51+
52+
accessToken, err := user.GenAccessToken()
3953
if err != nil {
4054
t.Fatal(err)
4155
}
42-
user1, err := RetrieveUser(user.Index)
56+
57+
user, err = RetrieveUser(user.Index)
4358
if err != nil {
4459
t.Fatal(err)
4560
}
46-
if user1.Username != "user1" {
47-
log.Println(user1.Name)
61+
62+
if user.Username != username {
4863
t.Fatalf("Usernames don't match. quitting!")
4964
}
5065

51-
tmpuser, _ := RetrieveUser(1000)
52-
if tmpuser.Index != 0 {
53-
t.Fatalf("Investor shouldn't exist, but does, quitting!")
66+
_, err = ValidateAccessToken(username, accessToken)
67+
if err != nil {
68+
log.Println(err)
69+
t.Fatalf("couldn't validate access token")
70+
}
71+
72+
_, err = ValidateAccessToken(username, "faketoken")
73+
if err == nil {
74+
log.Println(err)
75+
t.Fatalf("didn't fail on fake token")
76+
}
77+
78+
_, err = ValidateAccessToken("fakeusername", accessToken)
79+
if err == nil {
80+
log.Println(err)
81+
t.Fatalf("didn't fail on fake username")
82+
}
83+
84+
_, err = ValidateAccessToken("fakeusername", "faketoken")
85+
if err == nil {
86+
log.Println(err)
87+
t.Fatalf("didn't fail on fake username and token")
88+
}
89+
90+
user.AccessToken[accessToken] = 0
91+
err = user.Save()
92+
if err != nil {
93+
t.Fatal(err)
94+
}
95+
96+
user, err = RetrieveUser(user.Index)
97+
if err != nil {
98+
t.Fatal(err)
99+
}
100+
101+
_, err = ValidateAccessToken(username, accessToken)
102+
if err == nil {
103+
log.Println(err)
104+
t.Fatalf("didn't error out on token timeout")
105+
}
106+
107+
user1000, _ := RetrieveUser(1000)
108+
if user1000.Index != 0 {
109+
t.Fatalf("User shouldn't exist, but does, quitting!")
54110
}
55111

56112
allUsers, err := RetrieveAllUsers()
57113
if err != nil {
58114
t.Fatal(err)
59115
}
116+
60117
if len(allUsers) != 1 {
61118
t.Fatalf("Unknown users existing, quitting!")
62119
}
63120

64-
_, err = ValidateAccessToken("user1", "ACCESSTOKEN")
121+
err = user.GenKeys(seedpwd)
65122
if err != nil {
66-
log.Println(err)
67-
t.Fatalf("Data in bucket morphed, quitting!")
123+
t.Fatalf("Not able to generate keys, quitting!")
124+
}
125+
126+
_, err = ValidateSeedpwd(username, userpwhash, seedpwd)
127+
if err != nil {
128+
t.Fatal(err)
68129
}
69130

70-
_, err = ValidateAccessToken("blah", "ACCESSTOKEN")
131+
_, err = ValidateSeedpwd("fakeusername", userpwhash, seedpwd)
71132
if err == nil {
72-
log.Println(err)
73-
t.Fatalf("Data in bucket morphed, quitting!")
133+
t.Fatalf("can't catch fake username")
134+
}
135+
136+
_, err = ValidateSeedpwd(user.Username, user.Pwhash, "fakeseedpwd")
137+
if err == nil {
138+
t.Fatalf("can't catch fake seedpwd")
139+
}
140+
141+
fakeEmailUser, _ := SearchWithEmailID("fakeemail")
142+
if fakeEmailUser.Index != 0 {
143+
t.Fatalf("user with invalid email exists")
74144
}
75145

76-
err = user.GenKeys("blah")
146+
err = user.AddEmail(email)
77147
if err != nil {
78-
t.Fatalf("Not able to generate keys, quitting!")
148+
t.Fatal(err)
149+
}
150+
151+
_, err = SearchWithEmailID(email)
152+
if err != nil {
153+
t.Fatal(err)
154+
}
155+
156+
accessToken, err = user.GenAccessToken()
157+
if err != nil {
158+
t.Fatal(err)
79159
}
80160

81-
_, err = ValidateSeedpwd(user.Username, user.Pwhash, "blah")
161+
_, err = ValidateSeedpwdAuthToken(user.Username, accessToken, seedpwd)
82162
if err != nil {
83163
t.Fatal(err)
84164
}
85165

86-
_, err = ValidateSeedpwd("shouldfail", user.Pwhash, "blah")
166+
_, err = ValidateSeedpwdAuthToken("fakeusername", accessToken, seedpwd)
87167
if err == nil {
88-
t.Fatalf("can't catch wrong username")
168+
t.Fatalf("not able to detect fake username")
89169
}
90170

91-
_, err = ValidateSeedpwd(user.Username, user.Pwhash, "shouldfail")
171+
_, err = ValidateSeedpwdAuthToken(user.Username, "fakeaccesstoken", seedpwd)
92172
if err == nil {
93-
t.Fatalf("can't catch wrong seedpwd")
173+
t.Fatalf("not able to detect fake access token")
94174
}
95175

96-
err = user.GenKeys("algorand", "algorand")
176+
_, err = ValidateSeedpwdAuthToken(user.Username, accessToken, "fakeseedpwd")
97177
if err == nil {
98-
t.Fatalf("able to generate algorand keys even when daemon is not running")
178+
t.Fatalf("not able to detect fake seedpwd")
99179
}
100180

101-
err = xlm.GetXLM(user.StellarWallet.PublicKey)
181+
err = xlm.GetXLM(user.SecondaryWallet.PublicKey)
102182
if err != nil {
103183
t.Fatal(err)
104184
}
105185

106-
err = xlm.GetXLM(user.SecondaryWallet.PublicKey)
186+
err = xlm.GetXLM(user.StellarWallet.PublicKey)
107187
if err != nil {
108188
t.Fatal(err)
109189
}
110190

111191
time.Sleep(5 * time.Second)
112-
err = user.IncreaseTrustLimit("blah", 10)
192+
err = user.IncreaseTrustLimit(seedpwd, 10)
113193
if err != nil {
114194
t.Fatal(err)
115195
}
116-
_ = build.CreditAsset{"blah", user.StellarWallet.PublicKey}
117-
pkSeed, _, err := xlm.GetKeyPair()
196+
197+
pkSeed, pk, err := xlm.GetKeyPair()
118198
if err != nil {
119199
t.Fatal(err)
120200
}
121-
_ = build.CreditAsset{"blah2", pkSeed} // this account doesn't exist yet, so this should fail
122-
_, err = assets.TrustAsset("blah2", "", -1, "blah")
201+
202+
assetCode := "assetcode"
203+
_ = build.CreditAsset{Code: assetCode, Issuer: pkSeed} // this account doesn't exist yet, so this should fail
204+
205+
_, err = assets.TrustAsset(assetCode, pk, -1, seedpwd)
123206
if err == nil {
124207
t.Fatalf("can trust invalid asset")
125208
}
209+
126210
_, err = RetrieveAllUsersWithoutKyc()
127211
if err != nil {
128212
t.Fatal(err)
@@ -198,11 +282,7 @@ func TestDb(t *testing.T) {
198282
if err != nil {
199283
t.Fatal(err)
200284
}
201-
testuser, _ := SearchWithEmailID("blahx@blah.com")
202-
if testuser.Index != 0 {
203-
t.Fatalf("user with invalid email exists")
204-
}
205-
err = user.MoveFundsFromSecondaryWallet(10, "blah")
285+
err = user.MoveFundsFromSecondaryWallet(10, seedpwd)
206286
if err != nil {
207287
t.Fatal(err)
208288
}
@@ -214,11 +294,11 @@ func TestDb(t *testing.T) {
214294
if err == nil {
215295
t.Fatalf("can transfer more amount than possessed")
216296
}
217-
err = user.MoveFundsFromSecondaryWallet(-1, "blah")
297+
err = user.MoveFundsFromSecondaryWallet(-1, seedpwd)
218298
if err == nil {
219299
t.Fatalf("not able to catch invalid amount error")
220300
}
221-
err = user.SweepSecondaryWallet("blah")
301+
err = user.SweepSecondaryWallet(seedpwd)
222302
if err != nil {
223303
t.Fatal(err)
224304
}
@@ -230,31 +310,7 @@ func TestDb(t *testing.T) {
230310
if err != nil {
231311
t.Fatal(err)
232312
}
233-
token, err := user.GenAccessToken()
234-
if err != nil {
235-
t.Fatal(err)
236-
}
237-
_, err = ValidateSeedpwdAuthToken(user.Username, token, "blah")
238-
if err != nil {
239-
t.Fatal(err)
240-
}
241-
242-
_, err = ValidateSeedpwdAuthToken("fakeusername", token, "blah")
243-
if err == nil {
244-
t.Fatalf("not able to detect fake username")
245-
}
246-
247-
_, err = ValidateSeedpwdAuthToken(user.Username, "fakeaccesstoken", "blah")
248-
if err == nil {
249-
t.Fatalf("not able to detect fake access token")
250-
}
251-
252-
_, err = ValidateSeedpwdAuthToken(user.Username, token, "fakeseedpwd")
253-
if err == nil {
254-
t.Fatalf("not able to detect fake seedpwd")
255-
}
256-
257-
err = user.AddtoMailbox("test", "test")
313+
err = user.AddtoMailbox("subject", "message")
258314
if err != nil {
259315
t.Fatal(err)
260316
}
@@ -263,7 +319,7 @@ func TestDb(t *testing.T) {
263319
if err == nil {
264320
t.Fatalf("able to decrypt empty byte array")
265321
}
266-
err = user.ImportSeed(user.StellarWallet.EncryptedSeed, user.StellarWallet.PublicKey, "blah")
322+
err = user.ImportSeed(user.StellarWallet.EncryptedSeed, user.StellarWallet.PublicKey, seedpwd)
267323
if err != nil {
268324
t.Fatal(err)
269325
}
@@ -283,24 +339,10 @@ func TestDb(t *testing.T) {
283339
if err == nil {
284340
t.Fatalf("able to give more feedback than 5")
285341
}
286-
287342
err = user.GiveFeedback(user.Index, 5)
288343
if err != nil {
289344
t.Fatal(err)
290345
}
291-
err = user.AddEmail("ghost@ghosts.com")
292-
if err != nil {
293-
t.Fatal(err)
294-
}
295-
_, err = CheckUsernameCollision(user.Username)
296-
if err == nil {
297-
t.Fatalf("can't catch username collision")
298-
}
299-
user.Admin = true
300-
err = user.Save()
301-
if err != nil {
302-
t.Fatal(err)
303-
}
304346
_, err = RetrieveAllAdmins()
305347
if err != nil {
306348
t.Fatal(err)

0 commit comments

Comments
 (0)