@@ -14,6 +14,8 @@ import (
1414 "os"
1515 "testing"
1616
17+ "google.golang.org/protobuf/types/known/timestamppb"
18+
1719 "github.com/google/go-cmp/cmp"
1820 "github.com/nginx/agent/v3/internal/model"
1921 "github.com/nginx/agent/v3/pkg/files"
@@ -960,3 +962,91 @@ func TestNginxConfigParser_ignoreLog(t *testing.T) {
960962 })
961963 }
962964}
965+
966+ func TestNginxConfigParser_checkDuplicate (t * testing.T ) {
967+ fileContent := []byte ("location /test {\n return 200 \" Test location\\ n\" ;\n }" )
968+ fileContentNew := []byte ("some test data" )
969+ fileHash := files .GenerateHash (fileContent )
970+ fileHashNew := files .GenerateHash (fileContentNew )
971+
972+ tests := []struct {
973+ file * mpi.File
974+ name string
975+ expected bool
976+ }{
977+ {
978+ name : "Test 1: File already in files" ,
979+ file : & mpi.File {
980+ FileMeta : & mpi.FileMeta {
981+ Name : "/etc/nginx/certs/nginx-repo.crt" ,
982+ Hash : fileHashNew ,
983+ ModifiedTime : timestamppb .Now (),
984+ Permissions : "0640" ,
985+ Size : 0 ,
986+ },
987+ },
988+ expected : true ,
989+ },
990+ {
991+ name : "Test 2: File not in files" ,
992+ file : & mpi.File {
993+ FileMeta : & mpi.FileMeta {
994+ Name : "/etc/nginx/certs/nginx-repo-new.crt" ,
995+ Hash : fileHashNew ,
996+ ModifiedTime : timestamppb .Now (),
997+ Permissions : "0640" ,
998+ Size : 0 ,
999+ },
1000+ },
1001+ expected : false ,
1002+ },
1003+ }
1004+
1005+ nginxConfigContextFiles := model.NginxConfigContext {
1006+ Files : []* mpi.File {
1007+ {
1008+ FileMeta : & mpi.FileMeta {
1009+ Name : "/etc/nginx/certs/nginx-repo.crt" ,
1010+ Hash : fileHash ,
1011+ ModifiedTime : timestamppb .Now (),
1012+ Permissions : "0640" ,
1013+ Size : 0 ,
1014+ },
1015+ },
1016+ {
1017+ FileMeta : & mpi.FileMeta {
1018+ Name : "/etc/nginx/keys/nginx-repo.key" ,
1019+ Hash : fileHash ,
1020+ ModifiedTime : timestamppb .Now (),
1021+ Permissions : "0640" ,
1022+ Size : 0 ,
1023+ },
1024+ },
1025+ {
1026+ FileMeta : & mpi.FileMeta {
1027+ Name : "/etc/nginx/keys/inline_key.pem" ,
1028+ Hash : fileHash ,
1029+ ModifiedTime : timestamppb .Now (),
1030+ Permissions : "0640" ,
1031+ Size : 0 ,
1032+ },
1033+ },
1034+ {
1035+ FileMeta : & mpi.FileMeta {
1036+ Name : "/etc/nginx/certs/inline_cert.pem" ,
1037+ Hash : fileHash ,
1038+ ModifiedTime : timestamppb .Now (),
1039+ Permissions : "0640" ,
1040+ Size : 0 ,
1041+ },
1042+ },
1043+ },
1044+ }
1045+
1046+ for _ , test := range tests {
1047+ ncp := NewNginxConfigParser (types .AgentConfig ())
1048+ t .Run (test .name , func (t * testing.T ) {
1049+ assert .Equal (t , test .expected , ncp .isDuplicateFile (nginxConfigContextFiles .Files , test .file ))
1050+ })
1051+ }
1052+ }
0 commit comments