diff --git a/.github/workflows/integration.yaml b/.github/workflows/integration.yaml index e2d83ce4..489d3759 100644 --- a/.github/workflows/integration.yaml +++ b/.github/workflows/integration.yaml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python: [3.7, 3.8, 3.9] + python: [3.8, 3.9] steps: - name: Check out code uses: actions/checkout@v2 diff --git a/metadata.yaml b/metadata.yaml index 1dd579dd..83eec006 100755 --- a/metadata.yaml +++ b/metadata.yaml @@ -15,6 +15,8 @@ resources: requires: oidc-client: interface: oidc-client + schema: https://raw.githubusercontent.com/canonical/operator-schemas/oidc-schemas/oidc-client.yaml + versions: [v1] ingress: interface: ingress schema: https://raw.githubusercontent.com/canonical/operator-schemas/service-mesh-schemas/ingress.yaml diff --git a/src/charm.py b/src/charm.py index 46c71cda..bc373316 100755 --- a/src/charm.py +++ b/src/charm.py @@ -73,6 +73,7 @@ def send_info(self, event): self.interfaces["ingress"].send_data( { "prefix": "/dex", + "rewrite": "/", "service": self.model.app.name, "port": self.model.config["port"], } @@ -92,14 +93,10 @@ def main(self, event): port = self.model.config["port"] public_url = self.model.config["public-url"] - oidc_client_info = [] - if "oidc-client" in self.model.relations: - for relation in self.model.relations["oidc-client"]: - for unit in relation.units: - if unit in relation.data: - relation_data = dict(relation.data[unit]) - oidc_client_info.append(relation_data) - break + if (oidc_client := self.interfaces["oidc-client"]) and oidc_client.get_data(): + oidc_client_info = list(oidc_client.get_data().values()) + else: + oidc_client_info = [] # Allows setting a basic username/password combo static_username = self.model.config["static-username"] diff --git a/tests/unit/test_charm.py b/tests/unit/test_charm.py index 8710dc78..6ab7f133 100644 --- a/tests/unit/test_charm.py +++ b/tests/unit/test_charm.py @@ -58,16 +58,19 @@ def test_main_oidc(mock_pw, harness): ) rel_id = harness.add_relation("oidc-client", "app") - harness.begin_with_initial_hooks() harness.add_relation_unit(rel_id, "app/0") data = { - "data": "data", + "id": "id", + "name": "name", + "redirectURIs": ["uri1"], + "secret": "secret", } harness.update_relation_data( rel_id, - "app/0", - data, + "app", + {"_supported_versions": "- v1", "data": yaml.dump(data)}, ) + harness.begin_with_initial_hooks() assert isinstance(harness.charm.model.unit.status, ActiveStatus) pod_spec = harness.get_pod_spec() config_yaml = pod_spec[0]["containers"][0]["volumeConfig"][0]["files"][0]["content"] @@ -99,6 +102,7 @@ def test_main_ingress(mock_pw, harness): relation_data = harness.get_relation_data(rel_id, harness.charm.app.name) data = { "port": 5556, + "rewrite": "/", "prefix": "/dex", "service": "dex-auth", }