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