Skip to content

Commit

Permalink
feat: add more tests for builder
Browse files Browse the repository at this point in the history
  • Loading branch information
1995parham committed Dec 1, 2023
1 parent d55b531 commit 77a7ea1
Show file tree
Hide file tree
Showing 2 changed files with 145 additions and 2 deletions.
4 changes: 2 additions & 2 deletions internal/authenticator/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import (
var (
ErrAdminAuthenticatorSystemKey = errors.New("admin authenticator supports only one key named system")
ErrNoAuthenticator = errors.New("at least one vendor should be enable to have soteria")
ErrNoDefaultCaseIssEntry = errors.New("default case for iss-entity map is required")
ErrNoDefaultCaseIssEntity = errors.New("default case for iss-entity map is required")
ErrNoDefaultCaseIssPeer = errors.New("default case for iss-peer map is required")
ErrInvalidAuthenticator = errors.New("there is no authenticator to support your request")
)
Expand Down Expand Up @@ -182,7 +182,7 @@ func toUserAccessType(access string) (acl.AccessType, error) {

func (b Builder) ValidateMappers(issEntityMap, issPeerMap map[string]string) error {
if _, ok := issEntityMap[topics.Default]; !ok {
return ErrNoDefaultCaseIssEntry
return ErrNoDefaultCaseIssEntity
}

if _, ok := issPeerMap[topics.Default]; !ok {
Expand Down
143 changes: 143 additions & 0 deletions internal/authenticator/builder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -266,3 +266,146 @@ func TestBuilderManualAuthenticator(t *testing.T) {
require.Len(vendors, 1)
require.Contains(vendors, "snapp")
}

// nolint: funlen
func TestBuilderManualAuthenticatorInvalidMapping_1(t *testing.T) {
t.Parallel()

require := require.New(t)

b := authenticator.Builder{
Vendors: []config.Vendor{
{
Company: "snapp",
Jwt: config.JWT{
IssName: "iss",
SubName: "sub",
SigningMethod: "RSA512",
},
Type: "manual",
AllowedAccessTypes: []string{"pub", "sub"},
Topics: nil,
HashIDMap: map[string]topics.HashData{
"0": {
Alphabet: "",
Length: 15,
Salt: "secret",
},
"1": {
Alphabet: "",
Length: 15,
Salt: "secret",
},
},
IssEntityMap: map[string]string{
"0": "driver",
"1": "passenger",
"default": "",
},
IssPeerMap: nil,
Keys: map[string]string{
"0": `-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyG4XpV9TpDfgWJF9TiIv
va4hNhDuqYMJO6iXLzr3y8oCvoB7zUK0EjtbLH+A3gr1kUvyZKDWT4qHTvU2Sshm
X+ttWGK34EhCvF3Lb18yxmVDSSK8JIcTaJjMqmyubxzamQnNoWazJ7ea9BIo2YGL
C9rgPbi1hihhdb07xPGUkJRqbWkI98xjDhKdMqiwW1hIRXm/apo++FjptvqvF84s
ynC5gWGFHiGNICRsLJBczLEAf2Atbafigq6/tovzMabnp2yRtr1ReEgioH1RO4gX
J7F4N5f6y/VWd8+sDOSxtS/HcnP/7g8/A54G2IbXxr+EiwOO/1F+pyMPKq7sGDSU
DwIDAQAB
-----END PUBLIC KEY-----`,

"1": `-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5SeRfOdTyvQZ7N9ahFHl
+J05r7e9fgOQ2cpOtnnsIjAjCt1dF7/NkqVifEaxABRBGG9iXIw//G4hi0TqoKqK
aoSHMGf6q9pSRLGyB8FatxZf2RBTgrXYqVvpasbnB1ZNv858yTpRjV9NzJXYHLp8
8Hbd/yYTR6Q7ajs11/SMLGO7KBELsI1pBz7UW/fngJ2pRmd+RkG+EcGrOIZ27TkI
Xjtog6bgfmtV9FWxSVdKACOY0OmW+g7jIMik2eZTYG3kgCmW2odu3zRoUa7l9VwN
YMuhTePaIWwOifzRQt8HDsAOpzqJuLCoYX7HmBfpGAnwu4BuTZgXVwpvPNb+KlgS
pQIDAQAB
-----END PUBLIC KEY-----`,
},
},
},
Logger: zap.NewNop(),
ValidatorConfig: config.Validator{
URL: "",
Timeout: 0,
},
}

_, err := b.Authenticators()
require.ErrorIs(err, authenticator.ErrNoDefaultCaseIssPeer)
}

// nolint: funlen
func TestBuilderManualAuthenticatorInvalidMapping_2(t *testing.T) {
t.Parallel()

require := require.New(t)

b := authenticator.Builder{
Vendors: []config.Vendor{
{
Company: "snapp",
Jwt: config.JWT{
IssName: "iss",
SubName: "sub",
SigningMethod: "RSA512",
},
Type: "manual",
AllowedAccessTypes: []string{"pub", "sub"},
Topics: nil,
HashIDMap: map[string]topics.HashData{
"0": {
Alphabet: "",
Length: 15,
Salt: "secret",
},
"1": {
Alphabet: "",
Length: 15,
Salt: "secret",
},
},
IssEntityMap: map[string]string{
"0": "driver",
"1": "passenger",
},
IssPeerMap: map[string]string{
"0": "passenger",
"1": "driver",
"default": "",
},
Keys: map[string]string{
"0": `-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyG4XpV9TpDfgWJF9TiIv
va4hNhDuqYMJO6iXLzr3y8oCvoB7zUK0EjtbLH+A3gr1kUvyZKDWT4qHTvU2Sshm
X+ttWGK34EhCvF3Lb18yxmVDSSK8JIcTaJjMqmyubxzamQnNoWazJ7ea9BIo2YGL
C9rgPbi1hihhdb07xPGUkJRqbWkI98xjDhKdMqiwW1hIRXm/apo++FjptvqvF84s
ynC5gWGFHiGNICRsLJBczLEAf2Atbafigq6/tovzMabnp2yRtr1ReEgioH1RO4gX
J7F4N5f6y/VWd8+sDOSxtS/HcnP/7g8/A54G2IbXxr+EiwOO/1F+pyMPKq7sGDSU
DwIDAQAB
-----END PUBLIC KEY-----`,

"1": `-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5SeRfOdTyvQZ7N9ahFHl
+J05r7e9fgOQ2cpOtnnsIjAjCt1dF7/NkqVifEaxABRBGG9iXIw//G4hi0TqoKqK
aoSHMGf6q9pSRLGyB8FatxZf2RBTgrXYqVvpasbnB1ZNv858yTpRjV9NzJXYHLp8
8Hbd/yYTR6Q7ajs11/SMLGO7KBELsI1pBz7UW/fngJ2pRmd+RkG+EcGrOIZ27TkI
Xjtog6bgfmtV9FWxSVdKACOY0OmW+g7jIMik2eZTYG3kgCmW2odu3zRoUa7l9VwN
YMuhTePaIWwOifzRQt8HDsAOpzqJuLCoYX7HmBfpGAnwu4BuTZgXVwpvPNb+KlgS
pQIDAQAB
-----END PUBLIC KEY-----`,
},
},
},
Logger: zap.NewNop(),
ValidatorConfig: config.Validator{
URL: "",
Timeout: 0,
},
}

_, err := b.Authenticators()
require.ErrorIs(err, authenticator.ErrNoDefaultCaseIssEntity)
}

0 comments on commit 77a7ea1

Please sign in to comment.