// Test config file expansion using REST at top level.
// @tags: [requires_http_client]

import {
    ConfigExpandRestServer,
    configExpandSuccess
} from "jstests/noPassthrough/libs/configExpand/lib.js";

const web = new ConfigExpandRestServer();
web.start();

// Basic success case
configExpandSuccess(
    {
        setParameter: {
            scramIterationCount: {__rest: web.getStringReflectionURL('12345')},
            scramSHA256IterationCount:
                {__rest: web.getStringReflectionURL('23456'), type: 'string', trim: 'whitespace'}
        }
    },
    function(admin) {
        const response = assert.commandWorked(admin.runCommand(
            {getParameter: 1, scramIterationCount: 1, scramSHA256IterationCount: 1}));
        assert.eq(response.scramIterationCount,
                  12345,
                  "Incorrect derived config value for scramIterationCount");
        assert.eq(response.scramSHA256IterationCount,
                  23456,
                  "Incorrect derived config value scramSHA256IterationCount");
    });

// With digest
// SHA256HMAC('12345', 'secret')
const hash = 'f88c7ebe4740db59c873cecf5e1f18e3726a1ad64068a13d764b79028430ab0e';
configExpandSuccess({
    setParameter: {
        scramIterationCount:
            {__rest: web.getStringReflectionURL('12345'), digest: hash, digest_key: '736563726574'}
    }
});

web.stop();