or run

tessl search
Log in

Version

Files

tile.json

task.mdevals/scenario-10/

OAuth Parameter Normalizer

A utility for normalizing OAuth parameters that handles various edge cases commonly encountered in OAuth 1.0 implementations.

Capabilities

Handles empty parameter values

  • When given parameters {a: 'value', b: ''}, normalizeParams returns a correctly formatted string with the empty value preserved @test

Handles duplicate parameter keys

  • When given parameters with duplicate keys like {key: ['value1', 'value2']}, normalizeParams returns all values in sorted order @test

Handles special characters in parameter names

  • When given parameters with special characters in names like {'c@': 'value'}, normalizeParams correctly encodes the parameter name @test

Handles missing secrets gracefully

  • When consumer secret is undefined or null, createSignature treats it as an empty string and generates a valid signature @test
  • When token secret is undefined or null, createSignature treats it as an empty string and generates a valid signature @test

Implementation

@generates

API

/**
 * Normalizes OAuth parameters by handling edge cases like empty values,
 * duplicate keys, and special characters. Returns a normalized parameter
 * string suitable for OAuth signature generation.
 *
 * @param {Object} params - The parameters to normalize (can include empty values, duplicate keys, special chars)
 * @returns {string} The normalized parameter string
 */
function normalizeParams(params) {
  // IMPLEMENTATION HERE
}

/**
 * Creates an OAuth signature using HMAC-SHA1, handling missing secrets gracefully.
 * If consumer_secret or token_secret are undefined/null, treats them as empty strings.
 *
 * @param {string} httpMethod - The HTTP method (e.g., 'GET', 'POST')
 * @param {string} baseUrl - The base URL
 * @param {Object} params - The OAuth parameters
 * @param {string} consumerSecret - Consumer secret (can be empty/missing)
 * @param {string} tokenSecret - Token secret (can be empty/missing)
 * @returns {string} The OAuth signature
 */
function createSignature(httpMethod, baseUrl, params, consumerSecret, tokenSecret) {
  // IMPLEMENTATION HERE
}

module.exports = {
  normalizeParams,
  createSignature,
};

Dependencies { .dependencies }

oauth-sign { .dependency }

Provides OAuth 1.0 signature generation with edge case handling support.