anchor.diff:      String = build_base_string("https://api.twitter.com/1.1/statuses/user_timeline.json", "GET", Details),
       ?assertEqual(String, "GET&https%3A%2F%2Fapi.twitter.com%2F1.1%2Fstatuses%2Fuser_timeline.json&oauth_consumer_key%3D12345%26oauth_nonce%3D100%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D100%26oauth_token%3D67890%26oauth_version%3D1.0").
   
  +build_composite_key_test() ->
  +    Consumer_secret = "abcde",
  +    Access_token_secret = "lololo",
  +    String = build_composite_key(Consumer_secret, Access_token_secret),
  +    ?assertEqual(String, "abcde&lolol").
  +
  +build_oauth_signature_test() ->
  +    Signature = build_oauth_signature("GET&https%3A%2F%2Fapi.twitter.com%2F1.1%2Fstatuses%2Fuser_timeline.json&oauth_consumer_key%3D12345%26oauth_nonce%3D100%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D100%26oauth_token%3D67890%26oauth_version%3D1.0","abcde&lolol"),
  +    ?assertEqual(Signature, "VcaKB8r06MhJ7+FHbT/b7jSHy6U=").
  +
   -endif.
  
positive.code: %% Internal Function Definitions
  %% ------------------------------------------------------------------
  
  request(Consumer_key, Access_token, Consumer_secret) ->
      Url = "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=angry_lawyer",
      Headers = build_all_headers(Url, Consumer_key, Access_token, Consumer_secret),
      lhttpc:request(Url,get,[Headers],infinity). 
  
  build_all_headers(Url, Consumer_key, Access_token, Consumer_secret) -> 
      Oauth_params = build_oauth_details(Consumer_key, Access_token, unix_time()),
      Base_string = build_base_string(Url, "GET", Oauth_params),
      Composite_key = build_composite_key(Consumer_secret, Access_token),
      Signature = build_oauth_signature(Base_string, Composite_key),
      Oauth_params_extended = add_oauth_signature(Oauth_params, Signature),
      build_authorization_header(Oauth_params_extended).
  
negative.code:     Start = Method ++ "&" ++ Uri ++ "&",
      Start ++ string:join([lists:flatten(io_lib:format("~w=~s", [Key, Value])) || {Key, Value} <- Params], "&").
  
  build_composite_key(Consumer_secret, Access_token_secret) ->
      string:join([Consumer_secret, Access_token_secret], ":").
  
  build_oauth_signature(Base_info, Composite_key) ->
      base64:encode_to_string(crypto:sha_mac(Base_info, Composite_key)).
  