def test_get_one_flag_throws_on_error(): with start_server() as server: config = Config(sdk_key='sdk-key', base_uri=server.uri) fr = FeatureRequesterImpl(config) with pytest.raises(UnsuccessfulResponseException) as e: fr.get_one(FEATURES, 'didnt-set-up-a-response-for-this-flag') assert e.value.status == 404
def test_get_one_flag_sends_headers(): with start_server() as server: config = Config(sdk_key='sdk-key', base_uri=server.uri) fr = FeatureRequesterImpl(config) key = 'flag1' flag_data = {'key': key} server.setup_json_response('/sdk/latest-flags/' + key, flag_data) fr.get_one(FEATURES, key) req = server.require_request() assert req.headers['Authorization'] == 'sdk-key' assert req.headers['User-Agent'] == 'PythonClient/' + VERSION assert req.headers.get('X-LaunchDarkly-Wrapper') is None
def test_get_one_flag_sends_wrapper_header_without_version(): with start_server() as server: config = Config(sdk_key='sdk-key', base_uri=server.uri, wrapper_name='Flask') fr = FeatureRequesterImpl(config) key = 'flag1' flag_data = {'key': key} server.setup_json_response('/sdk/latest-flags/' + key, flag_data) fr.get_one(FEATURES, key) req = server.require_request() assert req.headers.get('X-LaunchDarkly-Wrapper') == 'Flask'
def test_get_one_flag_returns_data(): with start_server() as server: config = Config(sdk_key='sdk-key', base_uri=server.uri) fr = FeatureRequesterImpl(config) key = 'flag1' flag_data = {'key': key} server.setup_json_response('/sdk/latest-flags/' + key, flag_data) result = fr.get_one(FEATURES, key) assert result == flag_data
def test_get_one_flag_does_not_use_etags(): with start_server() as server: config = Config(sdk_key='sdk-key', base_uri=server.uri) fr = FeatureRequesterImpl(config) etag = 'my-etag' key = 'flag1' flag_data = {'key': key} req_path = '/sdk/latest-flags/' + key server.setup_json_response(req_path, flag_data, {'Etag': etag}) result = fr.get_one(FEATURES, key) assert result == flag_data req = server.require_request() assert 'If-None-Match' not in req.headers.keys() result = fr.get_one(FEATURES, key) assert result == flag_data req = server.require_request() assert 'If-None-Match' not in req.headers.keys( ) # did not send etag from previous request