introduce Credentials
parent
73e73e8d3d
commit
4baa012918
@ -0,0 +1,56 @@
|
||||
import deprecation
|
||||
from enum import Enum
|
||||
from typing import List, TypedDict
|
||||
from inflection import underscore
|
||||
import deprecation
|
||||
from .common import (
|
||||
Validateable,
|
||||
)
|
||||
|
||||
|
||||
class GopassType(Enum):
|
||||
FIELD = 0
|
||||
PASSWORD = 1
|
||||
|
||||
|
||||
class CredentialMapping(Validateable):
|
||||
def __init__(self, mapping: dict):
|
||||
self.name = mapping.get("name", None)
|
||||
self.gopass_field = mapping.get("gopass_field", None)
|
||||
self.gopass_path = mapping.get("gopass_path", None)
|
||||
|
||||
def validate(self) -> List[str]:
|
||||
result = []
|
||||
result += self.__validate_is_not_empty__("gopass_path")
|
||||
if not self.name and not self.gopass_field:
|
||||
result.append(f"Either name or gopass field has to be defined.")
|
||||
return result
|
||||
|
||||
def gopass_type(self):
|
||||
if self.gopass_field:
|
||||
return GopassType.FIELD
|
||||
else:
|
||||
return GopassType.PASSWORD
|
||||
|
||||
def name_for_input(self):
|
||||
if self.name:
|
||||
return self.name
|
||||
else:
|
||||
return underscore(self.gopass_field)
|
||||
|
||||
def name_for_environment(self):
|
||||
return self.name_for_input().upper()
|
||||
|
||||
|
||||
class Credentials(Validateable):
|
||||
def __init__(self, input: dict):
|
||||
input_mappings = input.get("credentials_mapping", [])
|
||||
self.mappings = []
|
||||
for input_mapping in input_mappings:
|
||||
self.mappings.append(CredentialMapping(input_mapping))
|
||||
|
||||
def validate(self) -> List[str]:
|
||||
result = []
|
||||
for mapping in self.mappings:
|
||||
result += mapping.validate()
|
||||
return result
|
@ -0,0 +1,107 @@
|
||||
import pytest
|
||||
from pathlib import Path
|
||||
from src.main.python.ddadevops.domain import (
|
||||
CredentialMapping,
|
||||
Credentials,
|
||||
GopassType,
|
||||
MixinType,
|
||||
)
|
||||
from .helper import build_devops
|
||||
|
||||
|
||||
def test_should_create_mapping():
|
||||
sut = CredentialMapping(
|
||||
{
|
||||
"gopass_path": "server/meissa/grafana-cloud",
|
||||
"gopass_field": "grafana-cloud-user",
|
||||
}
|
||||
)
|
||||
assert "grafana_cloud_user" == sut.name_for_input()
|
||||
assert "GRAFANA_CLOUD_USER" == sut.name_for_environment()
|
||||
assert GopassType.FIELD == sut.gopass_type()
|
||||
|
||||
sut = CredentialMapping(
|
||||
{
|
||||
"gopass_path": "server/meissa/grafana-cloud",
|
||||
"name": "grafana_cloud_password",
|
||||
}
|
||||
)
|
||||
assert "grafana_cloud_password" == sut.name_for_input()
|
||||
assert "GRAFANA_CLOUD_PASSWORD" == sut.name_for_environment()
|
||||
assert GopassType.PASSWORD == sut.gopass_type()
|
||||
|
||||
|
||||
def test_should_validate_CredentialMapping():
|
||||
sut = CredentialMapping(
|
||||
{
|
||||
"gopass_path": "server/meissa/grafana-cloud",
|
||||
"gopass_field": "grafana-cloud-user",
|
||||
}
|
||||
)
|
||||
assert sut.is_valid()
|
||||
|
||||
sut = CredentialMapping(
|
||||
{
|
||||
"gopass_path": "server/meissa/grafana-cloud",
|
||||
"name": "grafana_cloud_user",
|
||||
}
|
||||
)
|
||||
assert sut.is_valid()
|
||||
|
||||
sut = CredentialMapping(
|
||||
{
|
||||
"gopass_path": "server/meissa/grafana-cloud",
|
||||
}
|
||||
)
|
||||
assert not sut.is_valid()
|
||||
|
||||
|
||||
def test_should_create_credentials():
|
||||
sut = Credentials(
|
||||
{
|
||||
"credentials_mapping": [
|
||||
{
|
||||
"gopass_path": "server/meissa/grafana-cloud",
|
||||
"gopass_field": "grafana-cloud-user",
|
||||
},
|
||||
{
|
||||
"gopass_path": "server/meissa/grafana-cloud",
|
||||
"name": "grafana_cloud_password",
|
||||
},
|
||||
],
|
||||
}
|
||||
)
|
||||
|
||||
assert sut
|
||||
|
||||
def test_should_validate_credentials():
|
||||
sut = Credentials(
|
||||
{
|
||||
"credentials_mapping": [
|
||||
{
|
||||
"gopass_path": "server/meissa/grafana-cloud",
|
||||
"gopass_field": "grafana-cloud-user",
|
||||
},
|
||||
{
|
||||
"gopass_path": "server/meissa/grafana-cloud",
|
||||
"name": "grafana_cloud_password",
|
||||
},
|
||||
],
|
||||
}
|
||||
)
|
||||
assert sut.is_valid()
|
||||
|
||||
sut = Credentials(
|
||||
{
|
||||
"credentials_mapping": [
|
||||
{
|
||||
"gopass_path": "server/meissa/grafana-cloud",
|
||||
"gopass_field": "grafana-cloud-user",
|
||||
},
|
||||
{
|
||||
"gopass_path": "server/meissa/grafana-cloud"
|
||||
},
|
||||
],
|
||||
}
|
||||
)
|
||||
assert not sut.is_valid()
|
Loading…
Reference in New Issue