import 'package:dart_spectre/spectre.dart'; import 'package:test/test.dart'; import 'package:xml/xml.dart'; import 'dart:io'; 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"); var spectre = Spectre("Robert Lee Mitchell", "banana colored duckling", scoper); var pw = spectre.site("jojodev.com", scope: Scope.identification, templateType: Template.maximum, counter: 2); expect(pw, equals("Ig^JIcxD!*)TbefJBi6-")); }); 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); 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)); }); }); }); }