def test_ignores_body_params_if_content_type_is_not_urlencoded(self):
        oauth_params = dict(
            oauth_consumer_key=RFC_CLIENT_IDENTIFIER,
            oauth_token=RFC_TOKEN_IDENTIFIER,
            oauth_signature_method=SIGNATURE_METHOD_HMAC_SHA1,
            oauth_timestamp=RFC_TIMESTAMP_3,
            oauth_nonce=RFC_NONCE_3,
        )
        self.assertEqual(_OAuthClient._generate_signature(
            HTTP_GET,
            # I Know ^ is a GET request and we're specifying a body in this
            # test. _generate_signature does not validate HTTP methods,
            # but only generates signatures. This example must produce
            # the same signature as in the RFC example, hence the test.
            RFC_RESOURCE_FULL_URL,
            params=None,
            body=b("""
body {
    font-family: "Lucida Grande", serif;
}
a:link {
    text-decoration: none;
}
"""),
            headers={
                HEADER_CONTENT_TYPE: CONTENT_TYPE_TEXT_CSS,
            },
            oauth_consumer_secret=RFC_CLIENT_SECRET,
            oauth_token_secret=RFC_TOKEN_SECRET,
            oauth_params=oauth_params,
        ), utf8_encode(percent_decode(RFC_RESOURCE_REQUEST_SIGNATURE_ENCODED)))
 def test_generates_signature(self):
     params = {
         "method": HTTP_POST,
         OAUTH_PARAM_REALM: RFC_REALM,
         "url": RFC_TEMP_URI,
         OAUTH_PARAM_CONSUMER_SECRET: RFC_CLIENT_SECRET,
         OAUTH_PARAM_TOKEN_SECRET: None,
         OAUTH_PARAM_SIGNATURE: RFC_TEMP_REQUEST_SIGNATURE,
         "oauth_params": dict(
             oauth_consumer_key=RFC_CLIENT_IDENTIFIER,
             oauth_signature_method=SIGNATURE_METHOD_HMAC_SHA1,
             oauth_timestamp=RFC_TIMESTAMP_1,
             oauth_nonce=RFC_NONCE_1,
             oauth_callback=RFC_OAUTH_CALLBACK_URI,
         )
     }
     self.assertEqual(_OAuthClient._generate_signature(
         params["method"],
         params["url"],
         None,
         None,
         None,
         params[OAUTH_PARAM_CONSUMER_SECRET],
         params[OAUTH_PARAM_TOKEN_SECRET],
         params["oauth_params"],
     ), params[OAUTH_PARAM_SIGNATURE])
 def test_generates_signature_including_urlencoded_body(self):
     oauth_params = dict(
         oauth_consumer_key=RFC_CLIENT_IDENTIFIER,
         oauth_token=RFC_TOKEN_IDENTIFIER,
         oauth_signature_method=SIGNATURE_METHOD_HMAC_SHA1,
         oauth_timestamp=RFC_TIMESTAMP_3,
         oauth_nonce=RFC_NONCE_3,
     )
     self.assertEqual(_OAuthClient._generate_signature(
         HTTP_GET,
         # I Know ^ is a GET request and we're specifying a body in this
         # test. _generate_signature does not validate HTTP methods,
         # but only generates signatures. This example must produce
         # the same signature as in the RFC example, hence the test.
         RFC_RESOURCE_URI,
         params=None,
         body=b("file=vacation.jpg&size=original&oauth_ignored=IGNORED"),
         headers={
             HEADER_CONTENT_TYPE: CONTENT_TYPE_FORM_URLENCODED,
         },
         oauth_consumer_secret=RFC_CLIENT_SECRET,
         oauth_token_secret=RFC_TOKEN_SECRET,
         oauth_params=oauth_params,
     ), utf8_encode(percent_decode(RFC_RESOURCE_REQUEST_SIGNATURE_ENCODED)))