11import {
22 DEFAULT_ACCOUNT_GROUP_UNIQUE_ID ,
3+ isAccountGroupId ,
4+ parseAccountGroupId ,
5+ stripAccountWalletId ,
36 toAccountGroupId ,
47 toDefaultAccountGroupId ,
58} from './group' ;
69import { AccountWalletType , toAccountWalletId } from './wallet' ;
10+ import {
11+ MOCK_ENTROPY_GROUP_ID ,
12+ MOCK_ENTROPY_SOURCE_1 ,
13+ MOCK_KEYRING_GROUP_ID ,
14+ MOCK_PRIVATE_KEY_KEYRING_TYPE ,
15+ MOCK_SNAP_1 ,
16+ MOCK_SNAP_2 ,
17+ MOCK_SNAP_LOCAL_GROUP_ID ,
18+ MOCK_SNAP_NPM_GROUP_ID ,
19+ } from '../mocks' ;
20+
21+ const MOCK_INVALID_GROUP_IDS = [
22+ 'invalid-id' ,
23+ 'entropy/01K3KE7FE52Z62S76VMNYNZH3J:0' ,
24+ 'keyring:Simple Key Pair@0x456' ,
25+ ] ;
726
827describe ( 'group' , ( ) => {
928 describe ( 'toAccountGroupId' , ( ) => {
@@ -27,4 +46,120 @@ describe('group', () => {
2746 ) ;
2847 } ) ;
2948 } ) ;
49+
50+ describe ( 'isAccountGroupId' , ( ) => {
51+ it . each ( [
52+ MOCK_ENTROPY_GROUP_ID ,
53+ MOCK_SNAP_LOCAL_GROUP_ID ,
54+ MOCK_SNAP_NPM_GROUP_ID ,
55+ MOCK_KEYRING_GROUP_ID ,
56+ ] ) ( 'returns true if ID is valid: %s' , ( id ) => {
57+ expect ( isAccountGroupId ( id ) ) . toBe ( true ) ;
58+ } ) ;
59+
60+ it . each ( MOCK_INVALID_GROUP_IDS ) (
61+ 'returns false if ID is invalid: %s' ,
62+ ( id ) => {
63+ expect ( isAccountGroupId ( id ) ) . toBe ( false ) ;
64+ } ,
65+ ) ;
66+ } ) ;
67+
68+ describe ( 'parseAccountGroupId' , ( ) => {
69+ it . each ( [
70+ {
71+ id : MOCK_ENTROPY_GROUP_ID ,
72+ parsed : {
73+ wallet : {
74+ id : toAccountWalletId (
75+ AccountWalletType . Entropy ,
76+ MOCK_ENTROPY_SOURCE_1 ,
77+ ) ,
78+ type : AccountWalletType . Entropy ,
79+ subId : MOCK_ENTROPY_SOURCE_1 ,
80+ } ,
81+ subId : '0' ,
82+ } ,
83+ } ,
84+ {
85+ id : MOCK_SNAP_LOCAL_GROUP_ID ,
86+ parsed : {
87+ wallet : {
88+ id : toAccountWalletId ( AccountWalletType . Snap , MOCK_SNAP_1 . id ) ,
89+ type : AccountWalletType . Snap ,
90+ subId : MOCK_SNAP_1 . id ,
91+ } ,
92+ subId : '0x123' ,
93+ } ,
94+ } ,
95+ {
96+ id : MOCK_SNAP_NPM_GROUP_ID ,
97+ parsed : {
98+ wallet : {
99+ id : toAccountWalletId ( AccountWalletType . Snap , MOCK_SNAP_2 . id ) ,
100+ type : AccountWalletType . Snap ,
101+ subId : MOCK_SNAP_2 . id ,
102+ } ,
103+ subId : '0x456' ,
104+ } ,
105+ } ,
106+ {
107+ id : MOCK_KEYRING_GROUP_ID ,
108+ parsed : {
109+ wallet : {
110+ id : toAccountWalletId (
111+ AccountWalletType . Keyring ,
112+ MOCK_PRIVATE_KEY_KEYRING_TYPE ,
113+ ) ,
114+ type : AccountWalletType . Keyring ,
115+ subId : MOCK_PRIVATE_KEY_KEYRING_TYPE ,
116+ } ,
117+ subId : '0x789' ,
118+ } ,
119+ } ,
120+ ] ) ( 'parses account group id for: %s' , ( { id, parsed } ) => {
121+ expect ( parseAccountGroupId ( id ) ) . toStrictEqual ( parsed ) ;
122+ } ) ;
123+
124+ it . each ( MOCK_INVALID_GROUP_IDS ) (
125+ 'fails to parse invalid account group ID' ,
126+ ( id ) => {
127+ expect ( ( ) => parseAccountGroupId ( id ) ) . toThrow (
128+ `Invalid account group ID: "${ id } "` ,
129+ ) ;
130+ } ,
131+ ) ;
132+ } ) ;
133+
134+ describe ( 'stripAccountWalletId' , ( ) => {
135+ it . each ( [
136+ {
137+ id : MOCK_ENTROPY_GROUP_ID ,
138+ stripped : '0' ,
139+ } ,
140+ {
141+ id : MOCK_SNAP_LOCAL_GROUP_ID ,
142+ stripped : '0x123' ,
143+ } ,
144+ {
145+ id : MOCK_SNAP_NPM_GROUP_ID ,
146+ stripped : '0x456' ,
147+ } ,
148+ {
149+ id : MOCK_KEYRING_GROUP_ID ,
150+ stripped : '0x789' ,
151+ } ,
152+ ] ) ( 'get account group sub-ID for: %s' , ( { id, stripped } ) => {
153+ expect ( stripAccountWalletId ( id ) ) . toStrictEqual ( stripped ) ;
154+ } ) ;
155+
156+ it . each ( MOCK_INVALID_GROUP_IDS ) (
157+ 'fails to parse invalid account group ID' ,
158+ ( id ) => {
159+ expect ( ( ) => stripAccountWalletId ( id ) ) . toThrow (
160+ `Invalid account group ID: "${ id } "` ,
161+ ) ;
162+ } ,
163+ ) ;
164+ } ) ;
30165} ) ;
0 commit comments