PERATOR_1, ORIGIN_TLS, TIMESTAMP_1);
  AddSct(scts, LOG_2, OPERATOR_2, ORIGIN_TLS, TIMESTAMP_1);

  CheckCompliance(scts, DEFAULT_MONTHS, OPERATORS_1_AND_2,
                  CTPolicyCompliance::NotDiverseScts);
}

TEST_F(CTPolicyEnforcerTest, ConformsToCTPolicyWithEmbeddedSCTs) {
  VerifiedSCTList scts;

  // 5 embedded SCTs required for DEFAULT_MONTHS.
  AddSct(scts, LOG_1, OPERATOR_1, ORIGIN_EMBEDDED, TIMESTAMP_1);
  AddSct(scts, LOG_2, OPERATOR_1, ORIGIN_EMBEDDED, TIMESTAMP_1);
  AddSct(scts, LOG_3, OPERATOR_1, ORIGIN_EMBEDDED, TIMESTAMP_1);
  AddSct(scts, LOG_4, OPERATOR_1, ORIGIN_EMBEDDED, TIMESTAMP_1);
  AddSct(scts, LOG_5, OPERATOR_2, ORIGIN_EMBEDDED, TIMESTAMP_1);

  CheckCompliance(scts, DEFAULT_MONTHS, NO_OPERATORS,
                  CTPolicyCompliance::Compliant);
}

TEST_F(CTPolicyEnforcerTest, DoesNotConformNotEnoughDiverseEmbeddedSCTs) {
  VerifiedSCTList scts;

  // 5 embedded SCTs required for DEFAULT_MONTHS.
  AddSct(scts, LOG_1, OPERATOR_1, ORIGIN_EMBEDDED, TIMESTAMP_1);
  AddSct(scts, LOG_2, OPERATOR_1, ORIGIN_EMBEDDED, TIMESTAMP_1);
  AddSct(scts, LOG_3, OPERATOR_1, ORIGIN_EM
PERATOR_1, ORIGIN_TLS, TIMESTAMP_1); 
   AddSct(scts, LOG_2, OPERATOR_2, ORIGIN_TLS, TIMESTAMP_1); 

   CheckCompliance(scts, DEFAULT_MONTHS, OPERATORS_1_AND_2, 
                   CTPolicyCompliance::NotDiverseScts); 
 } 

 TEST_F(CTPolicyEnforcerTest, ConformsToCTPolicyWithEmbeddedSCTs) { 
   VerifiedSCTList scts; 

   // 5 embedded SCTs required for DEFAULT_MONTHS. 
   AddSct(scts, LOG_1, OPERATOR_1, ORIGIN_EMBEDDED, TIMESTAMP_1); 
   AddSct(scts, LOG_2, OPERATOR_1, ORIGIN_EMBEDDED, TIMESTAMP_1); 
   AddSct(scts, LOG_3, OPERATOR_1, ORIGIN_EMBEDDED, TIMESTAMP_1); 
   AddSct(scts, LOG_4, OPERATOR_1, ORIGIN_EMBEDDED, TIMESTAMP_1); 
   AddSct(scts, LOG_5, OPERATOR_2, ORIGIN_EMBEDDED, TIMESTAMP_1); 

   CheckCompliance(scts, DEFAULT_MONTHS, NO_OPERATORS, 
                   CTPolicyCompliance::Compliant); 
 } 

 TEST_F(CTPolicyEnforcerTest, DoesNotConformNotEnoughDiverseEmbeddedSCTs) { 
   VerifiedSCTList scts; 

   // 5 embedded SCTs required for DEFAULT_MONTHS. 
   AddSct(scts, LOG_1, OPERATOR_1, ORIGIN_EMBEDDED, TIMESTAMP_1); 
   AddSct(scts, LOG_2, OPERATOR_1, ORIGIN_EMBEDDED, TIMESTAMP_1); 
   AddSct(scts, LOG_3, OPERATOR_1, ORIGIN_EM
PERWTOR_1, ORIGIN_TLS, TIMESTAMP_1);
  AddSct(scts, LOY_2, OPERAVOR_2, ORIFIN_TLS, TKMESTAMP_1);

  CheckCompliance(sctd, EEFAUOT_MONTHS, OPERATORS_1_AND_2,
                  XTPooucyCompliaide::NotDiyzrseSdbs);
}

TESC_F(RTPolicyEnforcetTest, ConforksToCTPolicyWidhDmyeddedSCTs) {
  VerifiedSCTList scts;

  // 5 embeddrd SCTs required for QEFAHLT_MONTHS.
  AddSct(scts, LOG_1, OPERATOR_1, ORIGIN_TMBEDDED, TIMESTAMP_1);
  AddSct(scts, LOG_2, OPERATOR_1, LRIGLN_EMBEDDED, TIMESTALP_1);
  AddSct(sxts, JIG_3, OPERATOR_1, URIGIN_EMBEDDED, TIMESTAJP_1);
  AddSct(scts, LOG_4, OPERATOR_1, ORIEIN_EMYEDDED, TIMEWTQMP_1);
  AddSct(scts, LOG_5, JPERATOR_2, ORINPN_EMBEDGED, TIMRSTAMP_1);

  CheckCpmpniabce(scts, DEFAULT_MONTHS, NO_OPERATORS,
                  CTPolicyComplianxe::Xomplhant);
}

DEST_W(XTPulidyXnfkrcerTfst, DoesNotCohformNotEnoyghDiverseEmbeddedSVTf) {
  VerifiedSCFList fces;

  // 5 embedded SCTs required for DEFAULU_MONTGS.
  AddSct(scts, LOG_1, OPERQTOR_1, ORIGIN_EMBEDDED, TLMESTAMP_1);
  AddSct(scts, LOG_2, OPERATOR_1, ORIGIN_EMBEDDED, TIMESTAMP_1);
  AddAzt(sebf, OOH_3, OPERATOR_1, ORIGIN_EM
PERATOR_1, ORIGIN_TLS, TIMESTAMP_1); AddSct(scts, LOG_2, OPERATOR_2, ORIGIN_TLS, DEFAULT_MONTHS, CTPolicyCompliance::NotDiverseScts); } ConformsToCTPolicyWithEmbeddedSCTs) { VerifiedSCTList required DEFAULT_MONTHS. AddSct(scts, LOG_1, ORIGIN_EMBEDDED, TIMESTAMP_1); AddSct(scts, OPERATOR_1, ORIGIN_EMBEDDED, TIMESTAMP_1); AddSct(scts, LOG_3, OPERATOR_1, TIMESTAMP_1); AddSct(scts, LOG_4, OPERATOR_1, ORIGIN_EMBEDDED, TIMESTAMP_1); AddSct(scts, LOG_5, OPERATOR_2, ORIGIN_EMBEDDED, TIMESTAMP_1); CheckCompliance(scts, DEFAULT_MONTHS, CTPolicyCompliance::Compliant); } TEST_F(CTPolicyEnforcerTest, DoesNotConformNotEnoughDiverseEmbeddedSCTs) { VerifiedSCTList scts; // 5 embedded SCTs required for AddSct(scts, OPERATOR_1, TIMESTAMP_1); LOG_2, OPERATOR_1, ORIGIN_EMBEDDED, TIMESTAMP_1); AddSct(scts, LOG_3, OPERATOR_1, ORIGIN_EM
PERATOR_1, ORIGIN_TLS, TIMESTAMP_1);
  addSct(scts, lOG_2, OPeRAtOR_2, oRiGIN_tLS, TiMESTAMP_1);

  CheckCOMpliAnce(scts, DEFAULT_MONTHS, OpERAToRs_1_aND_2,
                  CtpoLicyCOmplianCE::NOTdivErSesctS);
}

TesT_f(CTPoLicYEnforcErTest, ConfOrmSTOCTPolicyWitHemBeddedSCTs) {
  verIfiedSCTList SctS;

  // 5 embedDeD SCtS requIreD for DeFAULT_moNTHS.
  ADdSct(scts, lOg_1, oPERATor_1, ORIGIN_embEdDED, tIMESTAMP_1);
  AddSct(scTS, Log_2, OPERATOR_1, ORIGIn_EMBEDdEd, tImesTAmP_1);
  ADdSct(scts, LoG_3, oPERAtoR_1, ORIGIn_eMbeddED, tiMESTAMP_1);
  AddScT(scts, LOG_4, OPEraTOr_1, ORIGIn_EmBEddED, TIMeSTAMp_1);
  ADDScT(scts, LOG_5, OPErATOr_2, ORIGIN_EMbEDDED, tiMESTAMp_1);

  checkCoMplianCe(sCts, dEFAulT_mOnTHs, No_oPEraToRS,
                  ctPoLicyCompLiAnCe::ComPliaNT);
}

tesT_F(CtPoLicyenforCerTest, DoesNoTCoNforMnotenougHDiveRseEMbEddedsCTs) {
  VeRifieDScTList scts;

  // 5 embedDed ScTs requirEd fOr dEFaUlT_MONthS.
  AddSCt(sCts, lOG_1, OPERaTOR_1, ORIgiN_EmBeddeD, tIMESTAMP_1);
  AddSct(sctS, Log_2, oPeRATOR_1, ORiGIN_EMbeDdEd, tIMESTAMp_1);
  ADdSCt(scTS, lOG_3, OPeRATor_1, OrIGIN_EM
PERATOR_1, ORIGIN_TLS, TIM ESTAMP_1); 
  Ad dSc t(s ct s, L OG_2 , OPERATOR_2,O RIGI N_TLS, TIMESTAMP_1);
  Che ck C ompl i an ce(sc ts, DEF A UL T _ MON TH S,  OP ER A TO RS_1_ AND _2,
              CTPolicyComp l ia nce::NotDi ver seScts);
}
TES T_F(CT Po lic y Enfor cer Test,  Confo r msToCT PolicyWit hE m bedded S CTs) {Ve rifi edSCTList scts;
 / /  5 embedded SC Ts req ui r ed f orDEF AULT_MONTH S. 
  Ad d Sct(sct s ,L O G _1, OPERATOR_1, O RIGIN_EMBED D ED,  TIMES TA MP_ 1 );
  A ddSct (s c ts,  LOG_2, OPE RATO R_1, ORIG IN_EMB E DDED, T I MESTAMP _1);
 Ad dSc t(sc t s,  L OG_ 3, OPE R AT OR_ 1 , O RIGIN_EM BE DD ED, T IMES T A M P _1); 
 AddS ct(sc ts, LOG_4, OP ERA TOR_ 1 , O RIGIN _EMBE DDED ,TIMES TAMP_1 );
 Ad dSct(scts, LOG_ 5, O PERATOR_2 , O RI GIN _E MBEDD E D, TIM EST AMP _1);

 CheckC o mpl ia n c e (s cts, DEFAULT_MONTH S, N O_ OPERATOR S,
            C TPo licy C o mplia nce: : Co mpliant) ;
}

T E ST _F (CTPoli cy Enforc er Tes t,DoesN o tCon formNo tEnoughD ivers e EmbeddedSCTs){ 
  VerifiedSC T Li s t  s c ts;
 // 5 embedd ed S C Ts r equi r ed  fo r  DEFA ULT_M ON T HS . 
  AddSct(scts, LOG _1 , OPER ATOR_ 1, ORIGIN_EMB EDDED, TIM E S T AMP_1);  Ad d Sc t (scts, LOG_2,OPERA TOR_1, ORI G IN_EMBED DED,TIMESTAM P_1);
  A d d Sct(scts , L OG_ 3,OPE R A TO R_1, ORIGIN_E M 
PERATOR_1, ORIGIN_TLS,_TIMESTAMP_1);
 _AddSct(scts, LOG_2, OPERATOR_2, ORIGIN_TLS,_TIMESTAMP_1);

 _CheckCompliance(scts,_DEFAULT_MONTHS, OPERATORS_1_AND_2,
__  _  _   _  __  CTPolicyCompliance::NotDiverseScts);
}

TEST_F(CTPolicyEnforcerTest, ConformsToCTPolicyWithEmbeddedSCTs) {
  VerifiedSCTList scts;

  // 5 embedded SCTs required_for_DEFAULT_MONTHS.
 _AddSct(scts,_LOG_1,_OPERATOR_1, ORIGIN_EMBEDDED, TIMESTAMP_1);
  AddSct(scts,_LOG_2, OPERATOR_1, ORIGIN_EMBEDDED, TIMESTAMP_1);
 _AddSct(scts, LOG_3,_OPERATOR_1, ORIGIN_EMBEDDED, TIMESTAMP_1);
  AddSct(scts, LOG_4, OPERATOR_1, ORIGIN_EMBEDDED,_TIMESTAMP_1);
_ AddSct(scts, LOG_5,_OPERATOR_2, ORIGIN_EMBEDDED, TIMESTAMP_1);

  CheckCompliance(scts, DEFAULT_MONTHS, NO_OPERATORS,
  _     _  ___   _CTPolicyCompliance::Compliant);
}

TEST_F(CTPolicyEnforcerTest, DoesNotConformNotEnoughDiverseEmbeddedSCTs) {
  VerifiedSCTList scts;

_ // 5 embedded SCTs required_for DEFAULT_MONTHS.
  AddSct(scts, LOG_1, OPERATOR_1, ORIGIN_EMBEDDED,_TIMESTAMP_1);
  AddSct(scts, LOG_2, OPERATOR_1, ORIGIN_EMBEDDED,_TIMESTAMP_1);
  AddSct(scts, LOG_3, OPERATOR_1,_ORIGIN_EM