1
0
mirror of https://github.com/mainflux/mainflux.git synced 2025-04-26 13:48:53 +08:00
Sammy Kerata Oina 06800c1038
NOISSUE - Unify group and clients implementations on things and users (#1793)
* unify groups repo implementation

Signed-off-by: SammyOina <sammyoina@gmail.com>

* unify clients implementation

Signed-off-by: SammyOina <sammyoina@gmail.com>

* closer client integration

Signed-off-by: SammyOina <sammyoina@gmail.com>

* further unification of groups

Signed-off-by: SammyOina <sammyoina@gmail.com>

* enable on update secret & owner

Signed-off-by: SammyOina <sammyoina@gmail.com>

* unify retrieve all

Signed-off-by: SammyOina <sammyoina@gmail.com>

* fully unify groups repository

Signed-off-by: SammyOina <sammyoina@gmail.com>

* add secret to retrieve all

Signed-off-by: SammyOina <sammyoina@gmail.com>

* save updated at

Signed-off-by: SammyOina <sammyoina@gmail.com>

* fix test

Signed-off-by: SammyOina <sammyoina@gmail.com>

* fix retrieve all tests

Signed-off-by: SammyOina <sammyoina@gmail.com>

* restore files

Signed-off-by: SammyOina <sammyoina@gmail.com>

* fix build

Signed-off-by: SammyOina <sammyoina@gmail.com>

* remove unused files

Signed-off-by: SammyOina <sammyoina@gmail.com>

* fix retrieve all tests

Signed-off-by: SammyOina <sammyoina@gmail.com>

* fix linting

Signed-off-by: SammyOina <sammyoina@gmail.com>

* fix linting

Signed-off-by: SammyOina <sammyoina@gmail.com>

* restore broken changes

Signed-off-by: SammyOina <sammyoina@gmail.com>

* restore setup tests

Signed-off-by: SammyOina <sammyoina@gmail.com>

* update where condition

Signed-off-by: SammyOina <sammyoina@gmail.com>

* remove extra db object

Signed-off-by: SammyOina <sammyoina@gmail.com>

* unify groups test

Signed-off-by: SammyOina <sammyoina@gmail.com>

* unify clients test

Signed-off-by: SammyOina <sammyoina@gmail.com>

* remove unused variables

Signed-off-by: SammyOina <sammyoina@gmail.com>

* update changes

Signed-off-by: SammyOina <sammyoina@gmail.com>

* sync with master current updates

Signed-off-by: SammyOina <sammyoina@gmail.com>

* update test

Signed-off-by: SammyOina <sammyoina@gmail.com>

* fix tests

Signed-off-by: SammyOina <sammyoina@gmail.com>

* fix test

Signed-off-by: SammyOina <sammyoina@gmail.com>

* fix test

Signed-off-by: SammyOina <sammyoina@gmail.com>

* fix tests

Signed-off-by: SammyOina <sammyoina@gmail.com>

* match changes in #1877

Signed-off-by: SammyOina <sammyoina@gmail.com>

* separate things and users repos

Signed-off-by: SammyOina <sammyoina@gmail.com>

* remove comments
 implement retrieveBysecret in things only

Signed-off-by: SammyOina <sammyoina@gmail.com>

* remove exec

Signed-off-by: SammyOina <sammyoina@gmail.com>

* remove duplicate imports

Signed-off-by: SammyOina <sammyoina@gmail.com>

* wrap errors

Signed-off-by: SammyOina <sammyoina@gmail.com>

---------

Signed-off-by: SammyOina <sammyoina@gmail.com>
2023-08-08 12:19:54 +02:00

176 lines
4.4 KiB
Go

// Copyright (c) Mainflux
// SPDX-License-Identifier: Apache-2.0
package postgres_test
import (
"context"
"fmt"
"strings"
"testing"
"github.com/mainflux/mainflux/internal/testsutil"
mfclients "github.com/mainflux/mainflux/pkg/clients"
"github.com/mainflux/mainflux/pkg/errors"
"github.com/mainflux/mainflux/pkg/uuid"
cpostgres "github.com/mainflux/mainflux/users/clients/postgres"
"github.com/stretchr/testify/assert"
)
const (
maxNameSize = 254
)
var (
idProvider = uuid.New()
invalidName = strings.Repeat("m", maxNameSize+10)
password = "$tr0ngPassw0rd"
clientIdentity = "client-identity@example.com"
clientName = "client name"
)
func TestClientsSave(t *testing.T) {
t.Cleanup(func() { testsutil.CleanUpDB(t, db) })
repo := cpostgres.NewRepository(database)
uid := testsutil.GenerateUUID(t, idProvider)
cases := []struct {
desc string
client mfclients.Client
err error
}{
{
desc: "add new client successfully",
client: mfclients.Client{
ID: uid,
Name: clientName,
Credentials: mfclients.Credentials{
Identity: clientIdentity,
Secret: password,
},
Metadata: mfclients.Metadata{},
Status: mfclients.EnabledStatus,
},
err: nil,
},
{
desc: "add new client with an owner",
client: mfclients.Client{
ID: testsutil.GenerateUUID(t, idProvider),
Owner: uid,
Name: clientName,
Credentials: mfclients.Credentials{
Identity: "withowner-client@example.com",
Secret: password,
},
Metadata: mfclients.Metadata{},
Status: mfclients.EnabledStatus,
},
err: nil,
},
{
desc: "add client with duplicate client identity",
client: mfclients.Client{
ID: testsutil.GenerateUUID(t, idProvider),
Name: clientName,
Credentials: mfclients.Credentials{
Identity: clientIdentity,
Secret: password,
},
Metadata: mfclients.Metadata{},
Status: mfclients.EnabledStatus,
},
err: errors.ErrConflict,
},
{
desc: "add client with invalid client id",
client: mfclients.Client{
ID: invalidName,
Name: clientName,
Credentials: mfclients.Credentials{
Identity: "invalidid-client@example.com",
Secret: password,
},
Metadata: mfclients.Metadata{},
Status: mfclients.EnabledStatus,
},
err: errors.ErrMalformedEntity,
},
{
desc: "add client with invalid client name",
client: mfclients.Client{
ID: testsutil.GenerateUUID(t, idProvider),
Name: invalidName,
Credentials: mfclients.Credentials{
Identity: "invalidname-client@example.com",
Secret: password,
},
Metadata: mfclients.Metadata{},
Status: mfclients.EnabledStatus,
},
err: errors.ErrMalformedEntity,
},
{
desc: "add client with invalid client owner",
client: mfclients.Client{
ID: testsutil.GenerateUUID(t, idProvider),
Owner: invalidName,
Credentials: mfclients.Credentials{
Identity: "invalidowner-client@example.com",
Secret: password,
},
Metadata: mfclients.Metadata{},
Status: mfclients.EnabledStatus,
},
err: errors.ErrMalformedEntity,
},
{
desc: "add client with invalid client identity",
client: mfclients.Client{
ID: testsutil.GenerateUUID(t, idProvider),
Name: clientName,
Credentials: mfclients.Credentials{
Identity: invalidName,
Secret: password,
},
Metadata: mfclients.Metadata{},
Status: mfclients.EnabledStatus,
},
err: errors.ErrMalformedEntity,
},
{
desc: "add client with a missing client identity",
client: mfclients.Client{
ID: testsutil.GenerateUUID(t, idProvider),
Credentials: mfclients.Credentials{
Identity: "",
Secret: password,
},
Metadata: mfclients.Metadata{},
},
err: nil,
},
{
desc: "add client with a missing client secret",
client: mfclients.Client{
ID: testsutil.GenerateUUID(t, idProvider),
Credentials: mfclients.Credentials{
Identity: "missing-client-secret@example.com",
Secret: "",
},
Metadata: mfclients.Metadata{},
},
err: nil,
},
}
for _, tc := range cases {
rClient, err := repo.Save(context.Background(), tc.client)
assert.True(t, errors.Contains(err, tc.err), fmt.Sprintf("%s: expected %s got %s\n", tc.desc, tc.err, err))
if err == nil {
rClient.Credentials.Secret = tc.client.Credentials.Secret
assert.Equal(t, tc.client, rClient, fmt.Sprintf("%s: expected %v got %v\n", tc.desc, tc.client, rClient))
}
}
}