@@ -16,44 +16,113 @@ import (
16
16
17
17
const testFile string = "aim_test.db"
18
18
19
- func TestUserStore (t * testing.T ) {
19
+ func TestSQLiteUserStore_FeedbagUpsert (t * testing.T ) {
20
+ t .Run ("buddy screen name is converted to ident screen name" , func (t * testing.T ) {
21
+ defer func () {
22
+ assert .NoError (t , os .Remove (testFile ))
23
+ }()
20
24
21
- screenName := NewIdentScreenName ("sn2day" )
25
+ f , err := NewSQLiteUserStore (testFile )
26
+ assert .NoError (t , err )
22
27
23
- defer func () {
24
- assert .NoError (t , os .Remove (testFile ))
25
- }()
28
+ given := []wire.FeedbagItem {
29
+ {
30
+ GroupID : 0 ,
31
+ ItemID : 1805 ,
32
+ ClassID : wire .FeedbagClassIdBuddy ,
33
+ Name : "my Friend Bill" ,
34
+ TLVLBlock : wire.TLVLBlock {},
35
+ },
36
+ {
37
+ GroupID : 0x0A ,
38
+ ItemID : 0 ,
39
+ ClassID : wire .FeedbagClassIdGroup ,
40
+ Name : "Friends" ,
41
+ },
42
+ }
43
+ expect := []wire.FeedbagItem {
44
+ {
45
+ GroupID : 0 ,
46
+ ItemID : 1805 ,
47
+ ClassID : wire .FeedbagClassIdBuddy ,
48
+ Name : "myfriendbill" ,
49
+ TLVLBlock : wire.TLVLBlock {},
50
+ },
51
+ {
52
+ GroupID : 0x0A ,
53
+ ItemID : 0 ,
54
+ ClassID : wire .FeedbagClassIdGroup ,
55
+ Name : "Friends" ,
56
+ },
57
+ }
26
58
27
- f , err := NewSQLiteUserStore (testFile )
28
- assert .NoError (t , err )
59
+ me := NewIdentScreenName ("me" )
60
+ if err := f .FeedbagUpsert (me , given ); err != nil {
61
+ t .Fatalf ("failed to upsert: %s" , err .Error ())
62
+ }
29
63
30
- itemsIn := []wire.FeedbagItem {
31
- {
32
- GroupID : 0 ,
33
- ItemID : 1805 ,
34
- ClassID : 3 ,
35
- Name : "spimmer1234" ,
36
- TLVLBlock : wire.TLVLBlock {},
37
- },
38
- {
39
- GroupID : 0x0A ,
40
- ItemID : 0 ,
41
- ClassID : 1 ,
42
- Name : "Friends" ,
43
- },
44
- }
45
- if err := f .FeedbagUpsert (screenName , itemsIn ); err != nil {
46
- t .Fatalf ("failed to upsert: %s" , err .Error ())
47
- }
64
+ have , err := f .Feedbag (me )
65
+ assert .NoError (t , err )
66
+ assert .ElementsMatch (t , expect , have )
67
+ })
48
68
49
- itemsOut , err := f . Feedbag ( screenName )
50
- if err != nil {
51
- t . Fatalf ( "failed to retrieve: %s" , err . Error ( ))
52
- }
69
+ t . Run ( "upsert PD info with mode" , func ( t * testing. T ) {
70
+ defer func () {
71
+ assert . NoError ( t , os . Remove ( testFile ))
72
+ }()
53
73
54
- if ! reflect .DeepEqual (itemsIn , itemsOut ) {
55
- t .Fatalf ("items did not match:\n in: %v\n out: %v" , itemsIn , itemsOut )
56
- }
74
+ f , err := NewSQLiteUserStore (testFile )
75
+ assert .NoError (t , err )
76
+
77
+ given := []wire.FeedbagItem {
78
+ {
79
+ GroupID : 0x0A ,
80
+ ItemID : 0 ,
81
+ ClassID : wire .FeedbagClassIdPdinfo ,
82
+ TLVLBlock : wire.TLVLBlock {
83
+ TLVList : wire.TLVList {
84
+ wire .NewTLVBE (wire .FeedbagAttributesPdMode , wire .FeedbagPDModePermitSome ),
85
+ },
86
+ },
87
+ },
88
+ }
89
+
90
+ me := NewIdentScreenName ("me" )
91
+ err = f .FeedbagUpsert (me , given )
92
+ assert .NoError (t , err )
93
+
94
+ var pdMode uint8
95
+ err = f .db .QueryRow (`SELECT pdMode from feedbag WHERE screenName = ?` , me .String ()).Scan (& pdMode )
96
+ assert .NoError (t , err )
97
+ assert .Equal (t , wire .FeedbagPDMode (pdMode ), wire .FeedbagPDModePermitSome )
98
+ })
99
+
100
+ t .Run ("upsert PD info without mode (QIP behavior)" , func (t * testing.T ) {
101
+ defer func () {
102
+ assert .NoError (t , os .Remove (testFile ))
103
+ }()
104
+
105
+ f , err := NewSQLiteUserStore (testFile )
106
+ assert .NoError (t , err )
107
+
108
+ given := []wire.FeedbagItem {
109
+ {
110
+ GroupID : 0x0A ,
111
+ ItemID : 0 ,
112
+ ClassID : wire .FeedbagClassIdPdinfo ,
113
+ TLVLBlock : wire.TLVLBlock {},
114
+ },
115
+ }
116
+
117
+ me := NewIdentScreenName ("me" )
118
+ err = f .FeedbagUpsert (me , given )
119
+ assert .NoError (t , err )
120
+
121
+ var pdMode uint8
122
+ err = f .db .QueryRow (`SELECT pdMode from feedbag WHERE screenName = ?` , me .String ()).Scan (& pdMode )
123
+ assert .NoError (t , err )
124
+ assert .Equal (t , wire .FeedbagPDMode (pdMode ), wire .FeedbagPDModePermitAll )
125
+ })
57
126
}
58
127
59
128
func TestFeedbagDelete (t * testing.T ) {
0 commit comments