@@ -677,6 +677,11 @@ describe('Poller', () => {
677677 } )
678678
679679 it ( 'creates new secret' , async ( ) => {
680+ const notFoundError = new Error ( 'Not Found' )
681+ notFoundError . statusCode = 404
682+ const kubeSecret = sinon . mock ( )
683+ kubeSecret . get = sinon . stub ( ) . throws ( notFoundError )
684+ kubeNamespaceMock . secrets = sinon . stub ( ) . returns ( kubeSecret )
680685 kubeNamespaceMock . secrets . post = sinon . stub ( ) . resolves ( )
681686
682687 await poller . _upsertKubernetesSecret ( )
@@ -696,18 +701,88 @@ describe('Poller', () => {
696701 } ) ) . to . equal ( true )
697702 } )
698703
704+ it ( "doesn't update a secret if it hasn't changed" , async ( ) => {
705+ const kubeSecret = sinon . mock ( )
706+ kubeSecret . put = sinon . stub ( )
707+ kubeSecret . get = sinon . stub ( ) . returns ( {
708+ body : {
709+ metadata : {
710+ name : 'fakeSecretName'
711+ } ,
712+ data : {
713+ fakePropertyName : 'ZmFrZVByb3BlcnR5VmFsdWU='
714+ }
715+ }
716+ } )
717+ kubeNamespaceMock . secrets = sinon . stub ( ) . returns ( kubeSecret )
718+ kubeNamespaceMock . secrets . post = sinon . stub ( )
719+
720+ const result = await poller . _upsertKubernetesSecret ( )
721+ expect ( result ) . to . equal ( true )
722+ expect ( kubeSecret . put . called ) . to . equal ( false )
723+ expect ( kubeNamespaceMock . secrets . post . called ) . to . equal ( false )
724+ } )
725+
699726 it ( 'updates secret' , async ( ) => {
700- const conflictError = new Error ( 'Conflict' )
701- conflictError . statusCode = 409
702- kubeNamespaceMock . secrets . post = sinon . stub ( ) . throws ( conflictError )
703- kubeNamespaceMock . put = sinon . stub ( ) . resolves ( )
727+ const kubeSecret = sinon . mock ( )
728+ kubeSecret . get = sinon . stub ( ) . returns ( {
729+ body : {
730+ metadata : {
731+ name : 'fakeSecretName'
732+ } ,
733+ data : {
734+ fakePropertyName : 'differentValue'
735+ }
736+ }
737+ } )
738+ kubeNamespaceMock . secrets = sinon . stub ( ) . returns ( kubeSecret )
739+ kubeSecret . put = sinon . stub ( ) . resolves ( )
704740 kubeNamespaceMock . get = sinon . stub ( ) . resolves ( fakeNamespace )
705741
706742 await poller . _upsertKubernetesSecret ( )
707743
708744 expect ( kubeNamespaceMock . secrets . calledWith ( 'fakeSecretName' ) ) . to . equal ( true )
709745
710- expect ( kubeNamespaceMock . put . calledWith ( {
746+ expect ( kubeSecret . put . calledWith ( {
747+ body : {
748+ apiVersion : 'v1' ,
749+ kind : 'Secret' ,
750+ metadata : {
751+ name : 'fakeSecretName'
752+ } ,
753+ type : 'some-type' ,
754+ data : {
755+ fakePropertyName : 'ZmFrZVByb3BlcnR5VmFsdWU='
756+ }
757+ }
758+ } ) ) . to . equal ( true )
759+ } )
760+
761+ it ( 'updates secret if the custom metadata has changed' , async ( ) => {
762+ const kubeSecret = sinon . mock ( )
763+ kubeSecret . get = sinon . stub ( ) . returns ( {
764+ body : {
765+ metadata : {
766+ creationTimestamp : new Date ( ) . toDateString ( ) ,
767+ name : 'fakeSecretName' ,
768+ labels : {
769+ myFakeLabel : 'test'
770+ }
771+ } ,
772+ data : {
773+ fakePropertyName : 'ZmFrZVByb3BlcnR5VmFsdWU='
774+ }
775+ }
776+ } )
777+ kubeNamespaceMock . secrets = sinon . stub ( ) . returns ( kubeSecret )
778+ kubeSecret . put = sinon . stub ( ) . resolves ( )
779+ kubeNamespaceMock . get = sinon . stub ( ) . resolves ( fakeNamespace )
780+
781+ await poller . _upsertKubernetesSecret ( )
782+
783+ expect ( kubeNamespaceMock . secrets . calledWith ( 'fakeSecretName' ) ) . to . equal ( true )
784+
785+ expect ( kubeSecret . put . calledWith ( {
711786 body : {
712787 apiVersion : 'v1' ,
713788 kind : 'Secret' ,
@@ -746,7 +821,9 @@ describe('Poller', () => {
746821 it ( 'fails storing secret' , async ( ) => {
747822 const internalErrorServer = new Error ( 'Internal Error Server' )
748823 internalErrorServer . statusCode = 500
749-
824+ const kubeSecret = sinon . mock ( )
825+ kubeNamespaceMock . secrets = sinon . stub ( ) . returns ( kubeSecret )
826+ kubeSecret . get = sinon . stub ( ) . throws ( { statusCode : 404 } )
750827 kubeNamespaceMock . secrets . post = sinon . stub ( ) . throws ( internalErrorServer )
751828
752829 let error
@@ -856,7 +933,7 @@ describe('Poller', () => {
856933 }
857934 } )
858935 } )
859- describe ( 'nameing conventions' , ( ) => {
936+ describe ( 'naming conventions' , ( ) => {
860937 let poller
861938 beforeEach ( ( ) => {
862939 poller = pollerFactory ( )
0 commit comments