2021-11-16 22:51:44 +00:00
|
|
|
import 'package:dart_spectre/spectre.dart';
|
|
|
|
import 'package:test/test.dart';
|
2021-11-16 23:02:25 +00:00
|
|
|
import 'package:xml/xml.dart';
|
|
|
|
import 'dart:io';
|
2021-11-16 22:51:44 +00:00
|
|
|
|
|
|
|
void main() {
|
|
|
|
test("Example", () {
|
|
|
|
var spectre = Spectre("Robert Lee Mitchell", "banana colored duckling");
|
|
|
|
var pw = spectre.site("masterpasswordapp.com");
|
|
|
|
expect(pw, equals("Jejr5[RepuSosp"));
|
|
|
|
});
|
|
|
|
|
|
|
|
test("Example_second", () {
|
|
|
|
var scoper = SimpleScoper("com.jojodev.jolheiser");
|
2021-11-17 04:17:53 +00:00
|
|
|
var spectre =
|
|
|
|
Spectre("Robert Lee Mitchell", "banana colored duckling", scoper);
|
|
|
|
var pw = spectre.site("jojodev.com",
|
|
|
|
scope: Scope.identification,
|
|
|
|
templateType: Template.maximum,
|
|
|
|
counter: 2);
|
2021-11-16 22:51:44 +00:00
|
|
|
expect(pw, equals("Ig^JIcxD!*)TbefJBi6-"));
|
|
|
|
});
|
2021-11-16 23:02:25 +00:00
|
|
|
|
2021-11-17 04:17:53 +00:00
|
|
|
group("Spectre", () {
|
|
|
|
var testFile = File("test/spectre_tests.xml");
|
|
|
|
var xml = XmlDocument.parse(testFile.readAsStringSync());
|
|
|
|
var tests = xml.children[0];
|
|
|
|
var def = tests.children
|
|
|
|
.firstWhere((element) => element.nodeType == XmlNodeType.ELEMENT);
|
2021-11-16 23:02:25 +00:00
|
|
|
|
2021-11-17 04:17:53 +00:00
|
|
|
tests.children
|
|
|
|
.where((element) =>
|
|
|
|
element.nodeType == XmlNodeType.ELEMENT &&
|
|
|
|
element.getElement("result") != null)
|
|
|
|
.forEach((node) {
|
|
|
|
test(node.getAttribute("id")!, () {
|
|
|
|
var username = node.getElement("userName")?.text ??
|
|
|
|
def.getElement("userName")?.text;
|
|
|
|
var secret = node.getElement("userSecret")?.text ??
|
|
|
|
def.getElement("userSecret")?.text;
|
|
|
|
var site = node.getElement("siteName")?.text ??
|
|
|
|
def.getElement("siteName")?.text;
|
|
|
|
var resultType = node.getElement("resultType")?.text ??
|
|
|
|
def.getElement("resultType")?.text;
|
|
|
|
var templateType = Template.values.firstWhere((element) =>
|
|
|
|
element.toString() == "Template.${resultType!.toLowerCase()}");
|
|
|
|
var counter = int.parse((node.getElement("keyCounter")?.text ??
|
|
|
|
def.getElement("keyCounter")?.text)!);
|
|
|
|
var purpose = node.getElement("keyPurpose")?.text ??
|
|
|
|
def.getElement("keyPurpose")?.text;
|
|
|
|
var scopeType = Scope.values.firstWhere((element) =>
|
|
|
|
element.toString() == "Scope.${purpose!.toLowerCase()}");
|
|
|
|
var result =
|
|
|
|
node.getElement("result")?.text ?? def.getElement("result")?.text;
|
|
|
|
|
|
|
|
var s = Spectre(username!, secret!);
|
|
|
|
var pw = s.site(site!,
|
|
|
|
templateType: templateType, counter: counter, scope: scopeType);
|
|
|
|
expect(result, equals(pw));
|
|
|
|
});
|
|
|
|
});
|
2021-11-16 23:02:25 +00:00
|
|
|
});
|
2021-11-17 04:17:53 +00:00
|
|
|
}
|