Skip to content

Commit

Permalink
merge with base branch
Browse files Browse the repository at this point in the history
  • Loading branch information
almostinf committed Oct 1, 2024
2 parents ab5ec27 + a644573 commit 4bd24a8
Show file tree
Hide file tree
Showing 19 changed files with 194 additions and 178 deletions.
7 changes: 4 additions & 3 deletions api/controller/emergency_contact.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"github.com/moira-alert/moira/api"
"github.com/moira-alert/moira/api/dto"
moiradb "github.com/moira-alert/moira/database"
"github.com/moira-alert/moira/datatypes"
)

// ErrEmptyEmergencyContactID error occurring when user did not specify contact id.
Expand Down Expand Up @@ -42,7 +43,7 @@ func GetEmergencyContact(database moira.Database, contactID string) (*dto.Emerge
func verifyEmergencyContactAccess(
database moira.Database,
auth *api.Authorization,
emergencyContact moira.EmergencyContact,
emergencyContact datatypes.EmergencyContact,
userLogin string,
) *api.ErrorResponse {
contact, err := database.GetContact(emergencyContact.ContactID)
Expand All @@ -69,7 +70,7 @@ func CreateEmergencyContact(
return dto.SaveEmergencyContactResponse{}, nil
}

emergencyContact := moira.EmergencyContact(*emergencyContactDTO)
emergencyContact := datatypes.EmergencyContact(*emergencyContactDTO)
if emergencyContact.ContactID == "" {
return dto.SaveEmergencyContactResponse{}, api.ErrorInvalidRequest(ErrEmptyEmergencyContactID)
}
Expand All @@ -93,7 +94,7 @@ func UpdateEmergencyContact(database moira.Database, contactID string, emergency
return dto.SaveEmergencyContactResponse{}, nil
}

emergencyContact := moira.EmergencyContact(*emergencyContactDTO)
emergencyContact := datatypes.EmergencyContact(*emergencyContactDTO)
emergencyContact.ContactID = contactID

if err := database.SaveEmergencyContact(emergencyContact); err != nil {
Expand Down
21 changes: 11 additions & 10 deletions api/controller/emergency_contact_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"github.com/moira-alert/moira/api"
"github.com/moira-alert/moira/api/dto"
moiradb "github.com/moira-alert/moira/database"
"github.com/moira-alert/moira/datatypes"
mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert"
. "github.com/smartystreets/goconvey/convey"
"go.uber.org/mock/gomock"
Expand All @@ -18,22 +19,22 @@ var (
testContactID = "test-contact-id"
testContactID2 = "test-contact-id2"

testEmergencyContact = moira.EmergencyContact{
testEmergencyContact = datatypes.EmergencyContact{
ContactID: testContactID,
HeartbeatTypes: []moira.HeartbeatType{moira.HeartbeatNotifierOff},
HeartbeatTypes: []datatypes.HeartbeatType{datatypes.HeartbeatNotifierOff},
}
testEmergencyContact2 = moira.EmergencyContact{
testEmergencyContact2 = datatypes.EmergencyContact{
ContactID: testContactID2,
HeartbeatTypes: []moira.HeartbeatType{moira.HearbeatTypeNotSet},
HeartbeatTypes: []datatypes.HeartbeatType{datatypes.HearbeatTypeNotSet},
}

testEmergencyContactDTO = dto.EmergencyContact{
ContactID: testContactID,
HeartbeatTypes: []moira.HeartbeatType{moira.HeartbeatNotifierOff},
HeartbeatTypes: []datatypes.HeartbeatType{datatypes.HeartbeatNotifierOff},
}
testEmergencyContact2DTO = dto.EmergencyContact{
ContactID: testContactID2,
HeartbeatTypes: []moira.HeartbeatType{moira.HearbeatTypeNotSet},
HeartbeatTypes: []datatypes.HeartbeatType{datatypes.HearbeatTypeNotSet},
}
)

Expand All @@ -55,7 +56,7 @@ func TestGetEmergencyContacts(t *testing.T) {
})

Convey("With some saved emergency contacts in database", func() {
database.EXPECT().GetEmergencyContacts().Return([]*moira.EmergencyContact{&testEmergencyContact, &testEmergencyContact2}, nil)
database.EXPECT().GetEmergencyContacts().Return([]*datatypes.EmergencyContact{&testEmergencyContact, &testEmergencyContact2}, nil)
expectedEmergencyContactList := &dto.EmergencyContactList{
List: []dto.EmergencyContact{testEmergencyContactDTO, testEmergencyContact2DTO},
}
Expand All @@ -74,7 +75,7 @@ func TestGetEmergencyContact(t *testing.T) {

Convey("Test GetEmergencyContact", t, func() {
Convey("With unexisted emergency contact", func() {
database.EXPECT().GetEmergencyContact(testContactID).Return(moira.EmergencyContact{}, moiradb.ErrNil)
database.EXPECT().GetEmergencyContact(testContactID).Return(datatypes.EmergencyContact{}, moiradb.ErrNil)

emergencyContact, err := GetEmergencyContact(database, testContactID)
So(err, ShouldResemble, api.ErrorNotFound(fmt.Sprintf("emergency contact with ID '%s' does not exists", testContactID)))
Expand All @@ -83,7 +84,7 @@ func TestGetEmergencyContact(t *testing.T) {

Convey("With undefined db error", func() {
expectedErr := errors.New("test-error")
database.EXPECT().GetEmergencyContact(testContactID).Return(moira.EmergencyContact{}, expectedErr)
database.EXPECT().GetEmergencyContact(testContactID).Return(datatypes.EmergencyContact{}, expectedErr)

emergencyContact, err := GetEmergencyContact(database, testContactID)
So(err, ShouldResemble, api.ErrorInternalServer(expectedErr))
Expand Down Expand Up @@ -285,7 +286,7 @@ func TestUpdateEmergencyContact(t *testing.T) {

Convey("With empty contact id", func() {
emergencyContactDTO := dto.EmergencyContact{
HeartbeatTypes: []moira.HeartbeatType{moira.HeartbeatNotifierOff},
HeartbeatTypes: []datatypes.HeartbeatType{datatypes.HeartbeatNotifierOff},
}
database.EXPECT().SaveEmergencyContact(testEmergencyContact).Return(nil)

Expand Down
5 changes: 3 additions & 2 deletions api/controller/team_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"github.com/moira-alert/moira/api"
"github.com/moira-alert/moira/api/dto"
"github.com/moira-alert/moira/database"
"github.com/moira-alert/moira/datatypes"
mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert"
. "github.com/smartystreets/goconvey/convey"
"go.uber.org/mock/gomock"
Expand Down Expand Up @@ -642,7 +643,7 @@ func TestGetTeamSettings(t *testing.T) {
subscriptions := []*moira.SubscriptionData{{ID: subscriptionIDs[0]}, {ID: subscriptionIDs[1]}}
contactIDs := []string{uuid.Must(uuid.NewV4()).String(), uuid.Must(uuid.NewV4()).String()}
contacts := []*moira.ContactData{{ID: contactIDs[0]}, {ID: contactIDs[1]}}
emergencyContacts := []*moira.EmergencyContact{{ContactID: contactIDs[0]}, {ContactID: contactIDs[1]}}
emergencyContacts := []*datatypes.EmergencyContact{{ContactID: contactIDs[0]}, {ContactID: contactIDs[1]}}

database.EXPECT().GetTeamSubscriptionIDs(teamID).Return(subscriptionIDs, nil)
database.EXPECT().GetSubscriptions(subscriptionIDs).Return(subscriptions, nil)
Expand All @@ -665,7 +666,7 @@ func TestGetTeamSettings(t *testing.T) {
database.EXPECT().GetSubscriptions([]string{}).Return([]*moira.SubscriptionData{}, nil)
database.EXPECT().GetTeamContactIDs(teamID).Return([]string{}, nil)
database.EXPECT().GetContacts([]string{}).Return([]*moira.ContactData{}, nil)
database.EXPECT().GetEmergencyContactsByIDs([]string{}).Return([]*moira.EmergencyContact{}, nil)
database.EXPECT().GetEmergencyContactsByIDs([]string{}).Return([]*datatypes.EmergencyContact{}, nil)

settings, err := GetTeamSettings(database, teamID)
So(err, ShouldBeNil)
Expand Down
9 changes: 5 additions & 4 deletions api/controller/user_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"github.com/moira-alert/moira"
"github.com/moira-alert/moira/api"
"github.com/moira-alert/moira/api/dto"
"github.com/moira-alert/moira/datatypes"
mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert"
. "github.com/smartystreets/goconvey/convey"
"go.uber.org/mock/gomock"
Expand All @@ -27,7 +28,7 @@ func TestGetUserSettings(t *testing.T) {
contactIDs := []string{uuid.Must(uuid.NewV4()).String(), uuid.Must(uuid.NewV4()).String()}
contacts := []*moira.ContactData{{ID: contactIDs[0]}, {ID: contactIDs[1]}}

emergencyContacts := []*moira.EmergencyContact{{ContactID: contactIDs[0]}, {ContactID: contactIDs[1]}}
emergencyContacts := []*datatypes.EmergencyContact{{ContactID: contactIDs[0]}, {ContactID: contactIDs[1]}}

database.EXPECT().GetUserSubscriptionIDs(login).Return(subscriptionIDs, nil)
database.EXPECT().GetSubscriptions(subscriptionIDs).Return(subscriptions, nil)
Expand All @@ -50,7 +51,7 @@ func TestGetUserSettings(t *testing.T) {
database.EXPECT().GetSubscriptions([]string{}).Return([]*moira.SubscriptionData{}, nil)
database.EXPECT().GetUserContactIDs(login).Return([]string{}, nil)
database.EXPECT().GetContacts([]string{}).Return([]*moira.ContactData{}, nil)
database.EXPECT().GetEmergencyContactsByIDs([]string{}).Return([]*moira.EmergencyContact{}, nil)
database.EXPECT().GetEmergencyContactsByIDs([]string{}).Return([]*datatypes.EmergencyContact{}, nil)

settings, err := GetUserSettings(database, login, auth)
So(err, ShouldBeNil)
Expand All @@ -71,7 +72,7 @@ func TestGetUserSettings(t *testing.T) {
database.EXPECT().GetSubscriptions([]string{}).Return([]*moira.SubscriptionData{}, nil)
database.EXPECT().GetUserContactIDs(login).Return([]string{}, nil)
database.EXPECT().GetContacts([]string{}).Return([]*moira.ContactData{}, nil)
database.EXPECT().GetEmergencyContactsByIDs([]string{}).Return([]*moira.EmergencyContact{}, nil)
database.EXPECT().GetEmergencyContactsByIDs([]string{}).Return([]*datatypes.EmergencyContact{}, nil)

settings, err := GetUserSettings(database, login, authFull)
So(err, ShouldBeNil)
Expand All @@ -88,7 +89,7 @@ func TestGetUserSettings(t *testing.T) {
database.EXPECT().GetSubscriptions([]string{}).Return([]*moira.SubscriptionData{}, nil)
database.EXPECT().GetUserContactIDs(adminLogin).Return([]string{}, nil)
database.EXPECT().GetContacts([]string{}).Return([]*moira.ContactData{}, nil)
database.EXPECT().GetEmergencyContactsByIDs([]string{}).Return([]*moira.EmergencyContact{}, nil)
database.EXPECT().GetEmergencyContactsByIDs([]string{}).Return([]*datatypes.EmergencyContact{}, nil)

settings, err := GetUserSettings(database, adminLogin, authFull)
So(err, ShouldBeNil)
Expand Down
8 changes: 4 additions & 4 deletions api/dto/emergency_contact.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@ import (
"fmt"
"net/http"

"github.com/moira-alert/moira"
"github.com/moira-alert/moira/datatypes"
)

// ErrEmptyHeartbeatTypes means that the user has not specified any heartbeat types.
var ErrEmptyHeartbeatTypes = errors.New("heartbeat types can not be empty")

// EmergencyContact is the DTO structure for contacts to which notifications will go in the event of special internal Moira problems.
type EmergencyContact struct {
ContactID string `json:"contact_id" example:"1dd38765-c5be-418d-81fa-7a5f879c2315"`
HeartbeatTypes []moira.HeartbeatType `json:"heartbeat_types" example:"notifier_off"`
ContactID string `json:"contact_id" example:"1dd38765-c5be-418d-81fa-7a5f879c2315"`
HeartbeatTypes []datatypes.HeartbeatType `json:"heartbeat_types" example:"notifier_off"`
}

// Render is a function that implements chi Renderer interface for EmergencyContact.
Expand Down Expand Up @@ -48,7 +48,7 @@ func (*EmergencyContactList) Render(w http.ResponseWriter, r *http.Request) erro
}

// FromEmergencyContacts a method that converts emergency contacts to dto emergency ccontact list.
func FromEmergencyContacts(emergencyContacts []*moira.EmergencyContact) *EmergencyContactList {
func FromEmergencyContacts(emergencyContacts []*datatypes.EmergencyContact) *EmergencyContactList {
emergencyContactsDTO := &EmergencyContactList{
List: make([]EmergencyContact, 0, len(emergencyContacts)),
}
Expand Down
8 changes: 4 additions & 4 deletions api/dto/emergency_contact_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@ package dto
import (
"testing"

"github.com/moira-alert/moira"
"github.com/moira-alert/moira/datatypes"
. "github.com/smartystreets/goconvey/convey"
)

var (
testContactID = "test-contact-id"

testEmergencyContact = moira.EmergencyContact{
testEmergencyContact = datatypes.EmergencyContact{
ContactID: testContactID,
HeartbeatTypes: []moira.HeartbeatType{moira.HeartbeatNotifierOff},
HeartbeatTypes: []datatypes.HeartbeatType{datatypes.HeartbeatNotifierOff},
}
)

Expand All @@ -32,7 +32,7 @@ func TestFromEmergencyContacts(t *testing.T) {
EmergencyContact(testEmergencyContact),
},
}
emergencyContacts := []*moira.EmergencyContact{
emergencyContacts := []*datatypes.EmergencyContact{
&testEmergencyContact,
nil,
}
Expand Down
35 changes: 18 additions & 17 deletions api/handler/emergency_contact_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import (
"github.com/moira-alert/moira/api/dto"
"github.com/moira-alert/moira/api/middleware"
moiradb "github.com/moira-alert/moira/database"
"github.com/moira-alert/moira/datatypes"
mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert"
. "github.com/smartystreets/goconvey/convey"
"go.uber.org/mock/gomock"
Expand All @@ -25,13 +26,13 @@ var (
testContactID = "test-contact-id"
testContactID2 = "test-contact-id2"

testEmergencyContact = moira.EmergencyContact{
testEmergencyContact = datatypes.EmergencyContact{
ContactID: testContactID,
HeartbeatTypes: []moira.HeartbeatType{moira.HeartbeatNotifierOff},
HeartbeatTypes: []datatypes.HeartbeatType{datatypes.HeartbeatNotifierOff},
}
testEmergencyContact2 = moira.EmergencyContact{
testEmergencyContact2 = datatypes.EmergencyContact{
ContactID: testContactID2,
HeartbeatTypes: []moira.HeartbeatType{moira.HearbeatTypeNotSet},
HeartbeatTypes: []datatypes.HeartbeatType{datatypes.HearbeatTypeNotSet},
}

login = "testLogin"
Expand All @@ -51,7 +52,7 @@ func TestGetEmergencyContacts(t *testing.T) {
mockDb := mock_moira_alert.NewMockDatabase(mockCtrl)

Convey("Successfully get emergency contacts", func() {
mockDb.EXPECT().GetEmergencyContacts().Return([]*moira.EmergencyContact{
mockDb.EXPECT().GetEmergencyContacts().Return([]*datatypes.EmergencyContact{
&testEmergencyContact,
&testEmergencyContact2,
}, nil)
Expand Down Expand Up @@ -141,7 +142,7 @@ func TestGetEmergencyContactByID(t *testing.T) {

Convey("Not found error from database", func() {
dbErr := moiradb.ErrNil
mockDb.EXPECT().GetEmergencyContact(testContactID).Return(moira.EmergencyContact{}, dbErr)
mockDb.EXPECT().GetEmergencyContact(testContactID).Return(datatypes.EmergencyContact{}, dbErr)
database = mockDb

expectedErr := &api.ErrorResponse{
Expand Down Expand Up @@ -169,7 +170,7 @@ func TestGetEmergencyContactByID(t *testing.T) {

Convey("Internal error from database", func() {
dbErr := errors.New("get emergency contact error")
mockDb.EXPECT().GetEmergencyContact(testContactID).Return(moira.EmergencyContact{}, dbErr)
mockDb.EXPECT().GetEmergencyContact(testContactID).Return(datatypes.EmergencyContact{}, dbErr)
database = mockDb

expectedErr := &api.ErrorResponse{
Expand Down Expand Up @@ -245,8 +246,8 @@ func TestCreateEmergencyContact(t *testing.T) {
})

Convey("Try to create emergency contact without contact id", func() {
emergencyContact := moira.EmergencyContact{
HeartbeatTypes: []moira.HeartbeatType{moira.HeartbeatNotifierOff},
emergencyContact := datatypes.EmergencyContact{
HeartbeatTypes: []datatypes.HeartbeatType{datatypes.HeartbeatNotifierOff},
}
emergencyContactDTO := dto.EmergencyContact(emergencyContact)

Expand Down Expand Up @@ -281,7 +282,7 @@ func TestCreateEmergencyContact(t *testing.T) {
})

Convey("Try to create emergency contact without heartbeat types", func() {
emergencyContact := moira.EmergencyContact{
emergencyContact := datatypes.EmergencyContact{
ContactID: testContactID,
}
emergencyContactDTO := dto.EmergencyContact(emergencyContact)
Expand Down Expand Up @@ -317,9 +318,9 @@ func TestCreateEmergencyContact(t *testing.T) {
})

Convey("Try to create emergency contact with invalid heartbeat type", func() {
emergencyContact := moira.EmergencyContact{
emergencyContact := datatypes.EmergencyContact{
ContactID: testContactID,
HeartbeatTypes: []moira.HeartbeatType{
HeartbeatTypes: []datatypes.HeartbeatType{
"notifier_on",
},
}
Expand Down Expand Up @@ -471,8 +472,8 @@ func TestUpdateEmergencyContact(t *testing.T) {
})

Convey("Successfully update emergency contact without contact id in dto", func() {
emergencyContact := moira.EmergencyContact{
HeartbeatTypes: []moira.HeartbeatType{moira.HeartbeatNotifierOff},
emergencyContact := datatypes.EmergencyContact{
HeartbeatTypes: []datatypes.HeartbeatType{datatypes.HeartbeatNotifierOff},
}
emergencyContactDTO := dto.EmergencyContact(emergencyContact)

Expand Down Expand Up @@ -506,7 +507,7 @@ func TestUpdateEmergencyContact(t *testing.T) {
})

Convey("Invalid Request without heartbeat types in dto", func() {
emergencyContact := moira.EmergencyContact{
emergencyContact := datatypes.EmergencyContact{
ContactID: testContactID,
}
emergencyContactDTO := dto.EmergencyContact(emergencyContact)
Expand Down Expand Up @@ -540,9 +541,9 @@ func TestUpdateEmergencyContact(t *testing.T) {
})

Convey("Invalid Request with undefined heartbeat type in dto", func() {
emergencyContact := moira.EmergencyContact{
emergencyContact := datatypes.EmergencyContact{
ContactID: testContactID,
HeartbeatTypes: []moira.HeartbeatType{
HeartbeatTypes: []datatypes.HeartbeatType{
"notifier_on",
},
}
Expand Down
2 changes: 1 addition & 1 deletion database/redis/contact.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ func (connector *DbConnector) GetContact(id string) (moira.ContactData, error) {

contact, err := reply.Contact(result)
if err != nil {
return contact, fmt.Errorf("failed to reply contact '%s': %w", id, err)
return contact, fmt.Errorf("failed to deserialize contact '%s': %w", id, err)
}

contact.ID = id
Expand Down
Loading

0 comments on commit 4bd24a8

Please sign in to comment.