@@ -113,15 +113,15 @@ func TestCheckFormat(t *testing.T) {
113113 err string
114114 }{
115115 {"empty (err)" , "" , "" , trustlesshttp.ContentType {}, "neither a valid Accept header nor format parameter were provided" },
116- {"format=bop (err)" , "" , "format=bop" , trustlesshttp .NewContentType (), "invalid format parameter; unsupported: \" bop\" " },
117- {"format=car" , "" , "format=car" , trustlesshttp .NewContentType (), "" },
118- {"plain accept" , "application/vnd.ipld.car" , "" , trustlesshttp .NewContentType (), "" },
119- {"accept dups" , "application/vnd.ipld.car; dups=y" , "" , trustlesshttp .NewContentType (), "" },
120- {"accept no dups" , "application/vnd.ipld.car; dups=n" , "" , trustlesshttp .NewContentType ( trustlesshttp . WithContentTypeDuplicates (false ) ), "" },
121- {"accept no dups and cruft" , "application/vnd.ipld.car; dups=n; bip; bop" , "" , trustlesshttp .NewContentType ( trustlesshttp . WithContentTypeDuplicates (false ) ), "" },
122- {"valid accept but format=bop (err)" , "application/vnd.ipld.car; dups=y" , "format=bop" , trustlesshttp .NewContentType (), "invalid format parameter; unsupported: \" bop\" " },
123- {"valid accept but format=car" , "application/vnd.ipld.car; dups=y" , "format=car" , trustlesshttp .NewContentType (), "" },
124- {"invalid accept but format=car" , "application/vnd.ipld.car; dups=YES!" , "format=car" , trustlesshttp .NewContentType ( trustlesshttp . WithContentTypeDuplicates (false ) ), "invalid Accept header; unsupported" },
116+ {"format=bop (err)" , "" , "format=bop" , trustlesshttp .DefaultContentType (), "invalid format parameter; unsupported: \" bop\" " },
117+ {"format=car" , "" , "format=car" , trustlesshttp .DefaultContentType (), "" },
118+ {"plain accept" , "application/vnd.ipld.car" , "" , trustlesshttp .DefaultContentType (), "" },
119+ {"accept dups" , "application/vnd.ipld.car; dups=y" , "" , trustlesshttp .DefaultContentType (), "" },
120+ {"accept no dups" , "application/vnd.ipld.car; dups=n" , "" , trustlesshttp .DefaultContentType (). WithDuplicates (false ), "" },
121+ {"accept no dups and cruft" , "application/vnd.ipld.car; dups=n; bip; bop" , "" , trustlesshttp .DefaultContentType (). WithDuplicates (false ), "" },
122+ {"valid accept but format=bop (err)" , "application/vnd.ipld.car; dups=y" , "format=bop" , trustlesshttp .DefaultContentType (), "invalid format parameter; unsupported: \" bop\" " },
123+ {"valid accept but format=car" , "application/vnd.ipld.car; dups=y" , "format=car" , trustlesshttp .DefaultContentType (), "" },
124+ {"invalid accept but format=car" , "application/vnd.ipld.car; dups=YES!" , "format=car" , trustlesshttp .DefaultContentType (). WithDuplicates (false ), "invalid Accept header; unsupported" },
125125 } {
126126 t .Run (tc .name , func (t * testing.T ) {
127127 req := & http.Request {}
@@ -143,32 +143,32 @@ func TestCheckFormat(t *testing.T) {
143143
144144func TestParseContentType (t * testing.T ) {
145145 for _ , tc := range []struct {
146- name string
147- accept string
148- expectValidContentType bool
149- expectDups bool
146+ name string
147+ accept string
148+ expectValid bool
149+ expectContentType trustlesshttp. ContentType
150150 }{
151- {"empty (err)" , "" , false , false },
152- {"plain" , "application/vnd.ipld.car" , true , true },
153- {"*/*" , "*/*" , false , false },
154- {"application/*" , "application/*" , false , false },
155- {"dups" , "application/vnd.ipld.car; dups=y" , true , true },
156- {"no dups" , "application/vnd.ipld.car; dups=n" , true , false },
157- {"no dups and cruft" , "application/vnd.ipld.car; dups=n; bip; bop" , true , false },
158- {"version=1" , "application/vnd.ipld.car; version=1; dups=n" , true , false },
159- {"version=2" , "application/vnd.ipld.car; version=2; dups=n" , false , false },
160- {"order=dfs" , "application/vnd.ipld.car; order=dfs; dups=n" , true , false },
161- {"order=unk" , "application/vnd.ipld.car; order=unk; dups=n" , true , false },
162- {"order=bork" , "application/vnd.ipld.car; order=bork; dups=y" , false , false },
163- {"complete" , "application/vnd.ipld.car; order=dfs; dups=y; version=1" , true , true },
164- {"complete (squish)" , "application/vnd.ipld.car;order=dfs;dups=y;version=1" , true , true },
165- {"complete (shuffle)" , "application/vnd.ipld.car;version=1;dups=y;order=dfs;" , true , true },
166- {"complete (cruft)" , "application/vnd.ipld.car;;version=1; bip ; dups=n ;bop;order=dfs;--" , true , false },
151+ {"empty (err)" , "" , false , trustlesshttp. ContentType {} },
152+ {"plain" , "application/vnd.ipld.car" , true , trustlesshttp . DefaultContentType () },
153+ {"*/*" , "*/*" , false , trustlesshttp. ContentType {} },
154+ {"application/*" , "application/*" , false , trustlesshttp. ContentType {} },
155+ {"dups" , "application/vnd.ipld.car; dups=y" , true , trustlesshttp . DefaultContentType () },
156+ {"no dups" , "application/vnd.ipld.car; dups=n" , true , trustlesshttp . DefaultContentType (). WithDuplicates ( false ) },
157+ {"no dups and cruft" , "application/vnd.ipld.car; dups=n; bip; bop" , true , trustlesshttp . DefaultContentType (). WithDuplicates ( false ) },
158+ {"version=1" , "application/vnd.ipld.car; version=1; dups=n" , true , trustlesshttp . DefaultContentType (). WithDuplicates ( false ) },
159+ {"version=2" , "application/vnd.ipld.car; version=2; dups=n" , false , trustlesshttp. ContentType {} },
160+ {"order=dfs" , "application/vnd.ipld.car; order=dfs; dups=n" , true , trustlesshttp . DefaultContentType (). WithDuplicates ( false ) },
161+ {"order=unk" , "application/vnd.ipld.car; order=unk; dups=n" , true , trustlesshttp . DefaultContentType (). WithDuplicates ( false ). WithOrder ( trustlesshttp . ContentTypeOrderUnk ) },
162+ {"order=bork" , "application/vnd.ipld.car; order=bork; dups=y" , false , trustlesshttp. ContentType {} },
163+ {"complete" , "application/vnd.ipld.car; order=dfs; dups=y; version=1" , true , trustlesshttp . DefaultContentType () },
164+ {"complete (squish)" , "application/vnd.ipld.car;order=dfs;dups=y;version=1" , true , trustlesshttp . DefaultContentType () },
165+ {"complete (shuffle)" , "application/vnd.ipld.car;version=1;dups=y;order=dfs;" , true , trustlesshttp . DefaultContentType () },
166+ {"complete (cruft)" , "application/vnd.ipld.car;;version=1; bip ; dups=n ;bop;order=dfs;--" , true , trustlesshttp . DefaultContentType (). WithDuplicates ( false ) },
167167 } {
168168 t .Run (tc .name , func (t * testing.T ) {
169- valid , dups := trustlesshttp .ParseContentType (tc .accept )
170- require .Equal (t , tc .expectValidContentType , valid )
171- require .Equal (t , tc .expectDups , dups )
169+ ct , valid := trustlesshttp .ParseContentType (tc .accept )
170+ require .Equal (t , tc .expectValid , valid )
171+ require .Equal (t , tc .expectContentType , ct )
172172 })
173173 }
174174}
@@ -180,35 +180,35 @@ func TestParseAccept(t *testing.T) {
180180 expected []trustlesshttp.ContentType
181181 }{
182182 {"empty (err)" , "" , []trustlesshttp.ContentType {}},
183- {"plain" , "application/vnd.ipld.car" , []trustlesshttp.ContentType {{Mime : trustlesshttp .MimeTypeCar , Duplicates : true , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 }}},
184- {"*/*" , "*/*" , []trustlesshttp.ContentType {{Mime : "*/*" , Duplicates : true , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 }}},
185- {"application/*" , "application/*" , []trustlesshttp.ContentType {{Mime : "application/*" , Duplicates : true , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 }}},
186- {"dups" , "application/vnd.ipld.car; dups=y" , []trustlesshttp.ContentType {{Mime : trustlesshttp .MimeTypeCar , Duplicates : true , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 }}},
187- {"no dups" , "application/vnd.ipld.car; dups=n" , []trustlesshttp.ContentType {{Mime : trustlesshttp .MimeTypeCar , Duplicates : false , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 }}},
188- {"no dups and cruft" , "application/vnd.ipld.car; dups=n; bip; bop" , []trustlesshttp.ContentType {{Mime : trustlesshttp .MimeTypeCar , Duplicates : false , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 }}},
189- {"version=1" , "application/vnd.ipld.car; version=1; dups=n" , []trustlesshttp.ContentType {{Mime : trustlesshttp .MimeTypeCar , Duplicates : false , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 }}},
183+ {"plain" , "application/vnd.ipld.car" , []trustlesshttp.ContentType {{MimeType : trustlesshttp .MimeTypeCar , Duplicates : true , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 }}},
184+ {"*/*" , "*/*" , []trustlesshttp.ContentType {{MimeType : "*/*" , Duplicates : true , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 }}},
185+ {"application/*" , "application/*" , []trustlesshttp.ContentType {{MimeType : "application/*" , Duplicates : true , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 }}},
186+ {"dups" , "application/vnd.ipld.car; dups=y" , []trustlesshttp.ContentType {{MimeType : trustlesshttp .MimeTypeCar , Duplicates : true , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 }}},
187+ {"no dups" , "application/vnd.ipld.car; dups=n" , []trustlesshttp.ContentType {{MimeType : trustlesshttp .MimeTypeCar , Duplicates : false , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 }}},
188+ {"no dups and cruft" , "application/vnd.ipld.car; dups=n; bip; bop" , []trustlesshttp.ContentType {{MimeType : trustlesshttp .MimeTypeCar , Duplicates : false , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 }}},
189+ {"version=1" , "application/vnd.ipld.car; version=1; dups=n" , []trustlesshttp.ContentType {{MimeType : trustlesshttp .MimeTypeCar , Duplicates : false , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 }}},
190190 {"version=2" , "application/vnd.ipld.car; version=2; dups=n" , []trustlesshttp.ContentType {}},
191- {"order=dfs" , "application/vnd.ipld.car; order=dfs; dups=n" , []trustlesshttp.ContentType {{Mime : trustlesshttp .MimeTypeCar , Duplicates : false , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 }}},
192- {"order=unk" , "application/vnd.ipld.car; order=unk; dups=n" , []trustlesshttp.ContentType {{Mime : trustlesshttp .MimeTypeCar , Duplicates : false , Order : trustlesshttp .ContentTypeOrderUnk , Quality : 1.0 }}},
191+ {"order=dfs" , "application/vnd.ipld.car; order=dfs; dups=n" , []trustlesshttp.ContentType {{MimeType : trustlesshttp .MimeTypeCar , Duplicates : false , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 }}},
192+ {"order=unk" , "application/vnd.ipld.car; order=unk; dups=n" , []trustlesshttp.ContentType {{MimeType : trustlesshttp .MimeTypeCar , Duplicates : false , Order : trustlesshttp .ContentTypeOrderUnk , Quality : 1.0 }}},
193193 {"order=bork" , "application/vnd.ipld.car; order=bork; dups=y" , []trustlesshttp.ContentType {}},
194- {"complete" , "application/vnd.ipld.car; order=dfs; dups=y; version=1" , []trustlesshttp.ContentType {{Mime : trustlesshttp .MimeTypeCar , Duplicates : true , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 }}},
195- {"complete (squish)" , "application/vnd.ipld.car;order=dfs;dups=y;version=1" , []trustlesshttp.ContentType {{Mime : trustlesshttp .MimeTypeCar , Duplicates : true , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 }}},
196- {"complete (shuffle)" , "application/vnd.ipld.car;version=1;dups=y;order=dfs;" , []trustlesshttp.ContentType {{Mime : trustlesshttp .MimeTypeCar , Duplicates : true , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 }}},
197- {"complete (cruft)" , "application/vnd.ipld.car;;version=1; bip ; dups=n ;bop;order=dfs;--" , []trustlesshttp.ContentType {{Mime : trustlesshttp .MimeTypeCar , Duplicates : false , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 }}},
198- {"q" , "application/vnd.ipld.car; order=dfs; q=0.77; dups=n" , []trustlesshttp.ContentType {{Mime : trustlesshttp .MimeTypeCar , Duplicates : false , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 0.77 }}},
194+ {"complete" , "application/vnd.ipld.car; order=dfs; dups=y; version=1" , []trustlesshttp.ContentType {{MimeType : trustlesshttp .MimeTypeCar , Duplicates : true , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 }}},
195+ {"complete (squish)" , "application/vnd.ipld.car;order=dfs;dups=y;version=1" , []trustlesshttp.ContentType {{MimeType : trustlesshttp .MimeTypeCar , Duplicates : true , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 }}},
196+ {"complete (shuffle)" , "application/vnd.ipld.car;version=1;dups=y;order=dfs;" , []trustlesshttp.ContentType {{MimeType : trustlesshttp .MimeTypeCar , Duplicates : true , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 }}},
197+ {"complete (cruft)" , "application/vnd.ipld.car;;version=1; bip ; dups=n ;bop;order=dfs;--" , []trustlesshttp.ContentType {{MimeType : trustlesshttp .MimeTypeCar , Duplicates : false , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 }}},
198+ {"q" , "application/vnd.ipld.car; order=dfs; q=0.77; dups=n" , []trustlesshttp.ContentType {{MimeType : trustlesshttp .MimeTypeCar , Duplicates : false , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 0.77 }}},
199199 {"q=bork" , "application/vnd.ipld.car; order=dfs; q=bork; dups=n" , []trustlesshttp.ContentType {}},
200200 {"q=-1" , "application/vnd.ipld.car; order=dfs; q=-0.1; dups=n" , []trustlesshttp.ContentType {}},
201201
202202 {
203203 "ordered" ,
204204 "application/vnd.ipld.car;dups=n;order=unk;q=0.8, text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.1, application/vnd.ipld.car;dups=y;order=dfs;q=0.9 , application/vnd.ipld.car, application/vnd.ipld.car;dups=y;order=unk;q=0.7, application/vnd.ipld.car;dups=y;order=dfs;q=0.7" ,
205205 []trustlesshttp.ContentType {
206- {Mime : trustlesshttp .MimeTypeCar , Duplicates : true , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 },
207- {Mime : trustlesshttp .MimeTypeCar , Duplicates : true , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 0.9 },
208- {Mime : trustlesshttp .MimeTypeCar , Duplicates : false , Order : trustlesshttp .ContentTypeOrderUnk , Quality : 0.8 },
209- {Mime : trustlesshttp .MimeTypeCar , Duplicates : true , Order : trustlesshttp .ContentTypeOrderUnk , Quality : 0.7 },
210- {Mime : trustlesshttp .MimeTypeCar , Duplicates : true , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 0.7 },
211- {Mime : "*/*" , Duplicates : true , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 0.1 },
206+ {MimeType : trustlesshttp .MimeTypeCar , Duplicates : true , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 1.0 },
207+ {MimeType : trustlesshttp .MimeTypeCar , Duplicates : true , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 0.9 },
208+ {MimeType : trustlesshttp .MimeTypeCar , Duplicates : false , Order : trustlesshttp .ContentTypeOrderUnk , Quality : 0.8 },
209+ {MimeType : trustlesshttp .MimeTypeCar , Duplicates : true , Order : trustlesshttp .ContentTypeOrderUnk , Quality : 0.7 },
210+ {MimeType : trustlesshttp .MimeTypeCar , Duplicates : true , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 0.7 },
211+ {MimeType : "*/*" , Duplicates : true , Order : trustlesshttp .ContentTypeOrderDfs , Quality : 0.1 },
212212 },
213213 },
214214 } {
0 commit comments