mirror of
https://github.com/fleetdm/fleet
synced 2026-04-21 21:47:20 +00:00
<!-- Add the related story/sub-task/bug number, like Resolves #123, or remove if NA --> **Related issue:** Resolves #40054 # Checklist for submitter - [ ] Changes file added for user-visible changes in `changes/`, `orbit/changes/` or `ee/fleetd-chrome/changes`. - Already present in previous PR ## Testing - [x] Added/updated automated tests - [x] QA'd all new/changed functionality manually <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Chores** * Migrated logging to a structured, context-aware backend for clearer, richer diagnostics and consistent log formatting. * Introduced broader context propagation and adjusted internal interfaces to support the new logging approach (no end-user behavior changes). <!-- end of auto-generated comment: release notes by coderabbit.ai -->
156 lines
4.5 KiB
Go
156 lines
4.5 KiB
Go
package mysql
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/fleetdm/fleet/v4/server/fleet"
|
|
"github.com/fleetdm/fleet/v4/server/mdm/android"
|
|
"github.com/fleetdm/fleet/v4/server/platform/mysql/testing_utils"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestAndroidEnterprises(t *testing.T) {
|
|
ds := CreateMySQLDS(t)
|
|
|
|
cases := []struct {
|
|
name string
|
|
fn func(t *testing.T, ds *Datastore)
|
|
}{
|
|
{"CreateGetEnterprise", testCreateGetEnterprise},
|
|
{"UpdateEnterprise", testUpdateEnterprise},
|
|
{"DeleteEnterprises", testDeleteEnterprises},
|
|
{"GetEnterpriseBySignupToken", testGetEnterpriseBySignupToken},
|
|
}
|
|
for _, c := range cases {
|
|
t.Run(c.name, func(t *testing.T) {
|
|
defer testing_utils.TruncateTables(t, ds.primary, ds.logger, nil)
|
|
|
|
c.fn(t, ds)
|
|
})
|
|
}
|
|
}
|
|
|
|
func testCreateGetEnterprise(t *testing.T, ds *Datastore) {
|
|
_, err := ds.GetEnterpriseByID(testCtx(), 9999)
|
|
assert.True(t, fleet.IsNotFound(err))
|
|
|
|
const userID = uint(10)
|
|
id, err := ds.CreateEnterprise(testCtx(), userID)
|
|
require.NoError(t, err)
|
|
assert.NotZero(t, id)
|
|
|
|
result, err := ds.GetEnterpriseByID(testCtx(), id)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, android.Enterprise{ID: id}, result.Enterprise)
|
|
assert.Equal(t, userID, result.UserID)
|
|
}
|
|
|
|
func testUpdateEnterprise(t *testing.T, ds *Datastore) {
|
|
enterprise := &android.EnterpriseDetails{
|
|
Enterprise: android.Enterprise{
|
|
ID: 9999, // start with an invalid ID
|
|
EnterpriseID: "LC04bp524j",
|
|
},
|
|
SignupName: "signupUrls/C97372c91c6a85139",
|
|
TopicID: "topicId",
|
|
SignupToken: "signupToken",
|
|
}
|
|
err := ds.UpdateEnterprise(testCtx(), enterprise)
|
|
assert.Error(t, err)
|
|
|
|
const userID = uint(10)
|
|
id, err := ds.CreateEnterprise(testCtx(), userID)
|
|
require.NoError(t, err)
|
|
assert.NotZero(t, id)
|
|
|
|
enterprise.ID = id
|
|
err = ds.UpdateEnterprise(testCtx(), enterprise)
|
|
require.NoError(t, err)
|
|
|
|
enterprise.UserID = userID
|
|
resultEnriched, err := ds.GetEnterpriseByID(testCtx(), enterprise.ID)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, enterprise, resultEnriched)
|
|
|
|
resultEnrichedByToken, err := ds.GetEnterpriseBySignupToken(testCtx(), enterprise.SignupToken)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, enterprise, resultEnrichedByToken)
|
|
|
|
result, err := ds.GetEnterprise(testCtx())
|
|
require.NoError(t, err)
|
|
assert.Equal(t, enterprise.Enterprise, *result)
|
|
}
|
|
|
|
func testDeleteEnterprises(t *testing.T, ds *Datastore) {
|
|
err := ds.DeleteAllEnterprises(testCtx())
|
|
require.NoError(t, err)
|
|
err = ds.DeleteOtherEnterprises(testCtx(), 9999)
|
|
require.NoError(t, err)
|
|
|
|
enterprise := createEnterprise(t, ds)
|
|
result, err := ds.GetEnterpriseByID(testCtx(), enterprise.ID)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, enterprise, result)
|
|
|
|
// Create enterprise without enterprise_id
|
|
id, err := ds.CreateEnterprise(testCtx(), 10)
|
|
require.NoError(t, err)
|
|
assert.NotZero(t, id)
|
|
|
|
tempEnterprise := &android.EnterpriseDetails{
|
|
Enterprise: android.Enterprise{
|
|
ID: id,
|
|
EnterpriseID: "",
|
|
},
|
|
SignupName: "signupUrls/C97372c91c6a85139",
|
|
}
|
|
err = ds.UpdateEnterprise(testCtx(), tempEnterprise)
|
|
require.NoError(t, err)
|
|
|
|
err = ds.DeleteOtherEnterprises(testCtx(), enterprise.ID)
|
|
require.NoError(t, err)
|
|
result, err = ds.GetEnterpriseByID(testCtx(), enterprise.ID)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, enterprise, result)
|
|
_, err = ds.GetEnterpriseByID(testCtx(), tempEnterprise.ID)
|
|
assert.True(t, fleet.IsNotFound(err))
|
|
|
|
err = ds.DeleteAllEnterprises(testCtx())
|
|
require.NoError(t, err)
|
|
_, err = ds.GetEnterpriseByID(testCtx(), enterprise.ID)
|
|
assert.True(t, fleet.IsNotFound(err))
|
|
}
|
|
|
|
func testGetEnterpriseBySignupToken(t *testing.T, ds *Datastore) {
|
|
_, err := ds.GetEnterpriseBySignupToken(testCtx(), "nonexistent")
|
|
assert.True(t, fleet.IsNotFound(err))
|
|
|
|
enterprise := createEnterprise(t, ds)
|
|
|
|
result, err := ds.GetEnterpriseBySignupToken(testCtx(), enterprise.SignupToken)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, enterprise, result)
|
|
}
|
|
|
|
func createEnterprise(t *testing.T, ds *Datastore) *android.EnterpriseDetails {
|
|
enterprise := &android.EnterpriseDetails{
|
|
Enterprise: android.Enterprise{
|
|
ID: 9999, // start with an invalid ID
|
|
EnterpriseID: "LC04bp524j",
|
|
},
|
|
SignupName: "signupUrls/C97372c91c6a85139",
|
|
TopicID: "topicId",
|
|
SignupToken: "signupToken",
|
|
}
|
|
const userID = uint(10)
|
|
id, err := ds.CreateEnterprise(testCtx(), userID)
|
|
require.NoError(t, err)
|
|
assert.NotZero(t, id)
|
|
|
|
enterprise.ID = id
|
|
enterprise.UserID = userID
|
|
err = ds.UpdateEnterprise(testCtx(), enterprise)
|
|
require.NoError(t, err)
|
|
return enterprise
|
|
}
|