Initial Commit
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
credementials.json
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
package wikiauth
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/sadbox/mediawiki"
|
||||||
|
)
|
||||||
|
|
||||||
|
// WikiAuth is the structure responsible for wiki authentication. It's immuitable
|
||||||
|
// and thread safe. The only time it connects is to log in.
|
||||||
|
type WikiAuth struct {
|
||||||
|
url string
|
||||||
|
}
|
||||||
|
|
||||||
|
// New creates a new wiki authenticator instance.
|
||||||
|
func New(url string) *WikiAuth {
|
||||||
|
return &WikiAuth{url}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Login connects to the wiki and logs in. It will not reuse clients between
|
||||||
|
// logins, so it's thus threadsafe.
|
||||||
|
func (wikiAuth *WikiAuth) Login(username, password string) error {
|
||||||
|
client, err := mediawiki.New(wikiAuth.url, "")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = client.Login(username, password)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
client.Logout()
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
package wikiauth_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"os"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"git.aiterp.net/AiteRP/wikiauth"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAuth(t *testing.T) {
|
||||||
|
auth := struct {
|
||||||
|
Username string
|
||||||
|
Password string
|
||||||
|
}{}
|
||||||
|
|
||||||
|
file, err := os.Open("./credementials.json")
|
||||||
|
if err != nil {
|
||||||
|
t.Skip(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = json.NewDecoder(file).Decode(&auth)
|
||||||
|
if err != nil {
|
||||||
|
t.Skip(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
wiki := wikiauth.New("https://wiki.aiterp.net/api.php")
|
||||||
|
err = wiki.Login(auth.Username, auth.Password)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = wiki.Login(auth.Username+"_wrong", auth.Password)
|
||||||
|
if err == nil {
|
||||||
|
t.Error("Wrong username accepted!")
|
||||||
|
}
|
||||||
|
|
||||||
|
err = wiki.Login(auth.Username, auth.Password+"_wrong")
|
||||||
|
if err == nil {
|
||||||
|
t.Error("Wrong password accepted!")
|
||||||
|
}
|
||||||
|
|
||||||
|
err = wiki.Login(auth.Username, "")
|
||||||
|
if err == nil {
|
||||||
|
t.Error("No password accepted!")
|
||||||
|
}
|
||||||
|
|
||||||
|
err = wiki.Login("", auth.Password)
|
||||||
|
if err == nil {
|
||||||
|
t.Error("No username accepted!")
|
||||||
|
}
|
||||||
|
|
||||||
|
err = wiki.Login("", "")
|
||||||
|
if err == nil {
|
||||||
|
t.Error("No credementials accepted!")
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user