mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-16 06:07:21 +01:00
fix(api): Set platform and agent to Unknown if headers are not passed in
This commit is contained in:
@@ -94,7 +94,19 @@ describe('analyticsService', () => {
|
|||||||
amplitudeNock
|
amplitudeNock
|
||||||
.filteringPath(/httpapi.*platform.*3rd\%20Party.*/g, '');
|
.filteringPath(/httpapi.*platform.*3rd\%20Party.*/g, '');
|
||||||
|
|
||||||
data.headers = {};
|
data.headers = {'x-client': 'some-third-party'};
|
||||||
|
|
||||||
|
return analyticsService.track(eventType, data)
|
||||||
|
.then(() => {
|
||||||
|
amplitudeNock.done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('logs unknown if headers are not passed in', () => {
|
||||||
|
amplitudeNock
|
||||||
|
.filteringPath(/httpapi.*platform.*Unknown.*/g, '');
|
||||||
|
|
||||||
|
delete data.headers;
|
||||||
|
|
||||||
return analyticsService.track(eventType, data)
|
return analyticsService.track(eventType, data)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
@@ -108,6 +120,11 @@ describe('analyticsService', () => {
|
|||||||
amplitudeNock
|
amplitudeNock
|
||||||
.filteringPath(/httpapi.*os.*name.*Other.*/g, '');
|
.filteringPath(/httpapi.*os.*name.*Other.*/g, '');
|
||||||
|
|
||||||
|
data.headers = {
|
||||||
|
'x-client': 'thrid-party',
|
||||||
|
'user-agent': 'foo',
|
||||||
|
};
|
||||||
|
|
||||||
return analyticsService.track(eventType, data)
|
return analyticsService.track(eventType, data)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
amplitudeNock.done();
|
amplitudeNock.done();
|
||||||
@@ -118,8 +135,10 @@ describe('analyticsService', () => {
|
|||||||
amplitudeNock
|
amplitudeNock
|
||||||
.filteringPath(/httpapi.*os.*name.*iOS.*/g, '');
|
.filteringPath(/httpapi.*os.*name.*iOS.*/g, '');
|
||||||
|
|
||||||
data.headers = {'x-client': 'habitica-ios',
|
data.headers = {
|
||||||
'user-agent': 'Habitica/148 (iPhone; iOS 9.3; Scale/2.00)'};
|
'x-client': 'habitica-ios',
|
||||||
|
'user-agent': 'Habitica/148 (iPhone; iOS 9.3; Scale/2.00)',
|
||||||
|
};
|
||||||
|
|
||||||
return analyticsService.track(eventType, data)
|
return analyticsService.track(eventType, data)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
@@ -131,7 +150,22 @@ describe('analyticsService', () => {
|
|||||||
amplitudeNock
|
amplitudeNock
|
||||||
.filteringPath(/httpapi.*os.*name.*Android.*/g, '');
|
.filteringPath(/httpapi.*os.*name.*Android.*/g, '');
|
||||||
|
|
||||||
data.headers = {'x-client': 'habitica-android'};
|
data.headers = {
|
||||||
|
'x-client': 'habitica-android',
|
||||||
|
'user-agent': 'Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19',
|
||||||
|
};
|
||||||
|
|
||||||
|
return analyticsService.track(eventType, data)
|
||||||
|
.then(() => {
|
||||||
|
amplitudeNock.done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('sets Unkown if headers are not passed in', () => {
|
||||||
|
amplitudeNock
|
||||||
|
.filteringPath(/httpapi.*Unknown.*/g, '');
|
||||||
|
|
||||||
|
delete data.headers;
|
||||||
|
|
||||||
return analyticsService.track(eventType, data)
|
return analyticsService.track(eventType, data)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
|||||||
@@ -89,6 +89,10 @@ let _formatUserData = (user) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let _formatPlatformForAmplitude = (platform) => {
|
let _formatPlatformForAmplitude = (platform) => {
|
||||||
|
if (!platform) {
|
||||||
|
return 'Unknown';
|
||||||
|
}
|
||||||
|
|
||||||
if (platform in PLATFORM_MAP) {
|
if (platform in PLATFORM_MAP) {
|
||||||
return PLATFORM_MAP[platform];
|
return PLATFORM_MAP[platform];
|
||||||
}
|
}
|
||||||
@@ -97,6 +101,10 @@ let _formatPlatformForAmplitude = (platform) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let _formatUserAgentForAmplitude = (platform, agentString) => {
|
let _formatUserAgentForAmplitude = (platform, agentString) => {
|
||||||
|
if (!agentString) {
|
||||||
|
return 'Unknown';
|
||||||
|
}
|
||||||
|
|
||||||
let agent = useragent.lookup(agentString).toJSON();
|
let agent = useragent.lookup(agentString).toJSON();
|
||||||
let formattedAgent = {};
|
let formattedAgent = {};
|
||||||
if (platform === 'iOS' || platform === 'Android') {
|
if (platform === 'iOS' || platform === 'Android') {
|
||||||
@@ -115,8 +123,8 @@ let _formatUserAgentForAmplitude = (platform, agentString) => {
|
|||||||
|
|
||||||
let _formatDataForAmplitude = (data) => {
|
let _formatDataForAmplitude = (data) => {
|
||||||
let event_properties = omit(data, AMPLITUDE_PROPERTIES_TO_SCRUB);
|
let event_properties = omit(data, AMPLITUDE_PROPERTIES_TO_SCRUB);
|
||||||
let platform = _formatPlatformForAmplitude(data.headers['x-client']);
|
let platform = _formatPlatformForAmplitude(data.headers && data.headers['x-client']);
|
||||||
let agent = _formatUserAgentForAmplitude(platform, data.headers['user-agent']);
|
let agent = _formatUserAgentForAmplitude(platform, data.headers && data.headers['user-agent']);
|
||||||
let ampData = {
|
let ampData = {
|
||||||
user_id: data.uuid || 'no-user-id-was-provided',
|
user_id: data.uuid || 'no-user-id-was-provided',
|
||||||
platform,
|
platform,
|
||||||
|
|||||||
Reference in New Issue
Block a user