greatape/components/api/api_test.go

288 wiersze
6.0 KiB
Go

package api_test
import (
"os"
"testing"
"github.com/reiver/greatape/components/api/handlers"
"github.com/reiver/greatape/components/api/operations"
. "github.com/reiver/greatape/components/api/protobuf"
"github.com/reiver/greatape/components/constants"
. "github.com/reiver/greatape/components/contracts"
"github.com/reiver/greatape/components/core"
"github.com/reiver/greatape/components/model/repository"
"github.com/reiver/greatape/providers/outbound/email"
"github.com/reiver/greatape/providers/outbound/sms"
"github.com/xeronith/diamante/analytics"
"github.com/xeronith/diamante/logging"
"github.com/xeronith/diamante/server"
"github.com/xeronith/diamante/settings"
)
var api IApi
func TestReloadSystemComponentApi(test *testing.T) {
input := &SystemCallRequest{
Command: "",
}
if output, err := api.SystemCall(input); err != nil {
test.Fatal(err)
} else if output == nil {
test.Fail()
}
}
func TestEchoApi(test *testing.T) {
input := &EchoRequest{
Document: nil,
}
if output, err := api.Echo(input); err != nil {
test.Fatal(err)
} else if output == nil {
test.Fail()
}
}
func TestSignupApi(test *testing.T) {
input := &SignupRequest{
Username: "username",
Email: "email",
Password: "password",
}
if output, err := api.Signup(input); err != nil {
test.Fatal(err)
} else if output == nil {
test.Fail()
}
}
func TestVerifyApi(test *testing.T) {
input := &VerifyRequest{
Email: "email",
Token: "token",
Code: "code",
}
if output, err := api.Verify(input); err != nil {
test.Fatal(err)
} else if output == nil {
test.Fail()
}
}
func TestLoginApi(test *testing.T) {
input := &LoginRequest{
Email: "email",
Password: "password",
}
if output, err := api.Login(input); err != nil {
test.Fatal(err)
} else if output == nil {
test.Fail()
}
}
func TestGetProfileByUserApi(test *testing.T) {
input := &GetProfileByUserRequest{}
if output, err := api.GetProfileByUser(input); err != nil {
test.Fatal(err)
} else if output == nil {
test.Fail()
}
}
func TestUpdateProfileByUserApi(test *testing.T) {
input := &UpdateProfileByUserRequest{
DisplayName: "display_name",
Avatar: "avatar",
Banner: "banner",
Summary: "summary",
Github: "github",
}
if output, err := api.UpdateProfileByUser(input); err != nil {
test.Fatal(err)
} else if output == nil {
test.Fail()
}
}
func TestLogoutApi(test *testing.T) {
input := &LogoutRequest{}
if output, err := api.Logout(input); err != nil {
test.Fatal(err)
} else if output == nil {
test.Fail()
}
}
func TestWebfingerApi(test *testing.T) {
input := &WebfingerRequest{
Resource: "resource",
}
if output, err := api.Webfinger(input); err != nil {
test.Fatal(err)
} else if output == nil {
test.Fail()
}
}
func TestGetActorApi(test *testing.T) {
input := &GetActorRequest{
Username: "username",
}
if output, err := api.GetActor(input); err != nil {
test.Fatal(err)
} else if output == nil {
test.Fail()
}
}
func TestFollowActorApi(test *testing.T) {
input := &FollowActorRequest{
Username: "username",
Acct: "acct",
}
if output, err := api.FollowActor(input); err != nil {
test.Fatal(err)
} else if output == nil {
test.Fail()
}
}
func TestAuthorizeInteractionApi(test *testing.T) {
input := &AuthorizeInteractionRequest{
Uri: "uri",
}
if output, err := api.AuthorizeInteraction(input); err != nil {
test.Fatal(err)
} else if output == nil {
test.Fail()
}
}
func TestGetFollowersApi(test *testing.T) {
input := &GetFollowersRequest{
Username: "username",
}
if output, err := api.GetFollowers(input); err != nil {
test.Fatal(err)
} else if output == nil {
test.Fail()
}
}
func TestGetFollowingApi(test *testing.T) {
input := &GetFollowingRequest{
Username: "username",
}
if output, err := api.GetFollowing(input); err != nil {
test.Fatal(err)
} else if output == nil {
test.Fail()
}
}
func TestPostToOutboxApi(test *testing.T) {
input := &PostToOutboxRequest{
Username: "username",
Context: "context",
ActivityType: "activity_type",
To: "to",
AttributedTo: "attributed_to",
InReplyTo: "in_reply_to",
Content: "content",
}
if output, err := api.PostToOutbox(input); err != nil {
test.Fatal(err)
} else if output == nil {
test.Fail()
}
}
func TestGetOutboxApi(test *testing.T) {
input := &GetOutboxRequest{
Username: "username",
}
if output, err := api.GetOutbox(input); err != nil {
test.Fatal(err)
} else if output == nil {
test.Fail()
}
}
func TestPostToInboxApi(test *testing.T) {
input := &PostToInboxRequest{
Username: "username",
}
if output, err := api.PostToInbox(input); err != nil {
test.Fatal(err)
} else if output == nil {
test.Fail()
}
}
func TestGetInboxApi(test *testing.T) {
input := &GetInboxRequest{
Username: "username",
}
if output, err := api.GetInbox(input); err != nil {
test.Fatal(err)
} else if output == nil {
test.Fail()
}
}
//region Initialization
func TestMain(main *testing.M) {
logger := logging.NewLogger(false)
configuration := settings.NewTestConfiguration()
operationsFactory := operations.NewFactory()
handlersFactory := handlers.NewFactory()
measurementsProvider := analytics.NewInfluxDbProvider(configuration, logger)
emailProvider := email.NewProvider(logger)
smsProvider := sms.NewProvider(logger)
if testServer, err := server.New(configuration, operationsFactory, handlersFactory, OPCODES); err != nil {
logger.Fatal(err)
} else {
if err := repository.Initialize(configuration, logger); err != nil {
logger.Fatal(err)
}
if err := core.Initialize(configuration, logger); err != nil {
logger.Fatal(err)
}
testServer.Localizer().Register(constants.Errors)
testServer.SetSecurityHandler(core.Conductor.IdentityManager())
testServer.SetMeasurementsProvider(measurementsProvider)
testServer.SetEmailProvider(emailProvider)
testServer.SetSMSProvider(smsProvider)
go testServer.Start()
api = core.NewApi(testServer.PassiveEndpoint(), logger)
os.Exit(main.Run())
}
}
//endregion