@@ -2183,6 +2183,121 @@ func TestICQService_SetWorkInfo(t *testing.T) {
21832183 }
21842184}
21852185
2186+ func TestICQService_ShortUserInfo (t * testing.T ) {
2187+ tests := []struct {
2188+ name string
2189+ timeNow func () time.Time
2190+ seq uint16
2191+ sess * state.Session
2192+ req wire.ICQ_0x07D0_0x04BA_DBQueryMetaReqShortInfo
2193+ mockParams mockParams
2194+ wantErr error
2195+ }{
2196+ {
2197+ name : "happy path" ,
2198+ timeNow : func () time.Time {
2199+ return time .Date (2020 , time .August , 1 , 0 , 0 , 0 , 0 , time .UTC )
2200+ },
2201+ seq : 1 ,
2202+ sess : newTestSession ("11111111" , sessOptUIN (11111111 )),
2203+ req : wire.ICQ_0x07D0_0x04BA_DBQueryMetaReqShortInfo {
2204+ UIN : 123456789 ,
2205+ },
2206+ mockParams : mockParams {
2207+ icqUserFinderParams : icqUserFinderParams {
2208+ findByUINParams : findByUINParams {
2209+ {
2210+ UIN : 123456789 ,
2211+ result : state.User {
2212+ IdentScreenName : state .NewIdentScreenName ("123456789" ),
2213+ ICQPermissions : state.ICQPermissions {
2214+ AuthRequired : true ,
2215+ },
2216+ ICQMoreInfo : state.ICQMoreInfo {
2217+ Gender : 2 ,
2218+ },
2219+ ICQBasicInfo : state.ICQBasicInfo {
2220+ EmailAddress : "john.doe@example.com" ,
2221+ FirstName : "John" ,
2222+ LastName : "Doe" ,
2223+ Nickname : "CoolUser123" ,
2224+ },
2225+ },
2226+ },
2227+ },
2228+ },
2229+ messageRelayerParams : messageRelayerParams {
2230+ relayToScreenNameParams : relayToScreenNameParams {
2231+ {
2232+ screenName : state .NewIdentScreenName ("11111111" ),
2233+ message : wire.SNACMessage {
2234+ Frame : wire.SNACFrame {
2235+ FoodGroup : wire .ICQ ,
2236+ SubGroup : wire .ICQDBReply ,
2237+ },
2238+ Body : wire.SNAC_0x0F_0x02_DBReply {
2239+ TLVRestBlock : wire.TLVRestBlock {
2240+ TLVList : wire.TLVList {
2241+ wire .NewTLV (wire .ICQTLVTagsMetadata , wire.ICQMessageReplyEnvelope {
2242+ Message : wire.ICQ_0x07DA_0x0104_DBQueryMetaReplyShortInfo {
2243+ ICQMetadata : wire.ICQMetadata {
2244+ UIN : 11111111 ,
2245+ ReqType : wire .ICQDBQueryMetaReply ,
2246+ Seq : 1 ,
2247+ },
2248+ Success : wire .ICQStatusCodeOK ,
2249+ ReqSubType : wire .ICQDBQueryMetaReplyShortInfo ,
2250+ Nickname : "CoolUser123" ,
2251+ FirstName : "John" ,
2252+ LastName : "Doe" ,
2253+ Email : "john.doe@example.com" ,
2254+ Authorization : 1 ,
2255+ Gender : 2 ,
2256+ },
2257+ }),
2258+ },
2259+ },
2260+ },
2261+ },
2262+ },
2263+ },
2264+ },
2265+ sessionRetrieverParams : sessionRetrieverParams {
2266+ retrieveSessionParams {
2267+ {
2268+ screenName : state .NewIdentScreenName ("123456789" ),
2269+ result : & state.Session {},
2270+ },
2271+ },
2272+ },
2273+ },
2274+ },
2275+ }
2276+ for _ , tt := range tests {
2277+ t .Run (tt .name , func (t * testing.T ) {
2278+ userFinder := newMockICQUserFinder (t )
2279+ for _ , params := range tt .mockParams .findByUINParams {
2280+ userFinder .EXPECT ().
2281+ FindByUIN (params .UIN ).
2282+ Return (params .result , params .err )
2283+ }
2284+
2285+ messageRelayer := newMockMessageRelayer (t )
2286+ for _ , params := range tt .mockParams .relayToScreenNameParams {
2287+ messageRelayer .EXPECT ().RelayToScreenName (mock .Anything , params .screenName , params .message )
2288+ }
2289+
2290+ s := ICQService {
2291+ messageRelayer : messageRelayer ,
2292+ timeNow : tt .timeNow ,
2293+ userFinder : userFinder ,
2294+ }
2295+ err := s .ShortUserInfo (nil , tt .sess , tt .req , tt .seq )
2296+ assert .NoError (t , err )
2297+ })
2298+ }
2299+ }
2300+
21862301func TestICQService_XMLReqData (t * testing.T ) {
21872302 tests := []struct {
21882303 name string
0 commit comments