package tljson import ( "testing" "github.com/go-faster/jx" "github.com/stretchr/testify/require" "go.mau.fi/mautrix-telegram/pkg/gotd/tg" ) const example = `{ "test": 1, "emojies_animated_zoom": 0.625, "emojies_send_dice": [ "\ud83c\udfb2", "\ud83c\udfaf", "\ud83c\udfc0", "\u26bd", "\u26bd\ufe0f", "\ud83c\udfb0", "\ud83c\udfb3" ], "emojies_send_dice_success": { "\ud83c\udfaf": { "value": 6, "frame_start": 62 }, "\ud83c\udfc0": { "value": 5, "frame_start": 110 }, "\u26bd": { "value": 5, "frame_start": 110 }, "\u26bd\ufe0f": { "value": 5, "frame_start": 110 }, "\ud83c\udfb0": { "value": 64, "frame_start": 110 }, "\ud83c\udfb3": { "value": 6, "frame_start": 110 } }, "emojies_sounds": { "\ud83c\udf83": { "id": "4956223179606458539", "access_hash": "-2107001400913062971", "file_reference_base64": "AGFhvoKbftK5O9K9RpgN1ZtgSzWy" }, "\u26b0": { "id": "4956223179606458540", "access_hash": "-1498869544183595185", "file_reference_base64": "AGFhvoJIm8Uz0qSMIdm3AsKlK7wJ" }, "\ud83e\udddf\u200d\u2642": { "id": "4960929110848176331", "access_hash": "3986395821757915468", "file_reference_base64": "AGFhvoLtXSSIclmvfg6ePz3KsHQF" }, "\ud83e\udddf": { "id": "4960929110848176332", "access_hash": "-8929417974289765626", "file_reference_base64": "AGFhvoImaz5Umt4GvMUD5nocIu0W" }, "\ud83e\udddf\u200d\u2640": { "id": "4960929110848176333", "access_hash": "9161696144162881753", "file_reference_base64": "AGFhvoIm1QZsb48xlpRfh4Mq7EMG" }, "\ud83c\udf51": { "id": "4963180910661861548", "access_hash": "-7431729439735063448", "file_reference_base64": "AGFhvoKLrwl_WKr5LR0Jjs7o3RyT" }, "\ud83c\udf8a": { "id": "5094064004578410732", "access_hash": "8518192996098758509", "file_reference_base64": "AGFhvoKMNffRV2J3vKED0O6d8e42" }, "\ud83c\udf84": { "id": "5094064004578410733", "access_hash": "-4142643820629256996", "file_reference_base64": "AGFhvoJ1ulPBbXEURlTZWwJFx6xZ" }, "\ud83e\uddbe": { "id": "5094064004578410734", "access_hash": "-8934384022571962340", "file_reference_base64": "AGFhvoL4zdMRmYv9z3L8KPaX4JQL" } }, "gif_search_branding": "tenor", "gif_search_emojies": [ "\ud83d\udc4d", "\ud83d\ude18", "\ud83d\ude0d", "\ud83d\ude21", "\ud83e\udd73", "\ud83d\ude02", "\ud83d\ude2e", "\ud83d\ude44", "\ud83d\ude0e", "\ud83d\udc4e" ], "stickers_emoji_suggest_only_api": false, "stickers_emoji_cache_time": 86400, "qr_login_camera": false, "qr_login_code": "disabled", "dialog_filters_enabled": true, "dialog_filters_tooltip": false, "autoarchive_setting_available": false, "pending_suggestions": [ "AUTOARCHIVE_POPULAR", "VALIDATE_PASSWORD", "VALIDATE_PHONE_NUMBER", "NEWCOMER_TICKS" ], "autologin_token": "string", "autologin_domains": [ "instantview.telegram.org", "translations.telegram.org", "contest.dev", "contest.com", "bugs.telegram.org", "suggestions.telegram.org", "themes.telegram.org" ], "youtube_pip": "abc", "groupcall_video_participants_max": 1234, "url_auth_domains": [ "somedomain.telegram.org" ], "round_video_encoding": { "diameter": 384, "video_bitrate": 1000, "audio_bitrate": 64, "max_size": 12582912 }, "chat_read_mark_size_threshold": 50, "chat_read_mark_expire_period": 604800, "unknown": null }` func TestDecodeAppConfig(t *testing.T) { a := require.New(t) var appConfig AppConfig obj, err := Decode(jx.DecodeStr(example)) a.NoError(err) a.NoError(appConfig.DecodeJSONValue(obj)) a.Equal(AppConfig{ Test: 1, EmojiesAnimatedZoom: 0.625000, EmojiesSendDice: []string{ "šŸŽ²", "šŸŽÆ", "šŸ€", "⚽", "āš½ļø", "šŸŽ°", "šŸŽ³", }, EmojiesSendDiceSuccess: map[string]EmojiSendDiceSuccess{ "⚽": { Value: 5, FrameStart: 110, }, "āš½ļø": { Value: 5, FrameStart: 110, }, "šŸŽÆ": { Value: 6, FrameStart: 62, }, "šŸŽ°": { Value: 64, FrameStart: 110, }, "šŸŽ³": { Value: 6, FrameStart: 110, }, "šŸ€": { Value: 5, FrameStart: 110, }, }, EmojiesSounds: map[string]EmojiSound{ "⚰": { ID: 4956223179606458540, AccessHash: -1498869544183595185, FileReference: []uint8{ 0x00, 0x61, 0x61, 0xbe, 0x82, 0x48, 0x9b, 0xc5, 0x33, 0xd2, 0xa4, 0x8c, 0x21, 0xd9, 0xb7, 0x02, 0xc2, 0xa5, 0x2b, 0xbc, 0x09, }, }, "šŸ‘": { ID: 4963180910661861548, AccessHash: -7431729439735063448, FileReference: []uint8{ 0x00, 0x61, 0x61, 0xbe, 0x82, 0x8b, 0xaf, 0x09, 0x7f, 0x58, 0xaa, 0xf9, 0x2d, 0x1d, 0x09, 0x8e, 0xce, 0xe8, 0xdd, 0x1c, 0x93, }, }, "šŸŽƒ": { ID: 4956223179606458539, AccessHash: -2107001400913062971, FileReference: []uint8{ 0x00, 0x61, 0x61, 0xbe, 0x82, 0x9b, 0x7e, 0xd2, 0xb9, 0x3b, 0xd2, 0xbd, 0x46, 0x98, 0x0d, 0xd5, 0x9b, 0x60, 0x4b, 0x35, 0xb2, }, }, "šŸŽ„": { ID: 5094064004578410733, AccessHash: -4142643820629256996, FileReference: []uint8{ 0x00, 0x61, 0x61, 0xbe, 0x82, 0x75, 0xba, 0x53, 0xc1, 0x6d, 0x71, 0x14, 0x46, 0x54, 0xd9, 0x5b, 0x02, 0x45, 0xc7, 0xac, 0x59, }, }, "šŸŽŠ": { ID: 5094064004578410732, AccessHash: 8518192996098758509, FileReference: []uint8{ 0x00, 0x61, 0x61, 0xbe, 0x82, 0x8c, 0x35, 0xf7, 0xd1, 0x57, 0x62, 0x77, 0xbc, 0xa1, 0x03, 0xd0, 0xee, 0x9d, 0xf1, 0xee, 0x36, }, }, "🦾": { ID: 5094064004578410734, AccessHash: -8934384022571962340, FileReference: []uint8{ 0x00, 0x61, 0x61, 0xbe, 0x82, 0xf8, 0xcd, 0xd3, 0x11, 0x99, 0x8b, 0xfd, 0xcf, 0x72, 0xfc, 0x28, 0xf6, 0x97, 0xe0, 0x94, 0x0b, }, }, "🧟": { ID: 4960929110848176332, AccessHash: -8929417974289765626, FileReference: []uint8{ 0x00, 0x61, 0x61, 0xbe, 0x82, 0x26, 0x6b, 0x3e, 0x54, 0x9a, 0xde, 0x06, 0xbc, 0xc5, 0x03, 0xe6, 0x7a, 0x1c, 0x22, 0xed, 0x16, }, }, "🧟\u200d♀": { ID: 4960929110848176333, AccessHash: 9161696144162881753, FileReference: []uint8{ 0x00, 0x61, 0x61, 0xbe, 0x82, 0x26, 0xd5, 0x06, 0x6c, 0x6f, 0x8f, 0x31, 0x96, 0x94, 0x5f, 0x87, 0x83, 0x2a, 0xec, 0x43, 0x06, }, }, "🧟\u200d♂": { ID: 4960929110848176331, AccessHash: 3986395821757915468, FileReference: []uint8{ 0x00, 0x61, 0x61, 0xbe, 0x82, 0xed, 0x5d, 0x24, 0x88, 0x72, 0x59, 0xaf, 0x7e, 0x0e, 0x9e, 0x3f, 0x3d, 0xca, 0xb0, 0x74, 0x05, }, }, }, GIFSearchBranding: "tenor", GIFSearchEmojies: []string{ "šŸ‘", "😘", "šŸ˜", "😔", "🄳", "šŸ˜‚", "😮", "šŸ™„", "šŸ˜Ž", "šŸ‘Ž", }, StickersEmojiSuggestOnlyAPI: false, StickersEmojiCacheTime: 86400, GroupCallVideoParticipantsMax: 1234, YoutubePIP: "abc", QRLoginCamera: false, QRLoginCode: "disabled", DialogFiltersEnabled: true, DialogFiltersTooltip: false, AutoArchiveSettingAvailable: false, PendingSuggestions: []string{ "AUTOARCHIVE_POPULAR", "VALIDATE_PASSWORD", "VALIDATE_PHONE_NUMBER", "NEWCOMER_TICKS", }, AutologinToken: "string", AutologinDomains: []string{ "instantview.telegram.org", "translations.telegram.org", "contest.dev", "contest.com", "bugs.telegram.org", "suggestions.telegram.org", "themes.telegram.org", }, URLAuthDomains: []string{ "somedomain.telegram.org", }, RoundVideoEncoding: RoundVideoEncoding{ Diameter: 384, VideoBitrate: 1000, AudioBitrate: 64, MaxSize: 12582912, }, ChatReadMarkExpirePeriod: 604800, ChatReadMarkSizeThreshold: 50, Unparsed: map[string]tg.JSONValueClass{ "unknown": &tg.JSONNull{}, }, }, appConfig) }