/
named_permission.go
49 lines (42 loc) · 1.52 KB
/
named_permission.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package model
import (
"github.com/OpenBankingUK/conformance-suite/pkg/names"
"github.com/OpenBankingUK/conformance-suite/pkg/permissions"
)
// NamedPermission - permission structure
type NamedPermission struct {
Name string `json:"name"`
CodeSet permissions.CodeSetResult `json:"codeSet"`
ConsentURL string `json:"consentUrl"`
}
// NamedPermissions - permission structure
type NamedPermissions []NamedPermission
// Add - to named permissions
func (t *NamedPermissions) Add(token NamedPermission) {
*t = append(*t, token)
}
// newNamedPermission create a token required to run test cases
// generates a unique name
func newNamedPermission(name string, codeSet permissions.CodeSetResult) NamedPermission {
return NamedPermission{
Name: name,
CodeSet: codeSet,
}
}
// SpecConsentRequirements -
type SpecConsentRequirements struct {
Identifier string `json:"specIdentifier"`
NamedPermissions NamedPermissions `json:"namedPermissions"`
}
// NewSpecConsentRequirements - create a new SpecConsentRequirements
func NewSpecConsentRequirements(nameGenerator names.Generator, result permissions.CodeSetResultSet, specID string) SpecConsentRequirements {
namedPermissions := NamedPermissions{}
for _, resultSet := range result {
namedPermission := newNamedPermission(nameGenerator.Generate(), resultSet)
namedPermissions = append(namedPermissions, namedPermission)
}
return SpecConsentRequirements{
Identifier: specID,
NamedPermissions: namedPermissions,
}
}