Script di test

Dopo aver impostato il nostro ambiente di sviluppo su Windows, macOS o Ubuntu ed aver creato un progetto su Google Cloud andiamo finalmente ad eseguire uno script di test per verificare la correttezza della nostra configurazione.

1. Per prima cosa avviamo VS Code e apriamo la cartella “venv” precedentemente creata tramite il menù “File->Apri Cartella” o i tasti Ctrl + o (Cmd + o per macOS). Assicurarsi che nella cartella “venv” sia presente il file credentials.json scaricato e rinominato durante la creazione del progetto su Google Cloud. Se non è presente, è possibile scaricarlo nuovamente entrando in Google Cloud Console e seguendo queste istruzioni.

2. Se il terminale non è visibile, aprirlo tramite il menù “Terminale->Nuovo Terminale”. Una volta aperto digitare il seguente comando per attivare l’ambiente virtuale:

su Windows

Scripts\activate

su macOS e Ubuntu

source bin/activate

La scritta (venv) ad inizio riga sta a significare che abbiamo attivato l’ambiente virtuale.

3. Ora creiamo un nuovo file “test.py” tramite la consueta icona vicino alla scritta VENV in alto a sinistra.

4. Portiamoci su questa pagina e scorriamo fino al punto “Step 2: Configure the sample”. Troveremo uno script di esempio su un box con sfondo grigio. Cliccare sull’icona in altro alla destra del box formata da due fogli sovrapposti per copiare il contenuto dello script e incollarlo nel file “test.py” precedentemente creato in VS Code.

5. Portiamoci sul terminale e digitiamo questo comando:

su Windows

python test.py

su macOS e Ubuntu

python3 test.py

6. Si aprirà automaticamente il nostro browser web. Scegliere il nostro account di amministratore e, se richiesto, inserire successivamente la password

7. Nella schermata successiva, cliccare su “Consenti”

8. Chiudere la finestra del browser e tornare su VS Code. Sul terminale dovrebbero comparire gli indirizzi email e i nomi dei primi 10 utenti in ordine alfabetico presenti nella vostra piattaforma Google Workspace: significa che la configurazione è corretta.

Avrete forse notato che è comparso un nuovo file “token.json” nella cartella “venv.” Tale file memorizza i dati di accesso e i permessi accordati di lettura/modifica dei dati e fa in modo che si possa rilanciare lo script senza dover nuovamente autorizzare l’esecuzione via browser. Per verificarlo lanciate di nuovo da terminale il comando python test.py (o python3 test.py sui sistemi non Windows) e noterete che otterrete immediatamente l’elenco dei primi 10 account, senza alcuna richiesta di permesso.

Se però vengono modificati gli scopes dello script è necessario eliminare il file “token.json”, il quale verrà rigenerato con una nuova richiesta di permesso via browser, perché la modifica degli scopes altera i permessi di lettura/scrittura. All’interno di una API, gli scopes rappresentano infatti gli ambiti nei quali una applicazione è autorizzata ad agire. Proviamo per esempio ad aggiungere lo scope https://www.googleapis.com/auth/admin.directory.group.member.readonly al nostro script andando ad aggiungerlo alla linea 12 del nostro script, come in figura:

Eliminiamo il file “token.json” selezionandolo con il tasto destro e scegliendo “Elimina”, successivamente rilanciamo lo script da terminale con il consueto comando python test.py (o python3 test.py sui sistemi non Windows). Si aprirà nuovamente il browser: scegliamo l’account admin, digitiamo la password se richiesto e notiamo che la pagina di autorizzazione è cambiata, infatti ora è comparsa la scritta “Visualizzare le iscrizioni dei gruppi nel dominio”

Questo perché abbiamo aggiunto uno scope che permette la lettura dati dei membri dei gruppi appartenenti al dominio, per cui da questo momento in poi il nostro script è autorizzato, ad esempio, ad elencare gli indirizzi email dei membri dei gruppi, ma non a modificarli perché è “readonly”, cioè sola lettura: se tentassimo una modifica riceveremmo un messaggio di errore del tipo "Request had insufficient authentication scopes". Una spiegazione dettagliata del funzionamento dell’interazione API/Scopes/Token si trova qui. L’elenco degli scopes relativi alla sola API Admin SDK si trova questa pagina.