dart-spectre/test/spectre_test.dart

64 lines
2.4 KiB
Dart

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));
});
});
});
}