package spectre_test import ( _ "embed" "fmt" "go.jolheiser.com/go-spectre/testdata" "strconv" "testing" "go.jolheiser.com/go-spectre" ) func TestSpectre(t *testing.T) { cases, err := testdata.Cases() if err != nil { t.Log(err) t.FailNow() } for _, tc := range cases { t.Run(tc.ID, func(t *testing.T) { s, err := spectre.New(tc.UserName, tc.UserSecret) if err != nil { t.Logf("could not initialize spectre: %v", err) t.Fail() } counter, err := strconv.Atoi(tc.KeyCounter) if err != nil { t.Log("could not convert counter") t.Fail() } pass := s.Site(tc.SiteName, spectre.WithTemplate(spectre.Template(tc.ResultType)), spectre.WithCounter(counter), spectre.WithScope(spectre.Scope(tc.KeyPurpose)), ) if pass != tc.Result { t.Log("passwords did not match") t.Fail() } }) } } // From the website sanity check func Example() { s, err := spectre.New("Robert Lee Mitchell", "banana colored duckling") if err != nil { panic(err) } pw := s.Site("masterpasswordapp.com") fmt.Println(pw) // Output: Jejr5[RepuSosp } // Example with options func Example_second() { scoper := spectre.SimpleScoper{ Key: "com.jojodev.jolheiser", } s, err := spectre.New("Robert Lee Mitchell", "banana colored duckling", spectre.WithScoper(scoper)) if err != nil { panic(err) } pw := s.Site("jojodev.com", spectre.WithScope(spectre.Identification), spectre.WithTemplate(spectre.Maximum), spectre.WithCounter(2), // Password was leaked, so increment counter (example) ) fmt.Println(pw) // Output: Ig^JIcxD!*)TbefJBi6- }