Skip to content

Commit

Permalink
refactor add unit tests added
Browse files Browse the repository at this point in the history
  • Loading branch information
devang-gaur committed May 15, 2021
1 parent 7872ef5 commit bc0ae89
Show file tree
Hide file tree
Showing 7 changed files with 186 additions and 26 deletions.
17 changes: 17 additions & 0 deletions pkg/http-server/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ package httpserver

import (
"fmt"
"github.com/accurics/terrascan/pkg/utils"
"github.com/pkg/errors"
"net/http"
)

Expand All @@ -34,3 +36,18 @@ func apiErrorResponse(w http.ResponseWriter, errMsg string, statusCode int) {
w.Header().Set("X-Content-Type-Options", "nosniff")
http.Error(w, errMsg, statusCode)
}

func validateFiles(privateKeyFile, certFile string) error {
e1 := utils.ValidateFileName(privateKeyFile)
e2 := utils.ValidateFileName(certFile)

if e1 != nil && e2 != nil {
return errors.Errorf("error with --key-path flag value: %s, error with --cert-path flag value: %s", e1.Error(), e2.Error())
} else if e1 != nil && e2 == nil {
return errors.Errorf("error with --key-path flag value: %s", e1.Error())
} else if e1 == nil && e2 != nil {
return errors.Errorf("error with --cert-path flag value: %s", e2.Error())
} else {
return nil
}
}
58 changes: 58 additions & 0 deletions pkg/http-server/helpers_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package httpserver

import (
"fmt"
"github.com/go-errors/errors"
"reflect"
"testing"
)

func TestValidateFiles(t *testing.T) {
table := []struct {
name string
privateKeyFile string
certFile string
wantOutput interface{}
wantErr error
}{
{
name : "normal file names",
privateKeyFile: "key",
certFile: "cert",
wantErr: nil,
},
{
name : "error in both privatekey and certfile filenames",
privateKeyFile: "--cert-file",
certFile: "-l",
wantErr: errors.Errorf("error with --key-path flag value: %s, error with --cert-path flag value: %s",
fmt.Sprintf("file name inappropriate: %s", "--cert-file"),
fmt.Sprintf("file name inappropriate: %s", "-l")),
},
{
name: "error in privatekey filename",
privateKeyFile: "--cert-file",
certFile: "certfile",
wantErr: errors.Errorf("error with --key-path flag value: %s",
fmt.Sprintf("file name inappropriate: %s", "--cert-file")),
},
{
name: "error in certfile filename",
privateKeyFile: "keyfile",
certFile: "--wrong-name",
wantErr: errors.Errorf("error with --cert-path flag value: %s",
fmt.Sprintf("file name inappropriate: %s", "--wrong-name")),
},
}

for _, tt := range table {
t.Run(tt.name, func(t *testing.T) {
gotErr := validateFiles(tt.privateKeyFile, tt.certFile)
if !reflect.DeepEqual(gotErr, tt.wantErr) {
if tt.wantErr != nil && gotErr != nil && tt.wantErr.Error() != gotErr.Error() {
t.Errorf("error got: '%v', want: '%v'", gotErr, tt.wantErr)
}
}
})
}
}
26 changes: 0 additions & 26 deletions pkg/http-server/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,10 @@ package httpserver

import (
"context"
"github.com/go-errors/errors"
"go.uber.org/zap"
"net/http"
"os"
"os/signal"
"strings"
"time"

"github.com/accurics/terrascan/pkg/logging"
Expand Down Expand Up @@ -116,27 +114,3 @@ func (g *APIServer) start(routes []*Route, logger *zap.SugaredLogger, port, cert
}
logger.Info("server exiting gracefully")
}

func validateFiles(privateKeyFile, certFile string) error {
e1 := validateFileName(privateKeyFile)
e2 := validateFileName(certFile)

if e1 != nil && e2 != nil {
return errors.Errorf("error with --key-path filename: %s, error with --cert-path flag value: %s", e1.Error(), e2.Error())
} else if e1 != nil && e2 == nil {
return errors.Errorf("error with --key-path flag value: %s", e1.Error())
} else if e1 == nil && e2 != nil {
return errors.Errorf("error with --cert-path flag value: %s", e2.Error())
} else {
return nil
}
}

func validateFileName(file string) error {
if strings.HasPrefix(file, "-") {
return errors.Errorf("file name inappropriate: %s", file)
}

zap.S().Debugf("validated filename %s", file)
return nil
}
14 changes: 14 additions & 0 deletions pkg/utils/file.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package utils

import (
"github.com/pkg/errors"
"strings"
)

func ValidateFileName(file string) error {
if strings.HasPrefix(file, "-") {
return errors.Errorf("file name inappropriate: %s", file)
}
return nil
}

45 changes: 45 additions & 0 deletions pkg/utils/file_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package utils

import (
"github.com/pkg/errors"
"reflect"
"testing"
)

func TestValidateFileName(t *testing.T) {

table := []struct {
name string
filename string
wantErr error
}{
{
name : "normal file names",
filename: "key",
wantErr: nil,
},
{
name : "-- prefix in the filename",
filename: "--cert-file",
wantErr: errors.Errorf("file name inappropriate: %s", "--cert-file"),
},
{
name : "- prefix in the filename",
filename: "-c",
wantErr: errors.Errorf("file name inappropriate: %s", "-c"),
},

}

for _, tt := range table {
t.Run(tt.name, func(t *testing.T) {
gotErr := ValidateFileName(tt.filename)
if !reflect.DeepEqual(gotErr, tt.wantErr) {
if tt.wantErr != nil && gotErr != nil && tt.wantErr.Error() != gotErr.Error() {
t.Errorf("error got: '%v', want: '%v'", gotErr, tt.wantErr)
}
}
})
}
}

24 changes: 24 additions & 0 deletions test/e2e/test_data/certs/server.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
-----BEGIN CERTIFICATE-----
MIID9TCCAt2gAwIBAgIJANcasjhanWjaMA0GCSqGSIb3DQEBCwUAMIGeMQswCQYD
VQQGEwJJTjEUMBIGA1UECAwLTWFoYXJhc2h0cmExDTALBgNVBAcMBFB1bmUxETAP
BgNVBAoMCEFjY3VyaWNzMScwJQYJKoZIhvcNAQkBFhhkZXZhbmcuZ2F1ckBhY2N1
cmljcy5jb20xLjAsBgNVBAMMJXRlcnJhc2Nhbi50ZXJyYXNjYW4uc3ZjLmNsdXN0
ZXIubG9jYWwwHhcNMjEwNTEwMjIzMTM0WhcNMjEwNjA5MjIzMTM0WjCBnjELMAkG
A1UEBhMCSU4xFDASBgNVBAgMC01haGFyYXNodHJhMQ0wCwYDVQQHDARQdW5lMREw
DwYDVQQKDAhBY2N1cmljczEnMCUGCSqGSIb3DQEJARYYZGV2YW5nLmdhdXJAYWNj
dXJpY3MuY29tMS4wLAYDVQQDDCV0ZXJyYXNjYW4udGVycmFzY2FuLnN2Yy5jbHVz
dGVyLmxvY2FsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnph3od0J
zp3RI8eQx488YVWIlBbqGZChDxoS8aadmBc+clM2ZPnEDfgsOvCe8UL0uG//waC1
UzNoXe5ThhsqD8avrlfqxYQk+PGcaf/iOOEMN9+G+rUmqm1zKkVPRkHjtMXvGUHb
lwULA0qMlvW24noWPXS+D+6cv90pFxP+2Xkh4FnDE63pXrQ+2Gf2hNVDMNaeiTP9
zPnyBE+6Pd5uLAMHrBpwkC9M39yhnLx1vlKO/XnOQGXANpItVHO8HsbKT+o6fbPI
/RshvNi7rq1mPBcbq/gwTs68RpafdXDKIWMOZDpMVOto5+B2DRMHIvZ/BW4y5Ip0
+wI2kXw8UlrHkQIDAQABozQwMjAwBgNVHREEKTAngiV0ZXJyYXNjYW4udGVycmFz
Y2FuLnN2Yy5jbHVzdGVyLmxvY2FsMA0GCSqGSIb3DQEBCwUAA4IBAQAGHoZvgZwd
dLbaZaVT6jfZLqZxz2g004/sK9z4U6bcXTeXx5nJUsE4RkCVt+wAsH1eNF8Xdr7c
rMTH5mcHYcpcRH1CBktYkMF5nZwLzjRoR5abju0BZWrsEZi7cDJOeboW6EQqFBn8
LFsG2437Lx8to8XYheo91HG3QFdFo2kofaelUAqIxz0WdPnjChPH7RpjUEubXn1+
VKKrFhB6zKulU+YJaEJ0LO38CejrwKRT+pr1v3HaWnJSitZaJDDwxvkvSjdf8Rk2
4HsU1Rp2v3ts1zfzUthWrnc3G8darZx5ZdQWjRK2C17zrtzJO7M33D8BjiQaTQXL
kCfVMzBQKmOp
-----END CERTIFICATE-----
28 changes: 28 additions & 0 deletions test/e2e/test_data/certs/server.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCemHeh3QnOndEj
x5DHjzxhVYiUFuoZkKEPGhLxpp2YFz5yUzZk+cQN+Cw68J7xQvS4b//BoLVTM2hd
7lOGGyoPxq+uV+rFhCT48Zxp/+I44Qw334b6tSaqbXMqRU9GQeO0xe8ZQduXBQsD
SoyW9bbiehY9dL4P7py/3SkXE/7ZeSHgWcMTreletD7YZ/aE1UMw1p6JM/3M+fIE
T7o93m4sAwesGnCQL0zf3KGcvHW+Uo79ec5AZcA2ki1Uc7wexspP6jp9s8j9GyG8
2LuurWY8Fxur+DBOzrxGlp91cMohYw5kOkxU62jn4HYNEwci9n8FbjLkinT7AjaR
fDxSWseRAgMBAAECggEBAI5mH6R6L0ARe6NAoMJN3c0XW5Z8LJ3fun0w0CmhjIbu
9+b2yDRJ/rr8Rdp2CoBduhWQmndksOqPkfok72HOKioYH83OqsHGMNxFNEgItTqU
9r+EOFILLTiBJZKiwNc4ehfqURDAjUZABO9jlHBHF3qqXCW6GJ19hcjP7wEFtyHT
s5Vcdab07waMAzqmX4kK2GmgZMicXJykZyYxTrhz1ZKDfS3z6m1WlHHgUfOPULK8
1JpERBLquOykk/InuoYKo2YTIOUoTEydX0ws30xQFz3Vt91mnL9J9fyevkULio8K
o+kISh+48uqgf/3WY01AASYEGZ4PxxruAc0Jmtl3bkECgYEAz2KOWyMC0V4fgk9h
PbRA1hoVAuQ8tcsy6KXjP+1GjlFvbBro321+pY5A7Cg4tiwAqaCxVg2kb4kKFNBn
LXaCZ06nkht8D9dH9Q3oVz+fs01BikfPaa9HJ+oqgloqZ2JAs+tvJuEgZJwyrl0Z
Gefy0T2Ar6WdF4UM2Ua3crh6ds0CgYEAw8X+uohDSFRpDMOYH4GU/nrmpW/0YyHY
SGegnCvdMelCW/3YunWs8HCUkyOXEDh8AvMdXQmR6bab4RQn7XSUC+wogdHYkCUR
wJfYjc9697ta6WEaaPCyqURVuOPBPsP77zmfpSXRpyChA1TDKGYR3k5jHdpJI0qs
y44QieWHq9UCgYEAqwq6JmiF1nAuxKb7qIyWPP9d/PiJKdbhsge/meX0n0SDBUJc
doo0Pg9JdHzn6Tf5g+3I1RSDXopECk6oClMH0nSIuHR6qgYAjxhdXDhZWuSI/aek
ZaHuqfjz/nanKoVaoAm5rvNWaCR7mFuobDllhzWWgUeyfMd7hWhRvQhx2LECgYAC
HKmx03R+XELB235RoLE9yY+ha0LEqwHNTijiZmq9dhm8KlHjOQ/DjENeDv07NJDJ
61t+vHKxhcHKvM/tdNuAAW0ycVQXwf6eCEVSylE2SPQjHmQNi8MxpkYSd4qHJdAa
9ZEuU+keF3EFOy3byrYYotnY4Zj2Y4DXtVGiWzKKfQKBgFyCnZeDxtaSQveUivYE
FdU7TZV5SWzAIOOxjfzYgUGP+Ypjz3V6t4LqTiMqFE0hwxLvzy8sgxf46IQD+g8g
Q/mM2pq5tQqfdiO2g/56GZkr4yWh7q789QPRWMQYvPswffL7ln2V82WHfepgFYST
dQDfcPWTV/kgupqIJs5OI5Sl
-----END PRIVATE KEY-----

0 comments on commit bc0ae89

Please sign in to comment.