@@ -20,26 +20,18 @@ describe('resolveConnectCatalogRequest', () => {
2020 allowBuiltInFallback : true ,
2121 } ,
2222 } ) ;
23- expect ( resolveConnectCatalogRequest ( 'ignored text' ) ) . toEqual ( {
24- kind : 'ok' ,
25- request : {
26- url : DEFAULT_CATALOG_URL ,
27- preferBuiltIn : true ,
28- allowBuiltInFallback : true ,
29- } ,
30- } ) ;
3123 } ) ;
3224
33- it ( 'forces an online fetch when -- refresh is requested' , ( ) => {
34- expect ( resolveConnectCatalogRequest ( '-- refresh' ) ) . toEqual ( {
25+ it ( 'forces an online fetch when refresh is requested' , ( ) => {
26+ expect ( resolveConnectCatalogRequest ( 'refresh' ) ) . toEqual ( {
3527 kind : 'ok' ,
3628 request : {
3729 url : DEFAULT_CATALOG_URL ,
3830 preferBuiltIn : false ,
3931 allowBuiltInFallback : true ,
4032 } ,
4133 } ) ;
42- expect ( resolveConnectCatalogRequest ( ' -- refresh ' ) ) . toEqual ( {
34+ expect ( resolveConnectCatalogRequest ( ' refresh ' ) ) . toEqual ( {
4335 kind : 'ok' ,
4436 request : {
4537 url : DEFAULT_CATALOG_URL ,
@@ -49,24 +41,18 @@ describe('resolveConnectCatalogRequest', () => {
4941 } ) ;
5042 } ) ;
5143
52- it ( 'treats explicit catalog URLs as authoritative and ignores --refresh on them' , ( ) => {
53- expect ( resolveConnectCatalogRequest ( '--url=https://internal.example/catalog.json' ) ) . toEqual ( {
54- kind : 'ok' ,
55- request : {
56- url : 'https://internal.example/catalog.json' ,
57- preferBuiltIn : false ,
58- allowBuiltInFallback : false ,
59- } ,
60- } ) ;
61- expect ( resolveConnectCatalogRequest ( '--url https://internal.example/catalog.json' ) ) . toEqual ( {
44+ it ( 'treats explicit catalog URLs as authoritative and ignores refresh on them' , ( ) => {
45+ expect ( resolveConnectCatalogRequest ( 'https://internal.example/catalog.json' ) ) . toEqual ( {
6246 kind : 'ok' ,
6347 request : {
6448 url : 'https://internal.example/catalog.json' ,
6549 preferBuiltIn : false ,
6650 allowBuiltInFallback : false ,
6751 } ,
6852 } ) ;
69- expect ( resolveConnectCatalogRequest ( 'https://internal.example/catalog.json' ) ) . toEqual ( {
53+ expect (
54+ resolveConnectCatalogRequest ( 'refresh https://internal.example/catalog.json' ) ,
55+ ) . toEqual ( {
7056 kind : 'ok' ,
7157 request : {
7258 url : 'https://internal.example/catalog.json' ,
@@ -75,7 +61,7 @@ describe('resolveConnectCatalogRequest', () => {
7561 } ,
7662 } ) ;
7763 expect (
78- resolveConnectCatalogRequest ( '--refresh --url= https://internal.example/catalog.json' ) ,
64+ resolveConnectCatalogRequest ( 'https://internal.example/catalog.json refresh ' ) ,
7965 ) . toEqual ( {
8066 kind : 'ok' ,
8167 request : {
@@ -86,38 +72,36 @@ describe('resolveConnectCatalogRequest', () => {
8672 } ) ;
8773 } ) ;
8874
89- it ( 'rejects --url when no value or a non-URL value is provided' , ( ) => {
90- const expectedMessage =
91- '--url requires an http(s) URL value, e.g. /connect --url=https://example.com/catalog.json' ;
92- expect ( resolveConnectCatalogRequest ( '--url' ) ) . toEqual ( {
93- kind : 'error' ,
94- message : expectedMessage ,
95- } ) ;
96- expect ( resolveConnectCatalogRequest ( '--url=' ) ) . toEqual ( {
97- kind : 'error' ,
98- message : expectedMessage ,
99- } ) ;
100- expect ( resolveConnectCatalogRequest ( ' --url ' ) ) . toEqual ( {
75+ it ( 'rejects unsupported flags' , ( ) => {
76+ const flagMessage = ( flag : string ) =>
77+ `Unexpected flag "${ flag } ". Use /connect [url] [refresh] instead.` ;
78+ expect ( resolveConnectCatalogRequest ( '--refresh' ) ) . toEqual ( {
10179 kind : 'error' ,
102- message : expectedMessage ,
80+ message : flagMessage ( '--refresh' ) ,
10381 } ) ;
104- expect ( resolveConnectCatalogRequest ( '--refresh -- url' ) ) . toEqual ( {
82+ expect ( resolveConnectCatalogRequest ( '--url=https://internal.example/catalog.json ' ) ) . toEqual ( {
10583 kind : 'error' ,
106- message : expectedMessage ,
84+ message : flagMessage ( '--url=https://internal.example/catalog.json' ) ,
10785 } ) ;
108- // Flag-like tokens after --url must not be swallowed as the URL value.
109- expect ( resolveConnectCatalogRequest ( '--url --refresh' ) ) . toEqual ( {
86+ expect ( resolveConnectCatalogRequest ( '--url https://internal.example/catalog.json' ) ) . toEqual ( {
11087 kind : 'error' ,
111- message : expectedMessage ,
88+ message : flagMessage ( '--url' ) ,
11289 } ) ;
113- // Plain non-URL tokens must also be rejected, not silently used.
114- expect ( resolveConnectCatalogRequest ( '--url not-a-url' ) ) . toEqual ( {
90+ } ) ;
91+
92+ it ( 'rejects non-URL bare tokens' , ( ) => {
93+ expect ( resolveConnectCatalogRequest ( 'ignored text' ) ) . toEqual ( {
11594 kind : 'error' ,
116- message : expectedMessage ,
95+ message : 'Unknown argument "ignored". Usage: /connect [url] [refresh]' ,
11796 } ) ;
118- expect ( resolveConnectCatalogRequest ( '--url=ftp://example.com/x' ) ) . toEqual ( {
97+ } ) ;
98+
99+ it ( 'rejects multiple URLs' , ( ) => {
100+ expect (
101+ resolveConnectCatalogRequest ( 'https://a.com/x.json https://b.com/y.json' ) ,
102+ ) . toEqual ( {
119103 kind : 'error' ,
120- message : expectedMessage ,
104+ message : 'Only one catalog URL can be provided. Got "https://a.com/x.json" and "https://b.com/y.json".' ,
121105 } ) ;
122106 } ) ;
123107} ) ;
0 commit comments