@@ -488,10 +488,15 @@ func createTempHomeDirWithConfig(t *testing.T, basePathToTests string, testCase
488488func TestCurationHeaders (t * testing.T ) {
489489 // Test that batch ID generation works correctly
490490 headerValue := generateWaiverHeaderValue ()
491- assert .True (t , strings .HasPrefix (headerValue , "syn_JFrog-Curation-Client_batch_" ))
492- assert .Len (t , strings .Split (headerValue , "_" ), 4 ) // syn_JFrog-Curation-Client_batch_<id>
493491
494- // Test that completed request adds "_completed" suffix
492+ // Verify it's valid JSON with batch_id
493+ var headerData map [string ]interface {}
494+ err := json .Unmarshal ([]byte (headerValue ), & headerData )
495+ require .NoError (t , err )
496+ assert .Contains (t , headerData , "batch_id" )
497+ assert .NotEmpty (t , headerData ["batch_id" ])
498+
499+ // Test that completed request adds "completed" flag
495500 var capturedHeader http.Header
496501 testHandler := func (w http.ResponseWriter , r * http.Request ) {
497502 capturedHeader = r .Header .Clone ()
@@ -506,22 +511,73 @@ func TestCurationHeaders(t *testing.T) {
506511 require .NoError (t , err )
507512 rtManager , err := rtUtils .CreateServiceManager (mockServerDetails , 2 , 0 , false )
508513 require .NoError (t , err )
509-
510514 analyzer := & treeAnalyzer {
511515 rtManager : rtManager ,
512516 httpClientDetails : rtAuth .CreateHttpClientDetails (),
513517 }
514-
515- // Use real header format like: syn_JFrog-Curation-Client_batch_a3404ff3
516- waiverHeaderValue = "syn_JFrog-Curation-Client_batch_a3404ff3"
518+ // Use JSON header format like: {"batch_id":"196c55b0-5724-4a94-aa45-9b0bfd658985"}
519+ waiverHeaderValue = `{"batch_id":"196c55b0-5724-4a94-aa45-9b0bfd658985"}`
517520 testUrl := mockServerDetails .GetArtifactoryUrl () + "/test/pkg"
518521 err = analyzer .sendCompletedRequest (testUrl )
519522 assert .NoError (t , err )
520-
521- // Verify the header has "_completed" suffix
522523 assert .NotNil (t , capturedHeader )
523524 waiverHeader := capturedHeader ["X-Artifactory-Curation-Request-Waiver" ]
524- assert .Equal (t , "syn_JFrog-Curation-Client_batch_a3404ff3_completed" , waiverHeader [0 ])
525+
526+ // Parse the completed header JSON
527+ var completedHeaderData map [string ]interface {}
528+ err = json .Unmarshal ([]byte (waiverHeader [0 ]), & completedHeaderData )
529+ require .NoError (t , err )
530+ assert .Equal (t , "196c55b0-5724-4a94-aa45-9b0bfd658985" , completedHeaderData ["batch_id" ])
531+ assert .Equal (t , true , completedHeaderData ["completed" ])
532+ }
533+
534+ func TestCurationSynHeader (t * testing.T ) {
535+ // Test that syn field is added correctly to the header
536+ headerValue := generateWaiverHeaderValue ()
537+
538+ // Verify it's valid JSON with batch_id
539+ var headerData map [string ]interface {}
540+ err := json .Unmarshal ([]byte (headerValue ), & headerData )
541+ require .NoError (t , err )
542+ assert .Contains (t , headerData , "batch_id" )
543+ assert .NotEmpty (t , headerData ["batch_id" ])
544+
545+ // Add syn field (simulating what happens in getBlockedPackageDetails)
546+ headerData ["syn" ] = true
547+ synHeaderData , err := json .Marshal (headerData )
548+ require .NoError (t , err )
549+
550+ // Verify the final JSON contains both batch_id and syn
551+ var finalHeaderData map [string ]interface {}
552+ err = json .Unmarshal (synHeaderData , & finalHeaderData )
553+ require .NoError (t , err )
554+ assert .Equal (t , true , finalHeaderData ["syn" ])
555+ assert .Contains (t , finalHeaderData , "batch_id" )
556+ }
557+
558+ func TestAddFieldToWaiverHeader (t * testing.T ) {
559+ // Test the helper function directly
560+ waiverHeaderValue = `{"batch_id":"test-batch-123"}`
561+
562+ // Add syn field
563+ synHeader , err := addFieldToWaiverHeader ("syn" , true )
564+ require .NoError (t , err )
565+
566+ var synData map [string ]interface {}
567+ err = json .Unmarshal ([]byte (synHeader ), & synData )
568+ require .NoError (t , err )
569+ assert .Equal (t , "test-batch-123" , synData ["batch_id" ])
570+ assert .Equal (t , true , synData ["syn" ])
571+
572+ // Add completed field
573+ completedHeader , err := addFieldToWaiverHeader ("completed" , true )
574+ require .NoError (t , err )
575+
576+ var completedData map [string ]interface {}
577+ err = json .Unmarshal ([]byte (completedHeader ), & completedData )
578+ require .NoError (t , err )
579+ assert .Equal (t , "test-batch-123" , completedData ["batch_id" ])
580+ assert .Equal (t , true , completedData ["completed" ])
525581}
526582
527583func setCurationFlagsForTest (t * testing.T ) func () {
0 commit comments