1
1
import { test } from '@agoric/zoe/tools/prepare-test-env-ava.js' ;
2
+ import { M } from '@endo/patterns' ;
2
3
3
4
import { addressTools } from '../../src/utils/address.js' ;
5
+ import { QueryParamsShape } from '../../src/typeGuards.js' ;
4
6
5
7
const FIXTURES = {
6
8
AGORIC_WITH_DYDX :
@@ -32,31 +34,38 @@ test('hasQueryParams: returns false for invalid parameter formats', t => {
32
34
33
35
// getQueryParams tests - positive cases
34
36
test ( 'getQueryParams: correctly parses address with single EUD parameter' , t => {
35
- const result = addressTools . getQueryParams ( FIXTURES . AGORIC_WITH_DYDX ) ;
37
+ const result = addressTools . getQueryParams (
38
+ FIXTURES . AGORIC_WITH_DYDX ,
39
+ QueryParamsShape ,
40
+ ) ;
36
41
t . deepEqual ( result , {
37
- address : 'agoric1bech32addr' ,
38
- params : {
39
- EUD : 'dydx183dejcnmkka5dzcu9xw6mywq0p2m5peks28men' ,
40
- } ,
42
+ EUD : 'dydx183dejcnmkka5dzcu9xw6mywq0p2m5peks28men' ,
41
43
} ) ;
42
44
} ) ;
43
45
44
46
test ( 'getQueryParams: correctly parses address with multiple parameters' , t => {
47
+ const pattern = harden ( { EUD : M . string ( ) , CID : M . string ( ) } ) ;
48
+ const result = addressTools . getQueryParams (
49
+ FIXTURES . AGORIC_WITH_MULTIPLE ,
50
+ pattern ,
51
+ ) ;
52
+ t . deepEqual ( result , {
53
+ EUD : 'osmo183dejcnmkka5dzcu9xw6mywq0p2m5peks28men' ,
54
+ CID : 'dydx-mainnet-1' ,
55
+ } ) ;
56
+ } ) ;
57
+
58
+ test ( 'getQueryParams: returns all parameters when no shape is provided' , t => {
45
59
const result = addressTools . getQueryParams ( FIXTURES . AGORIC_WITH_MULTIPLE ) ;
46
60
t . deepEqual ( result , {
47
- address : 'agoric1bech32addr' ,
48
- params : {
49
- EUD : 'osmo183dejcnmkka5dzcu9xw6mywq0p2m5peks28men' ,
50
- CID : 'dydx-mainnet-1' ,
51
- } ,
61
+ EUD : 'osmo183dejcnmkka5dzcu9xw6mywq0p2m5peks28men' ,
62
+ CID : 'dydx-mainnet-1' ,
52
63
} ) ;
53
64
} ) ;
54
65
55
66
test ( 'getQueryParams: correctly handles address with no parameters' , t => {
56
- const result = addressTools . getQueryParams ( FIXTURES . AGORIC_NO_PARAMS ) ;
57
- t . deepEqual ( result , {
58
- address : 'agoric1bech32addr' ,
59
- params : { } ,
67
+ t . throws ( ( ) => addressTools . getQueryParams ( FIXTURES . AGORIC_NO_PARAMS ) , {
68
+ message : 'Unable to parse query params: "agoric1bech32addr"' ,
60
69
} ) ;
61
70
} ) ;
62
71
@@ -66,7 +75,7 @@ test('getQueryParams: throws error for multiple question marks', t => {
66
75
( ) => addressTools . getQueryParams ( FIXTURES . INVALID_MULTIPLE_QUESTION ) ,
67
76
{
68
77
message :
69
- 'Invalid input. Must be of the form \'address? params\' : "agoric1bech32addr?param1=value1?param2=value2"' ,
78
+ 'Unable to parse query params: "agoric1bech32addr?param1=value1?param2=value2"' ,
70
79
} ,
71
80
) ;
72
81
} ) ;
0 commit comments