示例#1
0
def test_auth_and_reauth_token():
    # TODO: need to check what the purpose of this test is, and how it works with the automatic auth check on CL init
    # if there's environ vars for username and password set
    # then delete them b/c we rely on specific usernames
    # and passwords for this test!
    try:
        del os.environ["SIMPLE_PASS"]
        del os.environ["SIMPLE_USER"]
    except:
        pass

    # mock always successful authentication:
    responses.add(responses.POST,
                  "https://0.0.0.0/fake_url/api/v0/authenticate",
                  json="7bbcan78a98bch7nh3cm7hao3nc7")
    responses.add(responses.GET,
                  "https://0.0.0.0/fake_url/api/v0/wait_for_lld_connected")
    responses.add(responses.GET,
                  "https://0.0.0.0/fake_url/api/v0/wait_for_lld_connected",
                  status=401)
    responses.add(responses.GET,
                  "https://0.0.0.0/fake_url/api/v0/wait_for_lld_connected")
    responses.add(responses.GET,
                  "https://0.0.0.0/fake_url/api/v0/wait_for_lld_connected",
                  status=401)

    with pytest.raises(InitializationError):
        # Test returns custom exception when instructed to raise onk
        cl = ClientLibrary(url="http://0.0.0.0/fake_url/",
                           username="******",
                           password="******",
                           raise_for_auth_failure=True)

    cl = ClientLibrary(url="http://0.0.0.0/fake_url/",
                       username="******",
                       password="******")
    cl.wait_for_lld_connected()

    # last request fails as after reauthentication status code of response is still 401:
    # with pytest.raises(requests.exceptions.HTTPError) as:
    #     client_library.wait_for_lld_connected()
    #     assert exc.value.response.status_code ==1

    assert (responses.calls[0].request.url ==
            "https://0.0.0.0/fake_url/api/v0/authenticate")
    assert json.loads(responses.calls[0].request.body) == {
        "username": "******",
        "password": "******",
    }
    assert (responses.calls[1].request.url ==
            "https://0.0.0.0/fake_url/api/v0/labs")
    assert responses.calls[1].request.method == "GET"
    assert (responses.calls[2].request.url ==
            "https://0.0.0.0/fake_url/api/v0/authenticate")
    assert (responses.calls[3].request.url ==
            "https://0.0.0.0/fake_url/api/v0/labs")
    assert (responses.calls[4].request.url ==
            "https://0.0.0.0/fake_url/api/v0/wait_for_lld_connected")
    assert len(responses.calls) == 5
示例#2
0
def test_ssl_certificate_from_env_variable(monkeypatch, mocked_session):
    monkeypatch.setitem(os.environ, "CA_BUNDLE", "/home/user/cert.pem")
    cl = ClientLibrary(url="http://0.0.0.0/fake_url/",
                       username="******",
                       password="******")
    cl.wait_for_lld_connected()

    assert cl.session.verify == "/home/user/cert.pem"
    assert cl.session.mock_calls == [
        call.get("https://0.0.0.0/fake_url/api/v0/labs"),
        call.get().raise_for_status(),
        call.get("https://0.0.0.0/fake_url/api/v0/wait_for_lld_connected"),
        call.get().raise_for_status()
    ]
示例#3
0
def test_ssl_certificate(mocked_session):
    cl = ClientLibrary(
        url="http://0.0.0.0/fake_url/",
        username="******",
        password="******",
        ssl_verify="/home/user/cert.pem",
    )
    cl.wait_for_lld_connected()

    assert cl.session.verify == "/home/user/cert.pem"
    assert cl.session.mock_calls == [
        call.get("https://0.0.0.0/fake_url/api/v0/labs"),
        call.get().raise_for_status(),
        call.get("https://0.0.0.0/fake_url/api/v0/wait_for_lld_connected"),
        call.get().raise_for_status()
    ]