• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

statuscompliance / status-backend / 19535672019

20 Nov 2025 11:41AM UTC coverage: 66.808% (-21.8%) from 88.591%
19535672019

Pull #246

github

web-flow
Merge c4a1dcf00 into b4c84c6d9
Pull Request #246: feat(databinder): add datasources persistence

1010 of 1684 branches covered (59.98%)

Branch coverage included in aggregate %.

124 of 808 new or added lines in 21 files covered. (15.35%)

2142 of 3034 relevant lines covered (70.6%)

22.66 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

21.43
/src/utils/databinder/datasource/datasourceUtils.js
1
/**
2
 * Utility functions for datasource operations
3
 */
4

5
/**
6
 * Sanitizes datasource object for response
7
 * @param {Object} datasource - The datasource object
8
 * @param {boolean} includeConfig - Whether to include config in response
9
 * @returns {Object} Sanitized datasource object
10
 */
11
export const sanitizeDatasource = (datasource, includeConfig = false) => ({
65!
12
  id: datasource.id,
13
  name: datasource.name,
14
  definitionId: datasource.definitionId,
15
  config: includeConfig ? datasource.config : '***HIDDEN***',
×
16
  description: datasource.description,
17
  environment: datasource.environment,
18
  isActive: datasource.isActive,
19
  createdBy: datasource.createdBy,
20
  version: datasource.version,
21
  lastTestedAt: datasource.lastTestedAt,
22
  testStatus: datasource.testStatus,
23
  createdAt: datasource.createdAt,
24
  updatedAt: datasource.updatedAt,
25
});
26

27
/**
28
 * Checks if user owns the datasource
29
 * @param {Object} datasource - The datasource object
30
 * @param {string} userId - The user ID
31
 * @returns {boolean} True if user owns the datasource
32
 */
33
export const checkOwnership = (datasource, userId) =>
65✔
NEW
34
  datasource && datasource.ownerId === userId;
×
35

36
/**
37
 * Normalizes datasource name
38
 * @param {string} name - The name to normalize
39
 * @returns {string} Normalized name
40
 */
41
export const normalizeName = (name) => 
65✔
NEW
42
  name.toLowerCase().replace(/\s+/g, '_');
×
43

44
/**
45
 * Generates unique instance ID
46
 * @param {string} userId - User ID
47
 * @param {string} normalizedName - Normalized name
48
 * @param {string} prefix - Optional prefix
49
 * @returns {string} Unique instance ID
50
 */
51
export const generateInstanceId = (userId, normalizedName, prefix = '') => {
65!
NEW
52
  const baseId = `${userId}_${normalizedName}_${Date.now()}`;
×
NEW
53
  return prefix ? `${prefix}_${baseId}` : baseId;
×
54
};
55

56
/**
57
 * Generates execution ID for tracking
58
 * @param {string} datasourceId - Datasource ID
59
 * @param {number} timestamp - Timestamp
60
 * @returns {string} Execution ID
61
 */
62
export const generateExecutionId = (datasourceId, timestamp = Date.now()) => 
65!
NEW
63
  `exec_${datasourceId}_${timestamp}_${Math.random().toString(36).substr(2, 9)}`;
×
64

65
/**
66
 * Extracts data from nested response structure
67
 * @param {any} result - The result to extract data from
68
 * @returns {any} Extracted data
69
 */
70
export const extractResultData = (result) => {
65✔
NEW
71
  if (result && typeof result === 'object' && result.data !== undefined) {
×
NEW
72
    return result.data;
×
73
  }
NEW
74
  return result;
×
75
};
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc