def create_client(self):
     self.md = MDQClient(TestMDQClient.URL)
Beispiel #2
0
 def setUp(self):
     self.md = MDQClient(TestMDQClient.URL)
class TestMDQClient(object):
    """Tests for MDQClient."""

    URL = "http://localhost/mdx/"

    @pytest.fixture(autouse=True)
    def create_client(self):
        self.md = MDQClient(TestMDQClient.URL)

    def test_get_existing_client(self):
        metadata = {
            "client_id": "client1",
            "client_secret": "abcd1234",
            "redirect_uris": ["http://example.com/rp/authz_cb"],
        }
        url = TestMDQClient.URL + "entities/client1"
        with responses.RequestsMock() as rsps:
            rsps.add(rsps.GET, url, body=json.dumps(metadata))
            result = self.md["client1"]

        assert metadata == result

    def test_get_non_existing_client(self):
        url = TestMDQClient.URL + "entities/client1"
        with responses.RequestsMock() as rsps:
            rsps.add(rsps.GET, url, status=404)
            with pytest.raises(NoClientInfoReceivedError):
                self.md["client1"]

    def test_keys(self):
        url = TestMDQClient.URL + "entities"
        metadata = [
            {
                "client_id": "client1",
                "client_secret": "secret",
                "redirect_uris": ["http://example.com"],
            },
            {
                "client_id": "client2",
                "client_secret": "secret",
                "redirect_uris": ["http://ecample2.com"],
            },
        ]
        with responses.RequestsMock() as rsps:
            rsps.add(rsps.GET, url, body=json.dumps(metadata))
            result = self.md.keys()

        assert {"client1", "client2"} == set(result)

    def test_keys_error(self):
        url = TestMDQClient.URL + "entities"
        with responses.RequestsMock() as rsps:
            rsps.add(rsps.GET, url, status=404)
            with pytest.raises(NoClientInfoReceivedError):
                self.md.keys()

    def test_items(self):
        url = TestMDQClient.URL + "entities"
        metadata = [
            {
                "client_id": "client1",
                "client_secret": "secret",
                "redirect_uris": ["http://example.com"],
            },
            {
                "client_id": "client2",
                "client_secret": "secret",
                "redirect_uris": ["http://ecample2.com"],
            },
        ]
        with responses.RequestsMock() as rsps:
            rsps.add(rsps.GET, url, body=json.dumps(metadata))
            result = self.md.items()

        assert sorted(metadata, key=itemgetter("client_id")) == sorted(
            result, key=itemgetter("client_id"))

    def test_items_errors(self):
        url = TestMDQClient.URL + "entities"
        with responses.RequestsMock() as rsps:
            rsps.add(rsps.GET, url, status=404)
            with pytest.raises(NoClientInfoReceivedError):
                self.md.items()

    def test_setitem(self):
        with pytest.raises(RuntimeError):
            self.md["client"] = "foo"

    def test_delitem(self):
        with pytest.raises(RuntimeError):
            del self.md["client"]