@@ -17,8 +17,12 @@ limitations under the License.
17
17
package endpoint
18
18
19
19
import (
20
+ "encoding/base64"
21
+ "io"
20
22
"testing"
21
23
24
+ "crypto/rand"
25
+
22
26
"github.com/stretchr/testify/require"
23
27
)
24
28
@@ -56,3 +60,33 @@ func TestEncrypt(t *testing.T) {
56
60
t .Error ("Decryption of text didn't result in expected plaintext result." )
57
61
}
58
62
}
63
+
64
+ func TestGenerateNonceSuccess (t * testing.T ) {
65
+ nonce , err := GenerateNonce ()
66
+ require .NoError (t , err )
67
+ require .NotEmpty (t , nonce )
68
+
69
+ // Test nonce length
70
+ decodedNonce , err := base64 .StdEncoding .DecodeString (string (nonce ))
71
+ require .NoError (t , err )
72
+ require .Equal (t , standardGcmNonceSize , len (decodedNonce ))
73
+ }
74
+
75
+ func TestGenerateNonceError (t * testing.T ) {
76
+ // Save the original rand.Reader
77
+ originalRandReader := rand .Reader
78
+ defer func () { rand .Reader = originalRandReader }()
79
+
80
+ // Replace rand.Reader with a faulty reader
81
+ rand .Reader = & faultyReader {}
82
+
83
+ nonce , err := GenerateNonce ()
84
+ require .Error (t , err )
85
+ require .Nil (t , nonce )
86
+ }
87
+
88
+ type faultyReader struct {}
89
+
90
+ func (f * faultyReader ) Read (p []byte ) (n int , err error ) {
91
+ return 0 , io .ErrUnexpectedEOF
92
+ }
0 commit comments