@@ -460,7 +460,7 @@ func validateServices(services map[string]Service, expectedServices map[string][
460460 }
461461 found := false
462462 for i , expectedServiceEntry := range expectedServiceEntries {
463- if value .Host == expectedServiceEntry .Host && value .Text == expectedServiceEntry .Text {
463+ if value .Host == expectedServiceEntry .Host && value .Text == expectedServiceEntry .Text && value . Group == expectedServiceEntry . Group {
464464 expectedServiceEntries = append (expectedServiceEntries [:i ], expectedServiceEntries [i + 1 :]... )
465465 found = true
466466 break
@@ -863,3 +863,48 @@ func TestCoreDNSProvider_updateTXTRecords_ClearsExtraText(t *testing.T) {
863863 assert .Equal (t , "txt-value" , services [0 ].Text )
864864 assert .Empty (t , services [1 ].Text )
865865}
866+
867+ func TestApplyChangesAWithGroupServiceTranslation (t * testing.T ) {
868+ client := fakeETCDClient {
869+ map [string ]Service {},
870+ }
871+ coredns := coreDNSProvider {
872+ client : client ,
873+ coreDNSPrefix : defaultCoreDNSPrefix ,
874+ }
875+
876+ changes1 := & plan.Changes {
877+ Create : []* endpoint.Endpoint {
878+ endpoint .NewEndpoint ("domain1.local" , endpoint .RecordTypeA , "5.5.5.5" ).WithProviderSpecific (providerSpecificGroup , "test1" ),
879+ endpoint .NewEndpoint ("domain2.local" , endpoint .RecordTypeA , "5.5.5.6" ).WithProviderSpecific (providerSpecificGroup , "test1" ),
880+ endpoint .NewEndpoint ("domain3.local" , endpoint .RecordTypeA , "5.5.5.7" ).WithProviderSpecific (providerSpecificGroup , "test2" ),
881+ },
882+ }
883+ coredns .ApplyChanges (context .Background (), changes1 )
884+
885+ expectedServices1 := map [string ][]* Service {
886+ "/skydns/local/domain1" : {{Host : "5.5.5.5" , Group : "test1" }},
887+ "/skydns/local/domain2" : {{Host : "5.5.5.6" , Group : "test1" }},
888+ "/skydns/local/domain3" : {{Host : "5.5.5.7" , Group : "test2" }},
889+ }
890+ validateServices (client .services , expectedServices1 , t , 1 )
891+ }
892+
893+ func TestRecordsAWithGroupServiceTranslation (t * testing.T ) {
894+ client := fakeETCDClient {
895+ map [string ]Service {
896+ "/skydns/local/domain1" : {Host : "5.5.5.5" , Group : "test1" },
897+ },
898+ }
899+ coredns := coreDNSProvider {
900+ client : client ,
901+ coreDNSPrefix : defaultCoreDNSPrefix ,
902+ }
903+ endpoints , err := coredns .Records (context .Background ())
904+ require .NoError (t , err )
905+ if prop , ok := endpoints [0 ].GetProviderSpecificProperty (providerSpecificGroup ); ! ok {
906+ t .Error ("go no Group name" )
907+ } else if prop != "test1" {
908+ t .Errorf ("got unexpected Group name: %s != %s" , prop , "test1" )
909+ }
910+ }
0 commit comments