Skip to content

Commit

Permalink
test: add some basic tests of at_cli_commons utils.dart
Browse files Browse the repository at this point in the history
build: add at_cli_commons to the matrix in the GH actions workflow
  • Loading branch information
gkc committed Oct 22, 2024
1 parent 1bcae7f commit 2461c67
Show file tree
Hide file tree
Showing 3 changed files with 84 additions and 4 deletions.
1 change: 1 addition & 0 deletions .github/workflows/at_libraries.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ jobs:
- at_onboarding_cli
- at_commons
- at_utils
- at_cli_commons
steps:
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1

Expand Down
32 changes: 28 additions & 4 deletions packages/at_cli_commons/lib/src/utils.dart
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
import 'dart:io';
import 'package:at_client/at_client.dart';
import 'package:meta/meta.dart';
import 'package:path/path.dart' as path;

const String defaultPathUniqueID = 'singleton';

/// Generate a path like this:
/// $baseDir/.atsign/storage/$atSign/$progName/$uniqueID
/// (normalized to use platform-specific path separator)
String standardAtClientStoragePath({
required String baseDir,
required String atSign,
required String progName, // e.g. npt, sshnp, sshnpd, srvd etc
String uniqueID = 'single',
String uniqueID = defaultPathUniqueID,
}) {
return path.normalize('$baseDir'
'/.atsign'
Expand All @@ -20,18 +23,37 @@ String standardAtClientStoragePath({
.replaceAll('/', Platform.pathSeparator));
}

@visibleForTesting
Directory standardWindowsAtClientStorageDir({
required String atSign,
required String progName, // e.g. npt, sshnp, sshnpd, srvd etc
required String uniqueID,
}) {
return Directory(standardAtClientStoragePath(
baseDir: Platform.environment['TEMP']!,
atSign: atSign,
progName: progName,
uniqueID: uniqueID,
));
}

/// Generate a path like this:
/// $baseDir/.atsign/storage/$atSign/$progName/$uniqueID
/// (normalized to use platform-specific path separator)
/// where baseDir is either
/// - for Windows: `Platform.environment['TEMP']`
/// - for others: [getHomeDirectory]
Directory standardAtClientStorageDir({
required String atSign,
required String progName, // e.g. npt, sshnp, sshnpd, srvd etc
required String uniqueID,
}) {
if (Platform.isWindows) {
return Directory(standardAtClientStoragePath(
baseDir: Platform.environment['TEMP']!,
return standardAtClientStorageDir(
atSign: atSign,
progName: progName,
uniqueID: uniqueID,
));
);
} else {
return Directory(standardAtClientStoragePath(
baseDir: getHomeDirectory()!,
Expand Down Expand Up @@ -101,11 +123,13 @@ bool checkNonAscii(String test) {
}
}

/// $homeDirectory/.atsign/keys/${atSign}_key.atKeys
String getDefaultAtKeysFilePath(String homeDirectory, String atSign) {
return '$homeDirectory/.atsign/keys/${atSign}_key.atKeys'
.replaceAll('/', Platform.pathSeparator);
}

/// '$homeDirectory/.ssh/'
String getDefaultSshDirectory(String homeDirectory) {
return '$homeDirectory/.ssh/'.replaceAll('/', Platform.pathSeparator);
}
Expand Down
55 changes: 55 additions & 0 deletions packages/at_cli_commons/test/utils_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import 'dart:io';

import 'package:at_cli_commons/at_cli_commons.dart';
import 'package:test/test.dart';

void main() {
String atSign = '@alice';
String progName = 'test';
String uniqueID = '${DateTime.now().millisecondsSinceEpoch}';

test('test standardAtClientStoragePath without uniqueID', () {
expect(
standardAtClientStoragePath(
baseDir: '/tmp',
atSign: '@alice',
progName: 'test',
),
'/tmp/.atsign/storage/$atSign/$progName/$defaultPathUniqueID'
.replaceAll('/', Platform.pathSeparator));
});

test('test standardAtClientStoragePath with uniqueID', () {
expect(
standardAtClientStoragePath(
baseDir: '/tmp',
atSign: '@alice',
progName: 'test',
uniqueID: uniqueID,
),
'/tmp/.atsign/storage/$atSign/$progName/$uniqueID'
.replaceAll('/', Platform.pathSeparator));
});

test('test standardAtClientStorageDir', () {
Directory dir = standardAtClientStorageDir(
atSign: atSign,
progName: progName,
uniqueID: uniqueID,
);
if (Platform.isWindows) {
expect(
dir,
standardWindowsAtClientStorageDir(
atSign: atSign,
progName: progName,
uniqueID: uniqueID,
));
} else {
expect(
dir.path,
'${getHomeDirectory()}/.atsign/storage/$atSign/$progName/$uniqueID'
.replaceAll('/', Platform.pathSeparator));
}
});
}

0 comments on commit 2461c67

Please sign in to comment.