mirror of
https://github.com/usebruno/bruno.git
synced 2026-06-24 13:15:40 +00:00
add: tests for request level auth
This commit is contained in:
@@ -247,4 +247,209 @@ describe('prepare-request: prepareRequest', () => {
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('Properly maps request-level auth', () => {
|
||||
let item;
|
||||
|
||||
beforeEach(() => {
|
||||
item = {
|
||||
name: 'Test Request',
|
||||
type: 'http-request',
|
||||
request: {
|
||||
method: 'GET',
|
||||
headers: [],
|
||||
params: [],
|
||||
url: 'https://usebruno.com',
|
||||
auth: {
|
||||
mode: 'basic' // Will be overridden in each test
|
||||
},
|
||||
script: {
|
||||
req: 'console.log("Pre Request")',
|
||||
res: 'console.log("Post Response")'
|
||||
}
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
describe('API Key Authentication', () => {
|
||||
it('If request auth is apikey in header', () => {
|
||||
item.request.auth = {
|
||||
mode: "apikey",
|
||||
apikey: {
|
||||
key: "x-api-key",
|
||||
value: "{{apiKey}}",
|
||||
placement: "header"
|
||||
}
|
||||
};
|
||||
|
||||
const result = prepareRequest(item);
|
||||
expect(result.headers).toHaveProperty('x-api-key', '{{apiKey}}');
|
||||
});
|
||||
|
||||
it('If request auth is apikey in header and request has existing headers', () => {
|
||||
item.request.auth = {
|
||||
mode: "apikey",
|
||||
apikey: {
|
||||
key: "x-api-key",
|
||||
value: "{{apiKey}}",
|
||||
placement: "header"
|
||||
}
|
||||
};
|
||||
|
||||
item.request.headers.push({ name: 'Content-Type', value: 'application/json', enabled: true });
|
||||
const result = prepareRequest(item);
|
||||
expect(result.headers).toHaveProperty('Content-Type', 'application/json');
|
||||
expect(result.headers).toHaveProperty('x-api-key', '{{apiKey}}');
|
||||
});
|
||||
|
||||
it('If request auth is apikey in query parameters', () => {
|
||||
item.request.auth = {
|
||||
mode: "apikey",
|
||||
apikey: {
|
||||
key: "x-api-key",
|
||||
value: "{{apiKey}}",
|
||||
placement: "queryparams"
|
||||
}
|
||||
};
|
||||
|
||||
const urlObj = new URL(item.request.url);
|
||||
urlObj.searchParams.set(item.request.auth.apikey.key, item.request.auth.apikey.value);
|
||||
|
||||
const expected = urlObj.toString();
|
||||
const result = prepareRequest(item);
|
||||
expect(result.url).toEqual(expected);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Basic Authentication', () => {
|
||||
it('If request auth is basic auth', () => {
|
||||
item.request.auth = {
|
||||
mode: 'basic',
|
||||
basic: {
|
||||
username: 'testUser',
|
||||
password: 'testPass123'
|
||||
}
|
||||
};
|
||||
|
||||
const result = prepareRequest(item);
|
||||
const expected = { username: 'testUser', password: 'testPass123' };
|
||||
expect(result.basicAuth).toEqual(expected);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Bearer Token Authentication', () => {
|
||||
it('If request auth is bearer token', () => {
|
||||
item.request.auth = {
|
||||
mode: 'bearer',
|
||||
bearer: {
|
||||
token: 'token123'
|
||||
}
|
||||
};
|
||||
|
||||
const result = prepareRequest(item);
|
||||
expect(result.headers).toHaveProperty('Authorization', 'Bearer token123');
|
||||
});
|
||||
|
||||
it('If request auth is bearer token and request has existing headers', () => {
|
||||
item.request.auth = {
|
||||
mode: 'bearer',
|
||||
bearer: {
|
||||
token: 'token123'
|
||||
}
|
||||
};
|
||||
|
||||
item.request.headers.push({ name: 'Content-Type', value: 'application/json', enabled: true });
|
||||
|
||||
const result = prepareRequest(item);
|
||||
expect(result.headers).toHaveProperty('Authorization', 'Bearer token123');
|
||||
expect(result.headers).toHaveProperty('Content-Type', 'application/json');
|
||||
});
|
||||
});
|
||||
|
||||
describe('AWS v4 Authentication', () => {
|
||||
it('If request auth is AWS v4', () => {
|
||||
item.request.auth = {
|
||||
mode: 'awsv4',
|
||||
awsv4: {
|
||||
accessKeyId: 'AKIAIOSFODNN7EXAMPLE',
|
||||
secretAccessKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
|
||||
sessionToken: 'request-session-token',
|
||||
service: 'dynamodb',
|
||||
region: 'us-east-1',
|
||||
profileName: 'dev'
|
||||
}
|
||||
};
|
||||
|
||||
const result = prepareRequest(item);
|
||||
const expected = {
|
||||
accessKeyId: 'AKIAIOSFODNN7EXAMPLE',
|
||||
secretAccessKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
|
||||
sessionToken: 'request-session-token',
|
||||
service: 'dynamodb',
|
||||
region: 'us-east-1',
|
||||
profileName: 'dev'
|
||||
};
|
||||
expect(result.awsv4config).toEqual(expected);
|
||||
});
|
||||
});
|
||||
|
||||
describe('NTLM Authentication', () => {
|
||||
it('If request auth is NTLM', () => {
|
||||
item.request.auth = {
|
||||
mode: 'ntlm',
|
||||
ntlm: {
|
||||
username: 'testUser',
|
||||
password: 'testPass123',
|
||||
domain: 'testDomain'
|
||||
}
|
||||
};
|
||||
|
||||
const result = prepareRequest(item);
|
||||
const expected = {
|
||||
username: 'testUser',
|
||||
password: 'testPass123',
|
||||
domain: 'testDomain'
|
||||
};
|
||||
expect(result.ntlmConfig).toEqual(expected);
|
||||
});
|
||||
});
|
||||
|
||||
describe('WSSE Authentication', () => {
|
||||
it('If request auth is WSSE', () => {
|
||||
item.request.auth = {
|
||||
mode: 'wsse',
|
||||
wsse: {
|
||||
username: 'requestUser',
|
||||
password: 'requestPass'
|
||||
}
|
||||
};
|
||||
|
||||
const result = prepareRequest(item);
|
||||
expect(result.headers).toHaveProperty('X-WSSE');
|
||||
expect(result.headers['X-WSSE']).toContain('UsernameToken Username="requestUser"');
|
||||
expect(result.headers['X-WSSE']).toContain('PasswordDigest="');
|
||||
expect(result.headers['X-WSSE']).toContain('Nonce="');
|
||||
expect(result.headers['X-WSSE']).toContain('Created="');
|
||||
});
|
||||
});
|
||||
|
||||
describe('Digest Authentication', () => {
|
||||
it('If request auth is digest auth', () => {
|
||||
item.request.auth = {
|
||||
mode: 'digest',
|
||||
digest: {
|
||||
username: 'requestUser',
|
||||
password: 'requestPass123'
|
||||
}
|
||||
};
|
||||
|
||||
const result = prepareRequest(item);
|
||||
const expected = {
|
||||
username: 'requestUser',
|
||||
password: 'requestPass123'
|
||||
};
|
||||
expect(result.digestConfig).toEqual(expected);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user