forked from rmanguinho/clean-flutter-app
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ensure LocalStorageAdapter calls save secure with correct values
- Loading branch information
1 parent
f29bd32
commit 89cab61
Showing
7 changed files
with
130 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,2 @@ | ||
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" | ||
#include "Generated.xcconfig" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,2 @@ | ||
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" | ||
#include "Generated.xcconfig" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
# Uncomment this line to define a global platform for your project | ||
# platform :ios, '9.0' | ||
|
||
# CocoaPods analytics sends network stats synchronously affecting flutter build latency. | ||
ENV['COCOAPODS_DISABLE_STATS'] = 'true' | ||
|
||
project 'Runner', { | ||
'Debug' => :debug, | ||
'Profile' => :release, | ||
'Release' => :release, | ||
} | ||
|
||
def parse_KV_file(file, separator='=') | ||
file_abs_path = File.expand_path(file) | ||
if !File.exists? file_abs_path | ||
return []; | ||
end | ||
generated_key_values = {} | ||
skip_line_start_symbols = ["#", "/"] | ||
File.foreach(file_abs_path) do |line| | ||
next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } | ||
plugin = line.split(pattern=separator) | ||
if plugin.length == 2 | ||
podname = plugin[0].strip() | ||
path = plugin[1].strip() | ||
podpath = File.expand_path("#{path}", file_abs_path) | ||
generated_key_values[podname] = podpath | ||
else | ||
puts "Invalid plugin specification: #{line}" | ||
end | ||
end | ||
generated_key_values | ||
end | ||
|
||
target 'Runner' do | ||
use_frameworks! | ||
use_modular_headers! | ||
|
||
# Flutter Pod | ||
|
||
copied_flutter_dir = File.join(__dir__, 'Flutter') | ||
copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework') | ||
copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec') | ||
unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path) | ||
# Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet. | ||
# That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration. | ||
# CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist. | ||
|
||
generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig') | ||
unless File.exist?(generated_xcode_build_settings_path) | ||
raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first" | ||
end | ||
generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path) | ||
cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR']; | ||
|
||
unless File.exist?(copied_framework_path) | ||
FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir) | ||
end | ||
unless File.exist?(copied_podspec_path) | ||
FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir) | ||
end | ||
end | ||
|
||
# Keep pod path relative so it can be checked into Podfile.lock. | ||
pod 'Flutter', :path => 'Flutter' | ||
|
||
# Plugin Pods | ||
|
||
# Prepare symlinks folder. We use symlinks to avoid having Podfile.lock | ||
# referring to absolute paths on developers' machines. | ||
system('rm -rf .symlinks') | ||
system('mkdir -p .symlinks/plugins') | ||
plugin_pods = parse_KV_file('../.flutter-plugins') | ||
plugin_pods.each do |name, path| | ||
symlink = File.join('.symlinks', 'plugins', name) | ||
File.symlink(path, symlink) | ||
pod name, :path => File.join(symlink, 'ios') | ||
end | ||
end | ||
|
||
post_install do |installer| | ||
installer.pods_project.targets.each do |target| | ||
target.build_configurations.each do |config| | ||
config.build_settings['ENABLE_BITCODE'] = 'NO' | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -14,6 +14,7 @@ dependencies: | |
provider: | ||
equatable: | ||
get: | ||
flutter_secure_storage: | ||
|
||
dev_dependencies: | ||
flutter_test: | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
import 'package:faker/faker.dart'; | ||
import 'package:flutter_secure_storage/flutter_secure_storage.dart'; | ||
import 'package:meta/meta.dart'; | ||
import 'package:mockito/mockito.dart'; | ||
import 'package:test/test.dart'; | ||
|
||
import 'package:ForDev/data/cache/cache.dart'; | ||
|
||
class LocalStorageAdapter implements SaveSecureCacheStorage { | ||
final FlutterSecureStorage secureStorage; | ||
|
||
LocalStorageAdapter({@required this.secureStorage}); | ||
|
||
Future<void> saveSecure({@required String key, @required String value}) async { | ||
await secureStorage.write(key: key, value: value); | ||
} | ||
} | ||
|
||
class FlutterSecureStorageSpy extends Mock implements FlutterSecureStorage {} | ||
|
||
void main() { | ||
test('Should call save secure with correct values', () async { | ||
final secureStorage = FlutterSecureStorageSpy(); | ||
final sut = LocalStorageAdapter(secureStorage: secureStorage); | ||
final key = faker.lorem.word(); | ||
final value = faker.guid.guid(); | ||
|
||
await sut.saveSecure(key: key, value: value); | ||
|
||
verify(secureStorage.write(key: key, value: value)); | ||
}); | ||
} |