Beispiel #1
0
 def test_get_session_relogin_delete_bad_token_header(self, requests_mock):
     # The steps that are executed during this test:
     #  1. Issue GET request to /data endpoint and get back 401.
     #  2. Remove auth token from headers
     #  3. POST to session endpoint and get back 201.
     #  4. Issue GET request to /data endpoint and get bac 200.
     #
     # If the header would not be removed, the steps executed would be:
     #  1. Issue GET request to /data endpoint and get back 401.
     #  2. POST to session endpoint and get back 401.
     #  3. Auth exception is raised.
     #
     # This is why we mocked the POST request twice: to test that the
     # token is not present. And because mocked endpoints are matched in
     # LIFO order, the test works as described before.
     requests_mock.get("https://demo.dev/data", [
         dict(status_code=401), dict(status_code=200),
     ])
     requests_mock.post(
         "https://demo.dev/sessions", status_code=201,
         headers={"X-Auth-Token": "123", "Location": "/sessions/3"},
     )
     requests_mock.post(
         "https://demo.dev/sessions", status_code=401,
         request_headers={"x-auth-token": "abc"},
     )
     conn = Connector("https://demo.dev", "user", "pass")
     conn.set_session_auth_data("/sessions", token="abc")
     r = conn.get("/data")
     assert r.status == 200
     assert r.json is None
Beispiel #2
0
 def test_session_login_invalid_credentials(self, requests_mock):
     requests_mock.post(
         "https://demo.dev/sessions", status_code=400, text="Invalid",
     )
     conn = Connector("https://demo.dev", "user1", "pass1")
     conn.set_session_auth_data("/sessions")
     with pytest.raises(AuthException):
         conn.login()
Beispiel #3
0
 def test_session_logout(self, requests_mock):
     requests_mock.delete(
         "https://demo.dev/sessions/1", status_code=204,
         request_headers={"X-Auth-Token": "abc"},
     )
     conn = Connector("https://demo.dev", "user1", "pass1")
     conn.set_session_auth_data("/sessions", "/sessions/1", "abc")
     conn.logout()
Beispiel #4
0
 def test_active_session(self, requests_mock):
     requests_mock.post(
         "http://demo.site/sessions", status_code=201,
         headers={"x-auth-token": "xyz", "Location": "/sessions/1"},
     )
     conn = Connector("http://demo.site", "", "")
     conn.set_session_auth_data("/sessions")
     conn.login()
     assert ("/sessions", "/sessions/1", "xyz") == conn.session_auth_data
Beispiel #5
0
 def test_get_use_existing_session(self, requests_mock):
     requests_mock.get(
         "https://demo.dev/data", status_code=200,
         request_headers={"X-Auth-Token": "123"},
     )
     conn = Connector("https://demo.dev", "user", "pass")
     conn.set_session_auth_data("/sessions", "/sessions/1", "123")
     r = conn.get("/data")
     assert r.status == 200
     assert r.json is None
Beispiel #6
0
 def test_get_session_relogin(self, requests_mock):
     requests_mock.get("https://demo.dev/data", [
         dict(status_code=401), dict(status_code=200),
     ])
     requests_mock.post(
         "https://demo.dev/sessions", status_code=201,
         headers={"X-Auth-Token": "123", "Location": "/sessions/3"},
     )
     conn = Connector("https://demo.dev", "user", "pass")
     conn.set_session_auth_data("/sessions")
     r = conn.get("/data")
     assert r.status == 200
     assert r.json is None
Beispiel #7
0
    def test_session_login_id_in_body(self, requests_mock):
        def matcher(req):
            return (req.json()["UserName"] == "user1"
                    and req.json()["Password"] == "pass1")

        requests_mock.post(
            "https://demo.dev/sessions",
            additional_matcher=matcher,
            status_code=201,
            headers={"X-Auth-Token": "abc"},
            json={"@odata.id": "/sessions/1"},
        )
        conn = Connector("https://demo.dev", "user1", "pass1")
        conn.set_session_auth_data("/sessions")
        conn.login()
Beispiel #8
0
 def test_session_logout_no_session(self, requests_mock):
     conn = Connector("https://demo.dev", "user", "pass")
     conn.set_session_auth_data("/sessions")
     conn.logout()
Beispiel #9
0
 def test_session_logout_expired_session(self, requests_mock):
     requests_mock.delete("https://demo.dev/sessions/1", status_code=401)
     conn = Connector("https://demo.dev", "user", "pass")
     conn.set_session_auth_data("/sessions", "/sessions/1", "invalid")
     conn.logout()
Beispiel #10
0
 def test_user_supplied_session_data(self):
     conn = Connector("", "", "")
     conn.set_session_auth_data("/sessions", "/sessions/2", "dfg")
     assert ("/sessions", "/sessions/2", "dfg") == conn.session_auth_data
Beispiel #11
0
 def test_no_active_session(self):
     conn = Connector("", "", "")
     conn.set_session_auth_data("/sessions")
     assert ("/sessions", None, None) == conn.session_auth_data